Deployment
1 SAM 서버리스 애플리케이션 배포 가이드
- AWS Serverless Application Model(SAM)과 AWS CodeDeploy를 통합하여 서버리스 애플리케이션을 안전하고 효율적으로 배포하는 방법을 알아봅니다.
- 이 가이드는 SAM과 CodeDeploy의 기본 개념부터 실제 배포 프로세스까지 자세히 설명합니다.
2 SAM과 CodeDeploy 통합의 이점
- SAM은 서버리스 애플리케이션을 위한 프레임워크로, Lambda 함수 배포 시 CodeDeploy를 기본적으로 사용합니다.
- 이 통합은 다음과 같은 이점을 제공합니다:
- 트래픽 쉬프팅: 새 버전으로 점진적으로 트래픽을 이동시킬 수 있습니다.
- 검증 훅: 배포 전후에 검증 Lambda 함수를 실행할 수 있습니다.
- 자동 롤백: CloudWatch 경보를 통해 문제 발생 시 자동으로 이전 버전으로 롤백할 수 있습니다.
3 SAM 템플릿 구성
- SAM 템플릿에서 Lambda 함수 배포를 위한 주요 설정은 다음과 같습니다:
SAM 템플릿 예시
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs12.x
CodeUri: s3://bucket/code.zip
AutoPublishAlias: live
DeploymentPreference:
Type: Canary10Percent10Minutes
Alarms:
- !Ref AliasErrorMetricGreaterThanZeroAlarm
- !Ref LatestVersionErrorMetricGreaterThanZeroAlarm
Hooks:
PreTraffic: !Ref PreTrafficLambdaFunction
PostTraffic: !Ref PostTrafficLambdaFunction
AutoPublishAlias: 새 코드가 감지되면 자동으로 새 버전을 생성하고 지정된 별칭(여기서는 'live')을 업데이트합니다.DeploymentPreference: 배포 전략을 지정합니다. 여기서는 10분 동안 10%의 트래픽을 새 버전으로 전환하는 Canary 배포를 사용합니다.Alarms: 롤백을 트리거할 수 있는 CloudWatch 경보를 지정합니다.Hooks: 트래픽 쉬프팅 전후에 실행할 Lambda 함수를 지정합니다.
4 배포 프로세스 상세 설명
4.1 배포 트리거
- 새로운 코드가 리포지토리에 푸시되면 CI/CD 파이프라인(예: AWS CodePipeline)이 트리거됩니다.
- 파이프라인은 SAM 템플릿을 사용하여 새로운 배포를 시작합니다.
4.2 새 버전 생성
- CodeDeploy는 새로운 Lambda 함수 버전을 생성합니다.
AutoPublishAlias설정에 따라 지정된 별칭이 새 버전을 가리키도록 업데이트됩니다.
4.3 사전 트래픽 검증
- 트래픽 쉬프팅이 시작되기 전에
PreTraffic후크로 지정된 Lambda 함수가 실행됩니다. - 이 함수는 새 버전의 기본적인 기능을 검증합니다.
- 검증에 실패하면 배포가 중단되고 롤백됩니다.