DevOps BootCamp/CI, CD 파이프라인

블루/그린 배포

cloudmaster 2023. 4. 25. 13:32
블루 / 그린 배포란?
  • 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델

 

블루 / 그린 배포가 필요한 이유

배포를 자동화할 때 겪는 어려움 중 하나는 소프트웨어를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버 자체

> 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 함

  • 컷오버(cutover) : 기존에 운영되던 환경을 중단시키고, 새로 구축된 환경으로 오픈하는 것
  • 다운타임(Downtime) : 시스템을 이용할 수 없는 시간

 

블루 / 그린 배포의 방식

 [출처] codestates

 

blue를 실제 운영 중인 환경으로 가정

  • 새로운 버전을 릴리스 하고 싶은 경우 green 환경에서 테스트를 진행
  • 테스트가 정상 완료 된다면 blue 환경에서 들어가던 모든 요청을 green 환경으로 변경
  • 이후 blue는 이전 green 환경의 역할을 가져감과 동시에 green이 잘 동작하지 않을 때 사용할 수 있는 백업 서버로의 역할도 수행이 가능

 

블루 / 그린 배포는 기존 배포의 어떠한 문제점을 해결해 줄까?

첫째, 전통적인 배포 방식에서는 새로운 버전의 애플리케이션을 배포하기 전에 기존 버전을 완전히 중지시켜야 함. 이는 사용자들에게 중단되는 시간이 생기고, 애플리케이션의 가용성에 영향을 미칠 수 있다. 하지만 블루 / 그린 배포에서는 새로운 버전의 애플리케이션을 배포할 때 기존 버전을 중지시키지 않습니다. 대신 새로운 버전의 애플리케이션을 미리 준비하고, 새로운 버전이 준비된 뒤 트래픽을 새로운 버전으로 전환시킵니다. 이를 통해 애플리케이션의 가용성을 유지하면서도 새로운 버전을 배포할 수 있다

 

둘째, 전통적인 배포 방식에서는 롤백 작업이 어려울 수 있습니다. 새로운 버전의 애플리케이션이 배포된 후 문제가 발생할 경우, 기존 버전으로 롤백하는 것이 어려울 수 있습니다. 하지만 블루 / 그린 배포에서는 롤백 작업이 간단해진다. 새로운 버전의 애플리케이션을 배포할 때 기존 버전을 유지하고, 문제가 발생하면 트래픽을 기존 버전으로 전환시킵니다. 이를 통해 롤백 작업을 간편하게 수행할 수 있다

 

셋째, 전통적인 배포 방식에서는 배포 시간이 오래 걸릴 수 있습니다. 새로운 버전의 애플리케이션을 배포할 때, 기존 버전을 중지하고 새로운 버전을 시작하는 과정이 매우 복잡할 수 있다. 하지만 블루 / 그린 배포에서는 기존 버전과 새로운 버전을 병렬로 실행할 수 있으므로 배포 시간을 단축할 수 있다.

 

블루 / 그린 배포의 원칙
  • 두 환경은 다르지만, 최대한 동일해야 함
    • 경우에 따라 하드웨어의 다른 부분일 수도 있고 동일한(또는 다른) 하드웨어에서 실행되는 다른 가상 머신일 수도 있습니다. 또한 두 슬라이스에 대해 별도의 IP 주소를 사용하여 별도의 영역으로 분할된 단일 운영 환경이 될 수도 있습니다.
  • 무중단 배포여야 함
  • 한 시점에 하나의 버전만 액티브 상태여야 하며, 롤백이 쉬워야 함

 

블루 / 그린 배포의 장점
  • 동일하게 구성된 환경을 하나 더 추가함으로써 서비스의 가동 중단 시기를 최소화
  • 서비스되고 있는 환경(블루 혹은 그린)에 문제가 발생한 경우 백업 서버로 사용
  • 다음 배포를 위한 최종 테스트 단계의 스테이징 환경으로 사용
    • 스테이징 환경 : 운영 환경과 거의 동일한 환경을 만들어 놓고, 운영 환경으로 이전하기 전에 여러 가지 비 기능적인 부분 ( 보안, 성능, 장애 등)을 검증하는 환경을 뜻함

 

 

'DevOps BootCamp > CI, CD 파이프라인' 카테고리의 다른 글

카나리 배포  (0) 2023.04.25
롤링 배포  (0) 2023.04.25
서버 환경 변수 설정  (0) 2023.04.25
클라이언트 환경 변수 설정  (0) 2023.04.25
서버 배포 파이프라인  (0) 2023.04.24