일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- CentOS
- Clean Code
- docker
- 우테캠
- gcp
- Google Cloud Platform
- devops
- direnv
- kubernetes
- interconnect
- 자격증
- 보안 규칙
- Python
- 후기
- cicd
- IAM
- Java
- vpc peering
- Terraform Cloud
- Uptime Check
- VAGRANT
- pub/sub
- cloud
- vm
- MIG
- AWS
- github
- terraform
- cloud armor
- cloud function
- Today
- Total
EMD Blog
Blue/Green 배포의 동작방식을 알아보자 본문
CodeDeploy와 ELB를 활용해 Blue/Green 배포 중 헷갈리는 부분이 있었다. 기존에 알고있던 Blue/Green 배포 방식은 아래와 같았다.
부끄러운 일이지만 여태까지는 Blue/Green 배포가 이런 방식으로 진행되는 줄 알았다. 즉, AZ 단위로 하나씩 배포되는 방식인줄 알고 있었던 것이다. 더 부끄러운 것은 위 동작 방식은 동작 방식 그 자체도 Blue/Green 배포 방식이 아니다. 이렇게까지 잘못 이해하고 있었던 이유는 처음부터 배포단위를 착각했었던 이유가 제일 컸다. 그럼 AWS를 사용해 Blue/Green 배포에 대해 자세하게 살펴보자.
만약에 Blue/Green 배포가 무엇인지 모른다면 아래 글을 가볍게 읽고오자.
https://www.redhat.com/ko/topics/devops/what-is-blue-green-deployment
Blue-Green 배포란?
Blue Green 배포는 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델입니다. 이때 두
www.redhat.com
여기서 설명하는 환경은 ECS(Fargate) + ELB(NLB) + CodeDeploy다. 서버리스 환경인데 배포방식에는 차이가 없으니 문제는 없을 듯 하다. 그럼 먼저 생성되어 있는 전체 구성을 보도록 하자.
전체 구성을 간략하게 축약해보았다.(하나의 클러스터에 하나의 서비스만 만들어 두었다고 가정한다.) 여기서 중요한 것은 ECS에서 서비스 생성 시 배포 방식을 선택할 수 있는데 Blue/Green 배포 시 로드밸런서의 Target Group을 두개 선택해야하는 것이다. 즉, Blue/Green 배포는 Target Group단위로 배포 된다.
위 구성을 보면 8001 Listener에 Target Group 1이 연결되어 있고 Target Group2는 생성은 되어 있으나 사용하지 않는 상태로 유지되고 있는 것을 볼 수 있다. Target Group 2는 오직 Blue/Green 배포 시에만 사용된다. 그럼 이 상태에서 Blue/Green 배포를 해보자.
먼저 배포 전 상태를 보자.
로드밸런서 listener(8001:8001)에 todsolution-account-p가 연결되어있다.
그리고 todsolution 클러스터 내 account 서비스에는 2개의 작업이 실행 중이다. 그럼 배포를 시작해보자.
배포를 시작하면 위 사진처럼 된다. 기존에 listener와 연결되어 있던 대상 그룹에 그대로 2개의 작업이 실행 중이며 트래픽도 100% 가고 있다. 이 시점에서는 새로운 배포버전이 대기중인 대상 그룹(위에서 봤던 사용하지 않는 상태로 유지되던 대상그룹)으로 묶여 배포된다.
새로운 버전이 배포되면 해당 버전으로 트래픽이 전부 옮겨진다. (Fargate에서는 한번에 100% 트래픽을 전부 옮기는 것만 지원)
아직 기존 대상 그룹내 작업들이 실행 중이기 때문에 작업이 총 4개가 되어있는 모습이다. 그럼 배포가 종료된 후의 모습을 보자.
작업이 2개로 줄어들었고 로드밸런서(8001:9001)에 연결된 대상 그룹이 todsolution-tg-account-t로 변경된 것을 볼 수 있다.
위의 모습을 보기 쉽게 그리면 아래처럼 된다.
결론은 대상 그룹을 한 번씩 번갈아 사용하면서 배포하게 된다.
'Public Cloud > AWS' 카테고리의 다른 글
Bastion Host를 통한 RDS SQL Server 접속 (0) | 2022.10.22 |
---|---|
AWS Session Manager를 통한 RDP 연결 (0) | 2022.09.07 |
PC에 AWS Account 설정 (0) | 2022.09.03 |
AWS Certified Solutions Architect - Associate (SAA) 후기 (0) | 2021.11.02 |
AWS Naming 모범사례를 알아보자 (0) | 2021.04.22 |