devops
블루/그린, 롤링, 카나리 배포 본문
블루/그린 배포
어플리케이션과 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 동일한 새 버전으로 점진저긍로 이전하는 어플리케이션 릴리스 모델이다.
블루/그린 배포가 필요한 이유는 배포를 자동화할 때 겪는 어려움 중 하나인 Software를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버다.
일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 한다.
* 컷오버(Cutover) : 기존에 운영되던 환경을 중단시키고 새 구축환경으로 오픈하는 것
* 다운타임(Downtime) : 시스템을 이용할 수 없는 시간
블루/그린 배포의 장점
- 동일하게 구성된 환경을 추가하여 서비스 가동 중단 시간을 최소화할 수 있다.
- 서비스되고 있는 환경(blue or green)에 문제 발생 시 백업 서버로 활용
- 배포를 위한 최종 테스트 단계의 스테이징 환경으로 사용
- 새 버전을 릴리즈 하고 싶을 때, green 환경에서 테스트.
- 테스트가 정상 완료 시 blue 환경에서 들어가던 모든 요청을 green 환경으로 변경
- blue는 이전 green 환경의 역할을 가져가서 green이 잘 동작하지 않을때 백업 서버 역할을 수행
블루/그린 배포 원칙
- 환경은 다르나, 최대한 동일하게 해야함 (하드웨어의 다른 부분이거나 혹은 동일한 하드웨어에서 실행되는 다른 가상머신, 혹은 별도 IP 주소를 사용할 수 있음)
- 무중단 배포를 지켜야함
- 한 시점에서 하나의 버전만 액티브 상태를 유지, 롤백이 쉬워야함
롤링 배포
어플리케이션이 실행 중인 인프라를 완전히 교체하여 이전 버전의 어플리케이션을 새 버전의 어플리케이션으로 서서히 교체하는 배포 전략
* 롤링 배포는 가용 자원이 한정적일 때 사용
롤링배포는 업그레이드 과정에서 문제가 발생되면 롤링 배포를 'reverse'로 이동하여 새 버전의 앱을 제거하고 이전 버전을 다시 시작할 수 있다. 또한, Downtime이 없다는 장점이 있다.
그러나 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있다. 배포중인 서버는 서비스가 중단된 상태기 때문에 서버 부하량을 체크하며 배포를 진행해야 한다.
카나리 배포
전체 인프라에 새로운 소프트웨어 버전을 릴리즈하여 모든 사용자가 사용할 수 있도록 하기 전에 변경 사항을 천천히 릴리즈하여 프로덕션 환경에 새 소프트웨어 버전을 도입하는 위험을 줄일 수 있다.
블루/그린 배포와 유사하게 사용자가 라우팅되지 않은 인프라의 하위 집합에 새 버전의 소프트웨어를 배포하는 것을 먼저 시작한다.
문제 발생하면 먼저 배포된 서버만 롤백하면 되기 때문에 간편하다.
또한, 운영환경에서 신규버전을 테스트할 수 있다.(부하를 서서히 증가시켜 신규 버전이 운영환경에서 어떤 반응을 보이는지 모니터링가능)
마지막으로, 특정 서버로 먼저 배포를 진행하기 때문에 문제 발생시 리스크가 적다.
'DevOps' 카테고리의 다른 글
동기식 요청/응답 통신 REST, 메시지 브로커를 통한 비동기 통신 (0) | 2022.06.17 |
---|---|
API 디자인과 프로세스 통신, JSON (0) | 2022.06.17 |
CI/CD, 빌드와 언어별 도구 (0) | 2022.05.30 |
Socket과 Port의 특징, HTTP 버전 별 정리 (0) | 2022.05.16 |
CORS(Cross Origin Resource Sharing), SQL(Structured Query Language) (0) | 2022.05.09 |