백엔드/배포

무중단 배포 전략

eess 2024. 8. 13. 17:58

 

무중단 배포란?

  • 무중단 배포(Zero-Downtime Deployment)는 애플리케이션을 배포할 때 서비스 중단 없이 새로운 버전을 배포하는 방식입니다.
  • 사용자에게는 지속적인 서비스를 제공하면서, 새로운 버전의 안정성을 점진적으로 확인할 수 있는 방법입니다.

 

무중단 배포 주요 전략 3가지

1. 블루-그린 배포 (Blue-Green Deployment)

출처 : https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

과정

  1. 두 개의 동등한 환경(블루/그린)을 환경을 이용합니다. 블루는 현재 운영 중인 프로덕션 환경이고, 그린은 새로운 버전을 배포할 환경입니다. 
  2. 블루 환경이 실행되고 있는 상황에서, 그린 환경에 새로운 버전의 애플리케이션을 배포합니다.
  3. 배포가 완료되고 나면, 로드 밸런서나 웹서버를 통해 트래픽을 블루 환경에서 그린 환경으로 전환합니다.
  4. 이후 블루 환경은 필요에 따라 유지하거나 종료합니다.

장점

  • 그린 환경에서 문제가 발생할 경우 다시 블루 환경으로 롤백할 수 있습니다.
  • 프로덕션 환경과 유사한 환경에서 새로운 버전을 테스트할 수 있습니다.

단점

  • 두 개의 환경을 유지해야 하므로 인프라와 리소스가 2배로 필요합니다.
  • 자동화된 테스트에서 오류가 감지되지 않을 경우, 그린 환경으로 가는 트래픽이 모두 영향을 받을 수 있습니다.

블루-그린 배포를 지원하는 서비스

  • AWS Elastic Beanstalk, AWS Elastic Load Balancing(ELB), AWS CodeDeploy
  • GCP Google Kubernetes Engine(GKE), Google Cloud Run

 

2. 카나리 배포 (Canary Deployment)

출처 : https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

과정

  1. 기존 버전(stable)과 새 버전(canary)을 동시에 실행합니다.
  2. 사용자를 두 그룹으로 나누어 소규모의 사용자는 카나리 버전으로, 나머지는 기존 버전으로 트래픽을 분리합니다.
  3. 문제가 발생하면 이전 버전으로 롤백하거나 수정합니다.
  4. 카나리 버전이 안정성이 확인되면 전체 트래픽을 새 버전으로 전환합니다.

장점

  • 기존 버전으로의 롤백이 빠릅니다.
  • 문제 발생시 소규모의 사용자만 영향을 받습니다.
  • 실제 사용자를 대상으로 새 버전을 테스트할 수 있습니다.
  • * A/B 테스트 환경으로 사용될 수 있습니다.
    (* 두 가지 이상의 버전의 애플리케이션을 비교하여 어떤 버전이 더 나은 성과를 내는지 판단하는 것)

단점

  • 두 버전을 실행해야 하므로 서버 리소스와 비용이 추가로 들 수 있습니다.
  • 두 버전이 함께 실행되기 때문에 호환성 문제가 발생할 수 있습니다.

카나리 배포를 지원하는 서비스

  • AWS CodeDeploy, AWS Elastic Container Service(ECS)
  • GCP Google Kubernetes Engine(GKE), Google Cloud Run

 

3. 롤링 배포 (Rolling Deployment)

출처 : https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

과정

  1. 기존 버전의 일부 인스턴스를 새 버전으로 교체합니다. 
  2. 교체한 일부 인스턴스에서 안정적으로 동작하면 점진적으로 나머지 인스턴스에 새 버전을 배포합니다. 
  3. 전체 인스턴스가 새 버전으로 업데이트되면, 구 버전의 인스턴스는 종료되거나 리소스 풀에서 제거됩니다.

장점

  • 블루-그린 배포와 비교했을 때, 전체 인프라를 동일하게 구성하는 대신 새로운 인스턴스만 하나씩 추가하면 됩니다.
  • 롤백이 필요한 경우 모든 트래픽을 이전 버전으로 되돌릴 수 있습니다.

단점

  • 전체 시스템이 새 버전으로 업데이트 되기까지 시간이 걸릴 수 있습니다.
  • 블루-그린, 카나리 배포에 비해 롤백하는데 시간이 오래 걸릴 수 있습니다.
  • 카나리 배포와 마찬가지로 기존 버전과 새 버전이 동시에 실행될 때 호환성 문제가 발생할 수 있습니다.

롤링 배포를 지원하는 서비스

  • AWS Elastic Beanstalk, AWS Elastic Container Service(ECS)
  • GCP Google Kubernetes Engine(GKE), Google Cloud Run

 

블루-그린 배포 vs 카나리 배포 vs 롤링 배포 비교 정리

  블루-그린 배포 카나리 배포 롤링 배포
설명 블루/그린 두 개의 환경을 구성, 그린 환경에 새 버전 배포 후 트래픽 전환 일부 사용자 트래픽만 새 버전으로 배포하여 테스트하고, 문제 없으면 전체 트래픽을 새 버전으로 전환  기존 버전의 일부 인스턴스만 새 버전으로 업데이트하여 테스트하고, 문제 없으면 나머지 인스턴스도 새 버전으로 점진적 업데이트
장점
  • 빠르고 간편한 롤백
  • 프로덕션 환경과 유사한 환경에서 테스트 가능
  • 빠르고 간편한 롤백
  • 새 버전 문제 발생시 영향 최소화
  • 실제 사용자를 대상 테스트
  • A/B 테스트 가능
  • 비교적 적은 서버 리소스
단점
  • 인프라와 리소스가 2배로 필요
  • 문제 발생 시 전체 트래픽에 영향
  • 추가적인 서버 리소스
  • 호환성 문제
  • 전체 시스템 업데이트 비교적 오래 걸림
  • 비교적 롤백이 오래 걸림
  • 호환성 문제

 

참고

What Is Blue-Green Deployment?

무중단 배포란? 무중단 배포 전략에 대해 알아보자.

Blue-Green, Rolling, and Canary: Continuous Deployments Explained