CICD를 도와주는 AWS의 Deployment 서비스로, CodeDeploy Agent가 서비스 배포를 도와줍니다.
- EC2, ASG, ECS & Lambda와의 통합이 가능합니다.
각각의 대상에 대한 CodeDeploy의 동작을 알아보도록 하겠습니다.
CodeDeploy to EC2
- 어떻게 배포할 것인지 appspec.yml 파일과 배포 전략을 통해 정의할 수 있습니다.
- EC2 플릿에 인플레이스 업데이트를 진행합니다. (새로운 인스턴스를 생성하지 않음)
- 각각의 배포 phase에서 hooks를 통해 배포가 성공적이었는지 알 수 있습니다.
CodeDeploy to ASG
Auto Scaling Group으로의 CodeDeploy는 두가지 전략을 선택할 수 있습니다.
- 인플레이스 업데이트
- 실행 중인 EC2 인스턴스를 업데이트합니다. (위의 CodeDeploy to EC2와 비슷함)
- CodeDeploy to EC2와 다른 점: ASG로 인해 생긴 새로운 인스턴스도 CodeDeploy에 의해 배포 적용됩니다.
- 블루/그린 업데이트
- 세팅이 동일한 새로운 ASG을 생성합니다.
- 오래된 인스턴스를 얼마나 오랫동안 유지할 것인지 설정해야 합니다.
- 반드시 ELB를 사용해야 합니다.
CodeDeploy to AWS Lambda
- Traffic Shifting 기능을 제공합니다.
- Pre / Post traffic hook lambda function를 통해 배포가 성공적이었는지 알 수 있습니다.
- CloudWatch Alarm을 통해 손쉽게 롤백을 구성할 수 있습니다.
- SAM 프레임워크도 내부적으로 CodeDeploy를 사용합니다.
- 동작: (블루그린과 흡사)
- Pre-Traffic Hook Lambda Function 실행
- v2 배포 후 Traffic shifting with alias
- Shifting이 완료된 후 Post-Traffic Hook Lambda Function 실행하여 테스트 실행
- 정상적인 것이 확인되면 v1 제거
CodeDeploy to ECS
- ECS와 Fargate에 대하여 Blue/Green 배포를 지원합니다.
- 설정은 ECS의 서비스 정의에 포함됩니다. 따라서 현재로서는 CodeDeploy 콘솔에서 이를 구성하는 것이 아니라, ECS 서비스 정의에서 구성할 수 있습니다.
- 새로운 task set을 생성하고 트래픽을 새로운 task set으로 re-route 하는 방식입니다.
- 서비스가 특정 시간동안 안정적이라면 기존 버전을 삭제합니다.
- 오래된 인스턴스를 얼마나 오랫동안 유지할 것인지 설정해야 합니다.
- 카나리 배포를 지원합니다.
- 예: Canary 10Percent5Minutes - 10퍼센트의 task가 5분간 안정적이면 모든 버전을 업데이트
'AWS' 카테고리의 다른 글
[AWS CloudWatch] CloudWatch Agent와 stress를 통해 스왑 메모리 사용량 지표 추출하기 (0) | 2024.07.09 |
---|---|
[AWS Network] Hands-on: Site-to-Site VPN Connection (1) | 2024.07.02 |
[AWS IAM] IAM Basics (0) | 2024.06.21 |
[AWS Network] Route 53 Resolver & DHCP option set (0) | 2024.05.19 |
[AWS Network] Transitive and non-transitive scenarios (0) | 2024.04.25 |