Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
Code deploy의 ECS로 배포는 블루/그린 배포 방식으로 업데이트를 진행해보자.
블루 그린은 한번에 모든 트래픽을 새로운 서버자원으로 이동시키는 무중단 배포 방식이다.
이때 하나의 로드밸런서에서 두 개의 리스너와 대상 그룹을 요구한다.
그 이유를 배포 방식을 통해 알아보자.
배포 원리
배포 이벤트의 순서는 아래와 같다.
install전에는 서비스 중인 Production Listener의 대상 그룹을 Test Listener도 가리키고 있다.
여기서 install 이벤트가 실행되면, 다른 Target group에 업데이트된 task들이 배포된다.
위의 이벤트 소요시간을 확인해보면, 컨테이너를 올리는 작업 및 상태 체크 때문에 다른 이벤트보다 시간이 많이 소요된다.
AllowTestTraffic 이벤트에서는 Test linstener가 새로운 대상 그룹을 가리키게 된다.
AllowTraffic에서는 Production Listener가 새로운 대상 그룹으로 트래픽을 보내게 되면서, 실제 서비스가 진행된다.
time out이 지나거나 이후 기존의 Task를 지우는 작업을 승인하면 최종적으로 아래와 같이 배포가 완료된다.
실제로 배포를 확인해보면 기존의 task들을 종료시킬지 승인해줄 수 있다.
이때 배포 중지하고 롤백과 을 선택할 수도 있다.
다시 업데이트 내역의 배포를 진행하면 역으로 대상 그룹 1에서 새로운 task가 생성되는 방식으로 진행된다.
이때 각각의 이벤트에 람다 함수를 연결하여 알림을 전송하는 등의 커스텀도 할 수 있다.
장점
배포가 완료되어 기존의 task를 지우기까지는 바로 롤백이 가능하므로, 새로운 컨테이너에 문제 발생 시 즉각적인 대처가 가능하며 가장 빠르게 무중단 배포를 할 수 있는 방법이다.
특히 온프레미스 방식에서는 가용할 수 있는 서버 자원의 한계 때문에 블루/그린 배포가 어려웠지만, 클라우드에서는 온디멘드로 자원을 사용할 수 있기 때문에 적용가능한 업데이트 방식이기도 하다.
이외의 배포 전략은 아래를 참조하자.
참조
https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps-ecs.html
'Cloud > AWS' 카테고리의 다른 글
VPC Endpoint로 ECR 연결하기 (Docker hub와 S3의 관계) (0) | 2024.07.01 |
---|---|
[EC2 Ubuntu] AWS PHP SDK 세팅 및 DynamoDB 테스트 (0) | 2024.05.20 |
AWS Elastic cache Memcached의 노드간 복제 여부 확인 (0) | 2024.05.07 |
[AWS] Private subnet 자원 접근 시, ELB과 NAT GateWay의 Flow 확인하기 (0) | 2024.04.19 |
AWS CodeDeploy로 WordPress 배포하기 (0) | 2024.04.04 |