블루 / 그린 배포
Blue-Green 배포는 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델입니다.
블루 / 그린 배포가 필요한 이유?
배포를 자동화할 때 겪는 어려움 중 하나는 소프트웨어를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버 자체입니다. 일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 합니다.
두 가지 프로덕션 환경 :
컷오버(cutover) : 기존에 운영되던 환경을 중단시키고, 새로 구축된 환경으로 오픈하는 것
다운타임(Downtime) : 시스템을 이용할 수 없는 시간
blue를 실제 운영 중인 환경으로 가정하겠습니다.
- 새로운 버전을 릴리스 하고 싶은 경우 green 환경에서 테스트를 진행합니다.
- 테스트가 정상 완료 된다면 blue 환경에서 들어가던 모든 요청을 green 환경으로 변경합니다.
- 이후 blue는 이전 green 환경의 역할을 가져감과 동시에 green이 잘 동작하지 않을 때 사용할 수 있는 백업 서버로의 역할도 수행이 가능하게 됩니다.
배포 원칙 :
- 두 환경은 다르지만, 최대한 동일해야 합니다.
- 또한 두 슬라이스에 대해 별도의 IP 주소를 사용하여 별도의 영역으로 분할된 단일 운영 환경이 될 수도 있습니다.
- 무중단 배포여야 합니다.
- 한 시점에 하나의 버전만 액티브 상태여야 하며, 롤백이 쉬워야 합니다.
블루 / 그린 배포의 장점 :
- 동일하게 구성된 환경을 하나 더 추가함으로써 서비스의 가동 중단 시기를 최소화시킬 수 있습니다.
- 서비스되고 있는 환경(블루 혹은 그린)에 문제가 발생한 경우 백업 서버로 사용할 수 있습니다.
- 다음 배포를 위한 최종 테스트 단계의 스테이징 환경으로 사용할 수 있습니다.
스테이징 환경 : 운영 환경과 거의 동일한 환경을 만들어 놓고, 운영 환경으로 이전하기 전에 여러 가지 비 기능적인 부분 ( 보안, 성능, 장애 등)을 검증하는 환경을 뜻합니다.
롤링 배포
- 롤링 배포는 애플리케이션이 실행 중인 인프라를 완전히 교체하여 이전 버전의 애플리케이션을 새로운 버전의 애플리케이션으로 서서히 교체하는 배포 전략입니다.
- 롤링 배포는 가용 자원이 제한적일 경우에 사용됩니다.
롤링 배포의 장점 :
- 업그레이드 과정에서 문제가 발견되면 일반적으로 롤링 배포를 "reverse"로 이동하여 새 버전의 앱을 제거하고 이전 버전을 다시 시작할 수 있습니다.
- Downtime이 없습니다.
롤링 배포의 단점 :
- 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있습니다.
- 배포 중인 서버는 서비스가 중단된 상태이기 때문에 서버 부하량을 체크하며 배포를 진행해야 합니다.
카나리 배포
카나리 배포는 전체 인프라에 새로운 소프트웨어 버전을 릴리스하여 모든 사용자가 사용할 수 있도록 하기 전에 변경 사항을 천천히 릴리스함으로써 프로덕션 환경에 새로운 소프트웨어 버전을 도입하는 위험을 줄이는 기술입니다. Canary Release는 비슷한 개념으로 잠재적 문제를 초기에 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지합니다.
- 특정 서버에만 배포를 진행하여 오류 여부를 확인하고 문제가 없다면 모든 서버에 새로운 버전을 단계적으로 배포하는 방식입니다.
카나리 배포 장점 :
- 문제 발생 시 먼저 배포가 진행되었던 서버만 롤백하면 됨으로 비교적 롤백이 간편합니다.
- 운영 환경에서 신규버전을 테스트할 수 있습니다.
- 부하를 서서히 증가시키며 신규 버전이 운영 환경에서 어떠한 반응을 보이는지 모니터링하고 수치를 측정할 수 있습니다.
- 특정 서버로 먼저 배포를 진행하기 때문에 문제 발생 시 리스크가 비교적 적습니다.
Q : 그렇다면 카나리 배포와 블루 / 그린 배포의 차이는 무엇일까요?
카나리 배포는 일부 사용자에게 업데이트를 먼저 배포하여 문제를 파악하고 수정하는 전략이고, 블루/그린 배포는 전체 시스템에 대해 동시에 업데이트를 배포하되, 이전 버전과 새로운 버전을 모두 유지하여 잠재적인 문제를 방지하는 전략입니다.
'배포 자동화' 카테고리의 다른 글
DevOps Day 35 (4.24) 배포 자동화_Sprint 서버 배포 파이프라인 (0) | 2023.04.25 |
---|---|
DevOps Day 35 (4.24) 배포 자동화_Sprint 클라이언트 배포 파이프라인 (0) | 2023.04.25 |
DevOps Day 35 (4.24) 배포 자동화 (0) | 2023.04.25 |