스터디 2회차 시작까지 롤링, 블루/그린 배포 전략에 대해 선택해 가야 했다.
카나리 배포 전략은 스터디 시 조금 어렵다고 판단을 해 블루 그린이나 롤링 배포 전략 둘 중에 하나를 선택하기로 했다 🤔
정리부터 해보자!
사용중인 환경에 새로운 버전의 변경 사항이 포함된 어플리케이션만 반영하는 방식이다.
CodeDeploy가 이런 방법을 사용하는 데 배포 그룹의 인스턴스를 일시 정지 한 뒤 최신 상태로 반영이 되면 새 버전의 앱을 실행하는 방식이다.
In-Place Deployments의 aws 인플레이스 배포 전략을 보면 인프로 구성 요소를 교체하지 않고 에플리케이션 버전을 업데이트하는 전략이라고 설명하고 있다.
각 컴퓨팅 리소스에서 이전 버전을 중지하고 최신 애플리케이션을 설치한 후 새 애플리케이션을 시작하고 검증하는 절차를 거친다!
이런 역할을 해주는 것이 CodeDeploy Agent이다.
CodeDeploy Agent 소프트웨어는 CodeDeploy에 배포할 수 있도록 도와 주는 소프트웨어이다.
CodeDeploy Agent를 인스턴스에 설치하고 구성하면 설치되 인스턴스를 Code Deploy에 활용할 수 있게 된다!
CodeDeploy는 블루/그린 배포 방식도 지원한다
사내에서 Code Deploy In-Place를 사용하고 있어 함께 정리해 보았다. :)
롤링 배포는 기본 인프라를 새로 배포할 버전으로 대체하는 배포 전략이다.
10대의 서버가 있고 모두 버전1을 실행하고 있을 때 롤링 배포를 시작하면 코드 버전 2를 한 서버씩 배포하며 적용해 나가는 것이다.
⛔️ 점진적으로 배포되기 때문에, 새로운 버전이 배포 되는 시점 동안 구버전과 신버전이 동시에 서비스되게 된다.
즉, 새로운 버전은 이전 버전과 호환 되어야 한다!
⛔️ 서버 수의 제약이 있을 경우 유용할 수 있지만, 배포 중인 인스턴스의 수가 줄어들기 때문에 가용성 측면을 고려해야 한다.

N개의 서버를 동시에 롤링하기
한 번에 하나의 서버만 배포하는 것이 아니라N개의 서버를 동시에 변경할 수 있다.
이러면 전체 배포를더 빠르게 완료할 수 있지만,가용성에 영향을 미칠 수 있기에 적절한 N을 정하는 것이 주요하다!
블루 그린 배포에서는 블루 서버와 그린 서버 두 개의 서버가 유지된다.
배포 되는 시점에는 블루 서버만 요청을 처리하게 된다. 이 때 그린 서버는 프라이빗 네트워크 에서한 액세스 할 수 있도록 되어 있고, 변경 사항이 그린 서버에 반영이 되면 프라이빗 네트워크를 통해 테스트 한 후 변경 사항이 제대로 작동하는 지 확인 하게 된다. 확인을 마친 후 그린 서버를 블루 서버로 대체하는 방식이다.

History
Dan North와 Jez Humble이 2005년 쯤에 오라클 웹 로직 서버를 실행하던 중 테스트 환경과 운영 환경 간의 차이를 발견했다!
안전한 배포를 위해 새로운 어플리케이션 버전을 라이브 서버와 함께 배포하기로 결정하게 되었다.
구 버전과 신 버전을 함께 띄어 놓음으로서 철저한 테스트와 문제 발생 시 쉽게 롤백할 수 있다는 장점을 확인하게 되었다!
이 떄 이름을 A, B와 같이 두려고 했지만, 계층 구조로 인식 되는 것을 피하기 위해파란색, 녹색, 주황색, 노란색과 같은 색을 사용하기로 했다
하지만! 구 버전, 신 버전 두 개의 색상만 필요했기에 Blue, Green만 사용하기로 했다고 한다. 😁
2010에 발간된 Countinous Delivery 책을 출판하며 일반적인 용어가 되었다고 한다!
출처
✅ Blue, Green은 그저 색상일 뿐이다.
구 <- Blue 신 <- Green이 될 수도 있고
구 <- Green 신 <- Blue로 명명 될 수도 있다 :)
| 롤링 배포 전략 | 블루 그린 배포 전략 | |
|---|---|---|
| 장점 | 업데이트 중간에 상태 확인을 지속적으로 할 수 있다. | 즉각 배포 |
| 서버 자원의 효율성 | 안정성 | |
| 단점 | 속도 | 추가적인 인프라 비용 |
| 호환성(두 버전이 공존하는 시점 존재) | 데이터 베이스 관리(일시적으로 DB Connection 높아짐) | |
| 서비스 처리 용량(가용성 이슈) | 새로운 환경에 대한 추가적인 테스트 |