AWS CDK를 사용하여 람다 카나리아 배포를 위한 CI/CD 파이프라인 구축
(Building CI/CD pipelines for lambda canary deployments using AWS CDK)
https://workshops.aws/card/Building CI%2FCD pipelines for lambda canary deployments using AWS CDK
<aside>
💡 이 워크숍에서는 AWS Lambda와 AWS API Gateway를 사용하여 canary 배포를 통해 서버리스 REST API를 만드는 방법(파이썬 사용)을 처음부터 AWS CDK 프로젝트를 만드는 방법을 알아봅니다. 또한, 몇 가지 고품질 도구를 사용하여 CI/CD 파이프라인을 구현하여 AWS CDK 애플리케이션을 배포하는 방법도 알아봅니다.
</aside>
(예시) To-Do List 서버리스 사이트 만들기
- API 구축 및 배포
-
프로젝트 개요
- 이 워크숍에서는 AWS Lambda와 AWS API Gateway를 사용하여 간단한 서버리스 To-Do 리스트 REST API를 구축하고, 이를 AWS CDK를 통해 처음부터 배포하는 방법을 알아봅니다. 또한, Canary 배포 전략을 사용하여 새로운 기능을 점진적으로 릴리스하고, 고품질 CI/CD 파이프라인을 구현하여 애플리케이션의 지속적인 배포를 자동화하는 방법을 다룹니다.
-
구성요소
- AWS Lambda: 파이썬으로 작성된 서버리스 함수. To-Do 항목을 생성, 조회, 수정, 삭제하는 API 핸들러 역할을 합니다.
- AWS API Gateway: Lambda 함수를 호출하는 REST API 엔드포인트를 제공합니다.
- Amazon DynamoDB: To-Do 항목을 저장하는 NoSQL 데이터베이스로 사용됩니다.
- MongoDB로 변경 가능
- AWS 환경에서 MongoDB 사용하기
- AWS CDK: 인프라를 코드로 정의하여 자동화된 배포를 가능하게 합니다.
- CI/CD 파이프라인: 코드 변경 사항을 자동으로 테스트하고 배포하는 파이프라인입니다. AWS CodePipeline, CodeBuild, CodeDeploy 등을 사용할 수 있습니다.
-
세부 단계
- AWS CDK 프로젝트 설정:
- AWS CDK를 사용하여 인프라를 정의합니다. CDK 앱을 생성하고 필요한 리소스(예: Lambda 함수, API Gateway, DynamoDB 테이블)를 코드로 정의합니다.
- Lambda 함수 개발:
- 파이썬을 사용하여 To-Do 리스트 API의 비즈니스 로직을 작성합니다. 예를 들어,
create_item
, get_item
, update_item
, delete_item
함수들을 작성합니다.
- 이 Lambda 함수들은 API Gateway에서 호출되며, DynamoDB와 상호 작용하여 데이터를 처리합니다.
- API Gateway 설정:
- Lambda 함수와 연결된 REST API 엔드포인트를 정의합니다. HTTP 메서드(GET, POST, PUT, DELETE)에 따라 Lambda 함수가 호출되도록 설정합니다.
- Canary 배포 설정:
- 새로운 Lambda 함수 버전이 배포될 때, 트래픽의 일부만 새로운 버전으로 보내는 Canary 배포를 설정하여, 새로운 버전의 안정성을 테스트합니다.
- CI/CD 파이프라인 구축:
- Git을 사용하여 코드 리포지토리를 관리합니다.
- AWS CodePipeline을 사용하여 코드가 변경될 때마다 자동으로 빌드 및 배포가 이루어지도록 파이프라인을 설정합니다. CodeBuild를 사용하여 코드를 빌드하고 테스트하며, CodeDeploy를 사용하여 Lambda 함수의 새 버전을 배포합니다.
-
운영 및 모니터링
- Amazon CloudWatch를 사용하여 Lambda 함수의 로그를 모니터링하고 성능을 추적합니다.
- AWS X-Ray를 사용하여 애플리케이션의 엔드투엔드 트레이싱을 설정하여 문제를 진단하고 성능을 최적화합니다.
-
결론
이 프로젝트를 통해 서버리스 아키텍처의 장점을 활용하여 스케일링과 비용을 효율적으로 관리할 수 있는 REST API를 구축할 수 있습니다. AWS CDK와 CI/CD 파이프라인을 통해 코드 변경 사항을 빠르고 안전하게 배포할 수 있으며, Canary 배포를 통해 새 기능을 점진적으로 릴리스하고 리스크를 최소화할 수 있습니다.