devops

블루/그린, 롤링, 카나리 배포 본문

DevOps

블루/그린, 롤링, 카나리 배포

vata500 2022. 6. 7. 21:54
반응형

블루/그린 배포

어플리케이션과 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 동일한 새 버전으로 점진저긍로 이전하는 어플리케이션 릴리스 모델이다.

블루/그린 배포가 필요한 이유는 배포를 자동화할 때 겪는 어려움 중 하나인 Software를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버다.

일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 한다.

* 컷오버(Cutover) : 기존에 운영되던 환경을 중단시키고 새 구축환경으로 오픈하는 것

* 다운타임(Downtime) : 시스템을 이용할 수 없는 시간

블루/그린 배포의 장점

  • 동일하게 구성된 환경을 추가하여 서비스 가동 중단 시간을 최소화할 수 있다.
  • 서비스되고 있는 환경(blue or green)에 문제 발생 시 백업 서버로 활용
  • 배포를 위한 최종 테스트 단계의 스테이징 환경으로 사용

  • 새 버전을 릴리즈 하고 싶을 때, green 환경에서 테스트.
  • 테스트가 정상 완료 시 blue 환경에서 들어가던 모든 요청을 green 환경으로 변경
  • blue는 이전 green 환경의 역할을 가져가서 green이 잘 동작하지 않을때 백업 서버 역할을 수행

블루/그린 배포 원칙

  • 환경은 다르나, 최대한 동일하게 해야함 (하드웨어의 다른 부분이거나 혹은 동일한 하드웨어에서 실행되는 다른 가상머신, 혹은 별도 IP 주소를 사용할 수 있음)
  • 무중단 배포를 지켜야함
  • 한 시점에서 하나의 버전만 액티브 상태를 유지, 롤백이 쉬워야함

롤링 배포

어플리케이션이 실행 중인 인프라를 완전히 교체하여 이전 버전의 어플리케이션을 새 버전의 어플리케이션으로 서서히 교체하는 배포 전략

* 롤링 배포는 가용 자원이 한정적일 때 사용

사용 중인 인스턴스(v1)을 새 버전(v2)로 점진적 교체

롤링배포는 업그레이드 과정에서 문제가 발생되면 롤링 배포를 'reverse'로 이동하여 새 버전의 앱을 제거하고 이전 버전을 다시 시작할 수 있다. 또한, Downtime이 없다는 장점이 있다.

그러나 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있다. 배포중인 서버는 서비스가 중단된 상태기 때문에 서버 부하량을 체크하며 배포를 진행해야 한다.


카나리 배포

전체 인프라에 새로운 소프트웨어 버전을 릴리즈하여 모든 사용자가 사용할 수 있도록 하기 전에 변경 사항을 천천히 릴리즈하여 프로덕션 환경에 새 소프트웨어 버전을 도입하는 위험을 줄일 수 있다.

블루/그린 배포와 유사하게 사용자가 라우팅되지 않은 인프라의 하위 집합에 새 버전의 소프트웨어를 배포하는 것을 먼저 시작한다.

특정 서버에만 배포를 진행하여 오류 여부를 확인한 다음, 문제가 없을 시 모든 서버에 새 버전을 단계적으로 배포한다.

문제 발생하면 먼저 배포된 서버만 롤백하면 되기 때문에 간편하다.

또한, 운영환경에서 신규버전을 테스트할 수 있다.(부하를 서서히 증가시켜 신규 버전이 운영환경에서 어떤 반응을 보이는지 모니터링가능)

마지막으로, 특정 서버로 먼저 배포를 진행하기 때문에 문제 발생시 리스크가 적다.

반응형
Comments