BLOG
[re:Invent 2019] Optimizing your serverless applications
작성일: 2019-12-06
* 세션명 : Optimizing your serverless applications
* 일자 : 2019/12/05 15:15~16:15
* 장소 : Venetian, Level 2, Venetian Theatre
이 세션에서는 서버리스를 사용하면서 안전하고 high-scale, 고성능 서버를 사용 응용 프로그램을 빌드 하는 데 사용할 수 있는 모범 Architecture, 최적화, 편리한 치트 코드를 논하고자 합니다.
- Your Function
- 람다의 특성을 이해하고 Pre-handler를 전략적으로 사용합니다.
- AWS Systems Manager Parameter Store 를 사용해서 공통으로 사용되는 ENV를 공유합니다.
- Lambda Layer를 이용하여 공통코드를 라이브러리로 관리하면 중복 코드를 제거할 수 있습니다.
- Amazon RDS Proxy는 Lambda를 사용하여 관계형 데이터베이스 사용을 단순화합니다.
- 워크플로는 일련의 단계로 이루어져 있으며, 한 단계의 출력이 다음 단계의 입력이 됩니다. Step Functions를 사용하면 애플리케이션 개발을 훨씬 쉽고 직관적으로 수행할 수 있습니다.
- Lambda Event Destinations은 비동기 워크플로우를 단순화하고 개선합니다.
- Execution environment:
- 더 많은 메모리는 더 많은 CPU와 I/O를 필요로 합니다. (비용이 올라감)
- AWS X-Ray를 통해 부하를 프로파일링 하고 최적화 합니다.
- 8GB 메모리를 할당하면 2 core를 제공하지만 반드시 필요하지 않을 수 있습니다.
- 실행하려는 기능에 꼭 필요한 코드만 배포하도록 합니다.
- 비동기식을 도입하여 요청에 대한 재요청과정을 줄이면 필요한 리소스를 줄일 수 있습니다.
- Queues, topics, streams, event buses 들을 이용할 때 그 것들의 특성을 이해합니다.
Lambda service: Provisioned Concurrency를 사용하면 Lambda Function의 일관성 및 전체 실행 지연 시간이 향상됩니다.
이번 세션을 통해 Lambda를 S3, SQS등의 이벤트 처리용 정도로 밖에 생각을 안했는데 Lambda를 활용한 다양한 Workload를 볼 수 있어서 좋았습니다. 또한 서버리스 최적화 주제의 세션에 콘서트장을 방불케하는 큰 세션장이 꽉찬 모습을 보고 외국의 개발자들과 국내 개발자들이 바라보는 Lambda의 인식이 크게다르다는 것을 느꼈습니다.