관련링크 : https://d1.awsstatic.com/whitepapers/AWS_Blue_Green_Deployments.pdf
빌드배포 환경의 범위를 결정하는 요소들
요 소 | 기 준 |
Application Architecture | Dependencies, loosely/Tightly Coupled |
Organization | Speed and Number of Iterations |
Risk and Complexity | Blast radius and impact of failed deployment |
Teams | Expertise of teams |
Process | Testing/QA, rollback capability |
Cost | Operating budgets, additional resources |
Blue/Green 배포 전략을 설계할때는 다음의 기술적 도구로 라우팅 할 수 있다
1. DNS : 특히 Blue/Green 배포 방식에서 핵심 도구역할을 한다. 아래는 Weight(가중치)를 주는 방식으로 커넥션을 점진적으로 옮겨가는 Case를 표현하였다.
2. LoadBalancer : LB에서도 Green 서비스로 라우팅 할 수 있다. 이때는 AutoScaler를 사용하여 점진적으로 Green 서버의 가중치를 늘릴 수 있다. 주의할 점은 Blue서버를 0상태로 만들지는 말고, RollBack을 대비하여 일정부분은 유지하는 것이 현명하다.
Blue/Green을 전환할때 데이터베이스는 어떻게 할 것인가?
위와 같이 RDS의 구조, 스키마 등의 변경사항이 없다면 Application만 전환되면 되지만, 구조형(RDS 포함)데이터베이스가 변경사항이 있을때는 Rollback을 고려하여 주의가 필요하다. 만약 S3이거나, No-SQL과 같은 비구조형이라면 쉽겠지만, 그게 아니라면 As-Is 데이터이던, To-Be 데이터이건 동기화가 필요하다.
가장 일반적인 방법은 Application과 Database를 Decoupling 하는 것이다.
- 어플리케이션 전환에 앞서 스키마를 변경한다. 이때 DB 업데이트는 Blue/Green 양쪽 어플리케이션 모두가 호환되게 변경해야 한다.
Blue/Green이 Recommand되지 않을때는 언제일까?
1. 데이터베이스의 디커플링이 너무 복잡하거나, 데이터공유가 불가능하거나 할때는 불가능하다.
2. 배포가이드가 정해져 있는 완제품형 솔루션을 적용한 경우에는 부적합하다.
'PaaS > CI CD' 카테고리의 다른 글
(Gitlab) Gitlab 도메인 설정 (0) | 2022.02.15 |
---|---|
(JAVA-Jenkins) Java SpringFrameWork Jenkins 파이프라인 With Nexacro (0) | 2022.01.24 |
CI와 CD는 무엇일까? (0) | 2021.12.21 |
(Jira-Jenkins) Jira를 통한 Jenkins 자동빌드 유발 (0) | 2021.11.11 |
(Git) Master가 아닌 다른 Branch로 Pull, Push (0) | 2021.10.08 |