블루-그린 배포(Blue-Green Deployment)는 무중단 배포를 위한 기법 중 하나로, 두 개의 동일한 환경을 사용하여 배포의 리스크를 최소화하고, 빠르게 롤백할 수 있는 구조를 제공합니다. 이 방법은 특히 중단 없이 새로운 소프트웨어 버전을 배포하고자 할 때 유용합니다.
블루-그린 배포의 주요 개념
- 블루 환경
- 현재 운영 중인 프로덕션 환경입니다.
- 그린 환경
- 새 버전의 애플리케이션을 배포할 준비가 된 새로운 환경입니다.
배포 과정
- 초기 상태
- 블루 환경이 실제 트래픽을 처리하고 있습니다.
- 그린 환경 준비
- 그린 환경에 새로운 애플리케이션 버전을 배포합니다. 이 환경은 아직 실제 트래픽에 노출되지 않습니다.
- 환경 전환
- 새 버전이 준비되면, 트래픽을 블루 환경에서 그린 환경으로 전환합니다. 이는 종종 로드 밸런서의 설정을 변경하여 수행됩니다.
- 모니터링 및 검증
- 그린 환경에서 새 버전을 모니터링하고 검증합니다. 문제가 없는지 확인합니다.
- 그린 환경에서 새 버전을 모니터링하고 검증합니다. 문제가 없는지 확인합니다.
- 롤백 계획
- 만약 새 버전에 문제가 발견되면, 트래픽을 다시 블루 환경으로 전환하여 즉각적으로 롤백합니다.
- 그린 환경 활성화
- 새 버전이 안정적으로 운영되면, 그린 환경이 이제 새로운 블루 환경이 됩니다. 이전의 블루 환경은 다음 배포를 위해 준비됩니다.
블루-그린 배포의 장점
- 무중단 배포
- 사용자에게 영향을 주지 않고 새 버전을 배포할 수 있습니다.
- 신속한 롤백
- 새 버전에 문제가 있을 경우, 이전 버전으로 빠르게 전환할 수 있습니다.
- 새 버전에 문제가 있을 경우, 이전 버전으로 빠르게 전환할 수 있습니다.
- 리스크 최소화
- 새 버전의 안정성을 보장하며, 운영 환경에서 문제가 발생할 리스크를 최소화합니다.
블루-그린 배포의 단점
- 자원 요구량
- 두 개의 완전한 환경을 유지해야 하므로, 자원(서버, 저장 공간 등)이 두 배로 필요합니다.
- 데이터베이스 동기화
- 데이터베이스 스키마 변경과 같은 복잡한 업데이트는 관리하기 어려울 수 있습니다.
블루-그린 배포는 특히 중요한 애플리케이션에 대한 신속하고 안전한 업데이트가 필요한 경우에 매우 효과적인 전략입니다.
https://developer-syubrofo.tistory.com/212 에서 셋팅한 Nginx를 이용하여 블루-그린 배포를 실습해 보겠습니다.
시나리오는 다음과 같습니다.
- server2를 그린 환경으로 사용하기 위해 nginx upstream 설정에서 주석처리 후 nginx reload 합니다.
- server2를 새 버전으로 배포 후 아래 명령어를 통해 컨테이너를 재 실행 합니다.
docker rm -f [server2 container id]
docker run -d --name server2 --network my-network -p 8080:8080 your_app
- localhost:8080으로 API 요청에 대한 응답을 확인하고 이상이 없으면 위의 명령어에서 -p를 제거하고 내부적으로만 통신할 수 있도록 컨테이너를 재 기동합니다. 만일 새 버전의 이슈가 있다면 server1과 같은 버전으로 롤백하여 Nginx upstream 설정에 추가한 후 트러블슈팅 후 맨 처음 과정부터 다시 수행합니다.
- nginx 설정에 server2를 upstream으로 등록하여 블루 환경으로 만들고, server1을 제거하여 새 버전으로 배포합니다.
- 위의 과정을 반복하여 server1도 nginx upstream 설정에 추가하여 배포를 마무리 합니다.
'[개발] Infrastructure > Deployment' 카테고리의 다른 글
Hystrix (0) | 2023.11.30 |
---|---|
사가 패턴 (0) | 2023.11.27 |
카나리아 배포 (0) | 2023.11.17 |
MSA 통신 패턴 (동기, 비동기)과 Apache Kafka, Zookeeper (0) | 2022.02.27 |
MSA(Micro Service Architecture) 기본 개념 (0) | 2022.02.26 |