포트폴리오
개발일지
-
[AWS Event Bridge] AWS에서 간단하게 Scheduler 사용하는 방법
서비스의 백엔드를 개발할 때 흔하게 필요한 기능이 바로 스케줄링인데요. 주기적으로 로직을 수행한다거나 푸시 예약 발송하는 작업이라던가 이런 기능들을 구현할 때 스케줄러를 사용하게 됩니다. 작은 서비스라면 프레임워크 레벨에서 라이브러리 형태로 쓸 수도 있구요. 이런 주기적인 로직 수행 작업이 서비스의 주요 기능이라 중요한 경우에는 Message Queue를 사용하기도 합니다. AWS Serverless Application Model(이하 SAM)로 서버리스 개발을 했을 때 아주 효과적으로 사용할 수 있는 스케줄러가 있습니다. 이번에 소개할 Event Bridge Scheduler죠. 설정한 일정(Cron기반)이나 특정 주기로 자동으로 로직을 실행할 수 있습니다. 다양한 AWS 서비스들과 연동이 가능하기 ..
2023.07.03 17:12 -
[Python] Class Method와 Static Method 차이 쉽게 이해하기
class method와 static method는 상속에서 확실한 차이가 있습니다. 이 둘 모두 클래스에서 객체를 생성하지 않고 바로 접근하는 정적 메서드의 역할을 하는데요. 객체별로 달라지는 것이 아니기 때문에 흔히 유틸리티성 클래스를 만들 때 많이 사용합니다. 기본적인 사용은 아래와 같이 합니다. class Test: @staticmethod def add(x,y) : return x + y print Test.add(1,1) # 2 t = Test() print t.add(1,1) # 2 python에서는 다른 언어와는 다르게 정적 메서드임에도 불구하고 객체에서도 접근이 가능합니다. 이 부분을 유의해야합니다. class Test: @classmethod def add(cls, x, y) : ret..
2023.05.15 12:02 -
[AWS] SAM(Serverless Application Model)에 새로운 Lambda Layer 추가하는 방법 (feat. 초보자도 쌉가능)
Lambda Layer는 Lambda 함수에서 사용하는 라이브러리들을 더 손쉽게 관리할 수 있게 해주는 도구인데요. Lambda 함수를 실제 서비스에 사용하다 보면 다양한 패키지들이 얽히고설키게 됩니다. 당연히 함수의 크기가 커지게 되고 관리 또한 불편합니다. 또, 어떤 패키지들은 런타임 환경을 다르게해야 돌아가는 경우도 있죠. 이런 불편함을 해결해 줄 수 있는 것이 바로 Lambda Layer입니다. Layer라는 단어에서 느낄 수 있듯이, 여러 패키지가 합쳐진 Lambda 함수를 계층으로 나누는 것인데요. 즉, 여러 패키지들을 계층으로 나누어 따로 관리할 수 있는 것입니다. 이렇게 하면 먼저 Lambda 함수의 크기가 줄어들게 됩니다. 필요한 패키지들을 Layer로 만들어서 관리하기 때문에 적용 여부..
2023.05.12 18:13 -
[AWS DynamoDB] DynamoDB에서 Scan과 Query의 제대로 알고쓰기 (엄청난 성능차이...!)
데이터 조회는 DB를 사용할 때 아주 기본적인 기능이라고 할 수 있습니다. 어떤 방식으로 데이터를 조회하느냐에 따라 성능이 달라지고 그만큼 서비스 질이 좌우되기도 하죠. 당연히 서비스 입장에서는 가능한 한 빨리 원하는 데이터를 찾아서 유저에게 보여주는 것이 좋습니다. DynamoDB는 I/O 성능과 확장성에 이점이 있는 데이터베이스인데요. 이것도 특성을 제대로 알고 사용한다는 전제하에 의미가 있는 말입니다. Dynamo에서는 데이터 조회를 위해 두 가지 방식을 제공합니다. 바로 Scan과 Query입니다. Scan과 Query 모두 item collection을 가져오기 위한 기능이지만 동작 방식은 상당히 다릅니다. 제대로 알 고 사용하느냐 마느냐에 따라 매우 큰 성능차이가 발생할 수 있습니다. 위 그림..
2023.05.11 17:03 -
[AWS DynamoDB] PynamoDB 기본 사용법 정리(CRUD)
PynamoDB는 AWS의 DynamoDB를 Python에서 좀 더 쉽게 사용할 수 있도록 해주는 ORM 라이브러리입니다. PynamoDB를 통해서 table 생성을 비롯한 쿼리, 아이템 생성 등 기본적인 DB 데이터 조작을 할 수 있는데요. 이번에는 그 기본이 될 수 있는 item 생성 및 수정 삭제에 대해서 알아보도록 하겠습니다. Model 사용하기 PynamoDB를 사용해서 기본적인 CRUD(Create, Read, Update, Delete)를 하는 방법을 살펴보겠습니다. 먼저 테스트용 Model을 아래와 같이 생성합니다. from pynamodb.models import Model class TestModel(Model): class Meta: region = "ap-northeast-2" ta..
2023.05.08 11:02
IT 컬럼
-
4차 산업혁명의 시대, IT 역사를 되짚다
Key Points왜 지금 역사를 알아야 하는가?라이프 스타일을 바꾼 혁신의 주인공들을 만나다 왜 지금 역사를 알아야 하는가? 사실 역사라고 하면 굉장히 딱딱하고 어렵게 느껴지는 것이 사실입니다. 한국에서 자라고 교육받은 이들이라면 역사 시간에 외웠던 수 많은 사건들과 답을 할 수 없는 시험지의 오지선다 문제가 생각날 것이기 때문입니다. 주입식 교육을 받은 제가 보는 역사는 꽉 막힌 벽 같습니다. 바라보아도 정이 가지 않고, 딱딱해서 알고 싶지 않습니다. 나와는 거리가 먼 존재라는 생각이 듭니다. 하지만 역사는 사실 친숙한 존재입니다. 그럴 수 밖에 없습니다. 역사를 만드는 주인공이 다름 아닌 사람이기 떄문입니다. 사람이 존재하지 않았다면 역사는 존재하지 않았습니다. 사람이 모여 생활 양식이라는 것이 생..
2018.03.02 12:48 -
빅데이터와 인공지능 그리고 알파고
Key Point알파고는 왜 주목 받았나?알파고의 핵심, 딥러닝은 무엇인가?기존 기계학습과 딥러닝의 차이점은 무엇인가? 알파고는 왜 주목 받았나? 알파고는 지난 이세돌 9단과의 대국에서 최종 승리를 거둔 인공지능입니다. 알파고가 전 세계적으로 주목을 받은 데에는 “사람처럼 스스로 생각해서 학습을 한다”라는 뉘앙스가 들어가 있기 때문입니다. 과연 사람이 프로그래밍한대로 움직일 수 밖에 없던 컴퓨터가 그 벽을 넘어서 스스로 학습하고 인간을 넘어설 수 있을지 세간의 관심이 집중되었습니다. 알파고를 통해 그 가능성을 엿볼 수 있을 것이라고 사람들은 생각했습니다. 알파고가 지난 세기의 다른 인공지능형 프로그램과 비교되는 특징들이 다음과 같습니다. 알파고는 빅데이터를 통해 연산합니다.알파고는 신경망 구조로 작동합니..
2018.01.24 03:00 -
푸크시아(Fuchsia), 구글의 새로운 OS
Key PointFuchsia는 무엇인가?Fuchsia는 어떻게 구성되어있는가?구글이 Fuchsia를 내놓은 이유는? Fuchsia는 무엇인가? Fuchsia는 구글이 현재 개발중인 RTOS(Real-Time Operating System)입니다. 리눅스 커널 기반이 아닌 임베디드 시스템 용으로 고안된 마이크로 커널인 마젠타(이후 Zicron으로 바뀌었습니다)를 기반으로 만들어졌습니다. 기존 구글의 크롬 OS, 안드로이드 모두 리눅스 커널을 기반으로 만들어진 것과는 다르게 푸크시아는 자체 마이크로 커널인 Zicron을 기반으로 만들어졌습니다. 정말 조용하게 구글의 레파지토리에 등장한 Fuchsia. 구글이 새로운 OS를 만든 이유가 무엇일지 추측이 난무하고 있습니다. 스마트폰, 임베디드 시스템, IOT등..
2018.01.23 20:54