본문 바로가기
Infra

무중단 배포 아키텍처(Zero Downtime Deployment)

by ppirae 2025. 11. 16.

무중단 배포

옛날에는 신규 배포를 하려면 사용자가 최대한 사용하지 않는 시간 (ex. 새벽 3시)에 서비스를 내리고 배포를 하던 시절이 있었다고 합니다.

하지만 최근에는 서비스 장애와 배포의 부담을 최소화하기 위해 운영 중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 무중단 배포를 합니다.

 

무중단 배포의 대표적인 방식 3가지가 있습니다.

롤링 / 블루-그린 / 카나리아

각각의 방식은 장단점이 있으며, 상황에 따라 적절한 배포 전략을 선택하는 것이 중요합니다.


1. 롤링 배포 (Rolling Deployment)

롤링 배포는 가장 일반적인 배포 방식 중 하나입니다. 새로운 버전의 애플리케이션을 점진적으로 기존 인스턴스에 교체하는 방식입니다.

설명: 새로운 버전의 애플리케이션을 출시할 때, 기존에 실행 중인 서버 인스턴스 중 일부를 새로운 버전으로 업데이트하고, 트래픽을 새로운 버전으로 서서히 전환합니다. 모든 인스턴스가 새로운 버전으로 업데이트될 때까지 이 과정을 반복합니다.

 

장점:

  • 다운타임 최소화: 점진적으로 업데이트되므로 서비스 중단 시간이 거의 없습니다.
  • 빠른 롤백: 문제가 발생하면 이전 버전으로 쉽게 롤백할 수 있습니다.
  • 자원 효율성: 추가적인 서버 자원이 많이 필요하지 않습니다.

단점:

  • 버전 불일치: 배포 중에는 이전 버전과 새 버전이 동시에 실행될 수 있어 호환성 문제가 발생할 수 있습니다.
  • 복잡한 롤백: 롤백 시 업데이트된 인스턴스를 다시 이전 버전으로 되돌려야 합니다.

시간에 흐름에 따라 인스턴스가 점진적으로 교체되는 중


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

블루-그린 배포는 두 개의 동일한 프로덕션 환경을 유지하면서 새로운 버전을 배포하는 방식입니다.

설명: 현재 운영 중인 환경을 "블루" 환경이라고 가정합니다. 새로운 버전의 애플리케이션을 배포하기 위해 "그린"이라는 새로운 환경을 블루 환경과 동일하게 구축하고, 그린 환경에 새 버전을 배포합니다. 새 버전이 그린 환경에서 충분히 테스트되고 안정성이 확인되면, 트래픽 라우터를 변경하여 모든 사용자 트래픽을 블루 환경에서 그린 환경으로 즉시 전환합니다. 만약 문제가 발생하면 트래픽 라우터를 다시 블루 환경으로 되돌려 빠르게 롤백할 수 있습니다.

 

장점:

  • 다운타임 없음: 트래픽 전환 시 다운타임이 발생하지 않습니다.
  • 빠른 롤백: 문제가 발생하면 즉시 이전 버전으로 롤백할 수 있습니다.
  • 안정성: 새로운 환경에서 충분히 테스트 후 전환하므로 안정성이 높습니다.

단점:

  • 자원 낭비: 두 개의 프로덕션 환경을 동시에 유지해야 하므로 자원 소모가 큽니다.
  • 복잡성: 환경을 이중으로 관리해야 하므로 설정 및 관리가 복잡할 수 있습니다.
  • 데이터베이스 마이그레이션 문제: 데이터베이스 스키마 변경이 필요한 경우, 블루와 그린 환경 간의 동기화 문제가 발생할 수 있습니다.

그린 환경 준비가 완료되면 트래픽 전환


3. 카나리 배포 (Canary Deployment)

카나리 배포는 새로운 버전의 애플리케이션을 소수의 사용자 그룹에게 먼저 배포하여 테스트하고, 문제가 없으면 점진적으로 모든 사용자에게 확대하는 방식입니다.

설명: 새로운 버전의 애플리케이션을 배포할 때, 전체 사용자 중 아주 작은 비율(예: 1% 또는 특정 지역 사용자)에게만 새로운 버전을 노출합니다. 이 소수의 "카나리" 그룹으로부터 피드백을 수집하고, 애플리케이션의 성능, 안정성, 오류 발생 여부 등을 모니터링합니다. 만약 새로운 버전에서 문제가 발견되면, 즉시 이전 버전으로 롤백하거나 문제를 수정하고 다시 카나리 그룹에 배포합니다. 문제가 없으면 점진적으로 더 많은 사용자 그룹에 새로운 버전을 확대 적용합니다.

 

장점:

  • 위험 최소화: 새로운 버전의 잠재적 위험을 소수의 사용자에게만 노출하여 전체 서비스에 미치는 영향을 최소화합니다.
  • 실제 사용자 피드백: 실제 환경에서 사용자로부터 피드백을 받아 문제점을 조기에 발견할 수 있습니다.
  • 점진적 확대: 안정성이 확인된 후 점진적으로 배포하여 안정성을 높입니다.

단점:

  • 복잡한 모니터링: 새로운 버전의 성능과 안정성을 지속적으로 모니터링해야 하므로 복잡한 모니터링 시스템이 필요합니다.
  • 긴 배포 시간: 점진적으로 확대되므로 전체 배포 시간이 길어질 수 있습니다.
  • A/B 테스트와 혼동: A/B 테스트와 유사하지만, 카나리 배포는 위험 감소에 중점을 둡니다.

적은 유저로 미리 테스트 (실 사용 유저 몇% 또는 내부 인원)


우리 회사는 서버는 롤링 배포와 블루-그린 배포를 사용하는 듯...

프론트(앱)쪽에서는 미리 업데이트된 apk 버전을 내부 사용자들에게만 배포하는데

카나리 배포랑 비슷하다고 볼 수 있을까 ? ...

 

이미지 출처

https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3

댓글