개발을 파헤치다(101)
-
[AWS Event Bridge] AWS에서 간단하게 Scheduler 사용하는 방법
서비스의 백엔드를 개발할 때 흔하게 필요한 기능이 바로 스케줄링인데요. 주기적으로 로직을 수행한다거나 푸시 예약 발송하는 작업이라던가 이런 기능들을 구현할 때 스케줄러를 사용하게 됩니다. 작은 서비스라면 프레임워크 레벨에서 라이브러리 형태로 쓸 수도 있구요. 이런 주기적인 로직 수행 작업이 서비스의 주요 기능이라 중요한 경우에는 Message Queue를 사용하기도 합니다. AWS Serverless Application Model(이하 SAM)로 서버리스 개발을 했을 때 아주 효과적으로 사용할 수 있는 스케줄러가 있습니다. 이번에 소개할 Event Bridge Scheduler죠. 설정한 일정(Cron기반)이나 특정 주기로 자동으로 로직을 실행할 수 있습니다. 다양한 AWS 서비스들과 연동이 가능하기 ..
2023.07.03 -
[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 -
[AWS] SAM(Serverless Application Model)에 새로운 Lambda Layer 추가하는 방법 (feat. 초보자도 쌉가능)
Lambda Layer는 Lambda 함수에서 사용하는 라이브러리들을 더 손쉽게 관리할 수 있게 해주는 도구인데요. Lambda 함수를 실제 서비스에 사용하다 보면 다양한 패키지들이 얽히고설키게 됩니다. 당연히 함수의 크기가 커지게 되고 관리 또한 불편합니다. 또, 어떤 패키지들은 런타임 환경을 다르게해야 돌아가는 경우도 있죠. 이런 불편함을 해결해 줄 수 있는 것이 바로 Lambda Layer입니다. Layer라는 단어에서 느낄 수 있듯이, 여러 패키지가 합쳐진 Lambda 함수를 계층으로 나누는 것인데요. 즉, 여러 패키지들을 계층으로 나누어 따로 관리할 수 있는 것입니다. 이렇게 하면 먼저 Lambda 함수의 크기가 줄어들게 됩니다. 필요한 패키지들을 Layer로 만들어서 관리하기 때문에 적용 여부..
2023.05.12 -
[AWS DynamoDB] DynamoDB에서 Scan과 Query의 제대로 알고쓰기 (엄청난 성능차이...!)
데이터 조회는 DB를 사용할 때 아주 기본적인 기능이라고 할 수 있습니다. 어떤 방식으로 데이터를 조회하느냐에 따라 성능이 달라지고 그만큼 서비스 질이 좌우되기도 하죠. 당연히 서비스 입장에서는 가능한 한 빨리 원하는 데이터를 찾아서 유저에게 보여주는 것이 좋습니다. DynamoDB는 I/O 성능과 확장성에 이점이 있는 데이터베이스인데요. 이것도 특성을 제대로 알고 사용한다는 전제하에 의미가 있는 말입니다. Dynamo에서는 데이터 조회를 위해 두 가지 방식을 제공합니다. 바로 Scan과 Query입니다. Scan과 Query 모두 item collection을 가져오기 위한 기능이지만 동작 방식은 상당히 다릅니다. 제대로 알 고 사용하느냐 마느냐에 따라 매우 큰 성능차이가 발생할 수 있습니다. 위 그림..
2023.05.11 -
[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 -
[AWS LightSail] LightSail에 5분만에 SSL 인증서 적용하는 방법 (이거보다 쉬운거 없음!!!)
Lightsail은 EC2에 비해 더 경량화된 서버 호스팅을 제공하는데요. 간단한 웹 서비스나, Wordpress를 서비스할 수 있도록 다양한 패키지도 제공합니다. EC2가 전문가용이라면 Lightsail은 일반용이라고 생각하면 편합니다. 웹사이트를 Lightsail을 통해 호스팅 하는 경우 SSL 인증서 적용을 해야 하는데요. 원래라면 인증서 구매부터 적용까지 좀 복잡한 과정을 거쳐야 하지만 여기서 제공하는 Let’s encrypt를 사용하면 5분 만에 SSL 인증서를 적용할 수 있습니다. Route53 도메인 설정 Let’s encrypt로 인증서를 설치하고 적용하려면 먼저 기본 세팅이 되어있어야합니다. AWS의 Route53에 해당 도메인 호스팅 영역이 설정이 되어있어야 합니다. 그리고 A 레코드를..
2023.05.04