본문 바로가기

infra

[CI/CD] 위험을 감지하는 카나리(Canary) 배포

[infra] - [CI/CD] 가장 기본적인 무중단 배포, 롤링 업데이트(Rooling Update)

롤링 업데이트는 배포 중 버전이 섞이는 문제가 있었고, 

 

[infra] - [CI/CD] 가장 안전한 배포, 블루-그린(Blue-Green) 배포

블루-그린은 안전하지만 리소스 비용 및 '전부 아니면 전무(All or Nothing) 방식의 부담이 존재했다. 

 

이 둘의 장점을 합칠 수 있다면?
"배포로 인한 위험을 최소화하면서, 실제 운영 환경에서 신규 버전의 성능을 데이터로 검증하고 점진적으로 안정적인 출시하기"

이 질문에 대한 해답으로 카나리(Canary) 배포 전략이 있다.

 

 

카나리 배포란? 이름의 유래

 

카나리 배포는 과거 광부들이 유독가스를 감지하기 위해 탄광에 카나리아 새를 데리고 들어갔던 것에서 유래했다.

카나리아가 먼저 가스를 감지하고 쓰러지면 광부들은 위험을 미리 알고 대피할 수 있었던 것!

 

이처럼 카나리 배포는 신규 버전을 소수의 사용자 그룹에게만 먼저 공개하여 실제 운영 환경에서 발생할 수 있는 잠재적 위험을 미리 감지하는 것

이 소수의 그룹에게 문제가 발생하지 않으면, 점진적으로 배포를 확대해 나간다.

 

 

카나리 배포의 동작 방식
  1. 초기 상태 : 모든 사용자(100%)는 현재 안정적으로 운영 중인 구버전(v1)에 접속하고 있음
  2. 카나리 출시 : 신버전(v2) 서버를 구버전과 함께 배포한 뒤, 라우터를 통해 아주 일부의 트래픽(예: 1~5%)만 신버전으로 보냄
  3. 모니터링 및 검증 : 신버전의 사용자 경험을 모니터링하여 안정성과 성능 검증
  4. 판단 및 확대/롤백 :
    • 문제 발생 시 : 즉시 신버전으로 향하던 트래픽을 모두 차단하고 구버전으로 되돌림. 장애는 오직 일부 카나리 그룹에만 영향을 미쳤으므로 전체 서비스의 안정성은 지킬 수 있음
    • 문제가 없다면 : 신버전으로 보내는 트래픽을 점진적으로 늘려나감 (예: 10% → 30% → ...)

 

 

카나리 배포의 장점
  • 위험 최소화
    • 신규 버전의 잠재적인 문제가 전체 사용자가 아닌 아주 작은 그룹에만 영향을 미침
  • 실제 운영 환경에서의 테스트
    • Staging 환경에서는 발견할 수 없는, 실제 트래픽과 사용자 상호작용 속에서 나타나는 버그나 성능 문제 발견 가능
  • 빠른 롤백과 무중단 배포
    • 문제가 감지되면 트래픽만 차단하면 되므로 롤백이 즉각적, 배포 과정에서 서비스 중단이 전혀 없음

 

 

카나리 배포의 단점 및 과제

 

가장 진보한 방식인 만큼 기술적으로 복잡하고 어려운 과제들을 동반한다.

  • 구현 및 관리의 복잡성
    • 특정 비율의 트래픽을 정교하게 라우팅하고, 여러 버전을 동시에 관리하며, 점진적인 배포를 자동화하는 것은 매우 복잡
  • 모니터링 환경 필수
    • "문제를 빠르고 정확하게 감지"할 수 있는 모니터링 환경 구축이 선행되어야 함
    • 선배포 환경의 문제를 파악할 수 없다면 무용지물인 전략
  • 데이터베이스 호환성 문제
    • 롤링 업데이트와 마찬가지로, 배포 중 여러 버전이 동시에 운영되므로 데이터베이스 스키마 변경 등에 대한 세심한 관리 필요

 

 

카나리 배포는 리스크를 최소화하면서 실제 데이터를 기반으로 안정적인 출시를 원하는 현대적인 서비스 기업(Google, Netflix 등)들이 적극적으로 채택하는 전략이다.

그만큼 높은 수준의 기술적 역량과 철저한 준비가 필요하다!