Post

배포 전략 실습 — Canary vs Dark Deployment

카나리와 다크 배포의 노출 방식·관측 지표·롤백 설계를 비교하는 실전 가이드

배포 전략 실습 — Canary vs Dark Deployment

결론 요약

카나리와 다크 배포의 차이는 “노출 방식”이 아니라 리스크를 관측하는 방법이다.
카나리는 전체 사용자 중 일부 트래픽으로 품질을 검증한다.
다크 배포는 특정 조건의 사용자에게만 기능을 노출해 조직적으로 검증한다.
트래픽 기반 카나리는 자동화·지표 중심, 레플리카 기반 카나리는 단순·보수적이다.
헤더 기반 라우팅은 강력하지만 클라이언트/테스트/보안 이슈를 동반한다.
선택 기준은 “실패를 어디서 감지할 것인가”다.


카나리 vs 다크 배포 비교 표

구분카나리 배포다크 배포
공통점신규 버전을 제한적으로 노출신규 버전을 제한적으로 노출
핵심 차이트래픽 비율로 검증사용자 조건으로 검증
노출 기준무작위 트래픽 일부특정 사용자/헤더
관측 방식지표 중심(p95, 오류율)기능/행동 중심
리스크 성격시스템 품질 리스크기능/비즈니스 리스크
롤백즉시 비율 0%대상 조건 제거
적합 조직SRE/플랫폼 중심기획·QA·CS 연계

카나리 배포 설계 (단계 / 지표 / 중단 조건)

결론

카나리는 지표가 말하게 하는 배포다.

트래픽 기반 카나리 vs 레플리카 기반 카나리

  • 트래픽 기반: Envoy/Ingress로 요청 비율 제어 (정밀, 복잡)
  • 레플리카 기반: 신규 버전 Pod 수를 소수로 유지 (단순, 거칠음)

단계 예시

  • 10% → 30% → 50% → 100%
  • 각 단계마다 관측 → 판단 → 다음 단계

핵심 지표

  • 지연: p95/p99
  • 오류율: 5xx
  • 트래픽: RPS 변화
  • 포화: CPU/메모리

중단 조건(하드 스톱)

  • 오류율 기준선 대비 +X%
  • p95 지연 기준선 대비 +Y%
  • 재시도 폭증

다크 배포 설계 (대상 식별 / 헤더 / 보안 이슈)

결론

다크 배포의 본질은 “특정 조건의 사용자에게만 다른 버전”이다.

대상 식별 방법

  • 사용자 ID/세그먼트
  • 내부 계정(사내/QA)
  • 기능 플래그
  • 헤더(X-Feature-Flag)

헤더 기반 라우팅의 현실적 이슈

  • 클라이언트: 모바일/브라우저가 헤더를 보존하지 않을 수 있음
  • 테스트: E2E에서 헤더 주입 필요
  • 보안: 헤더 위·변조 방지 필요(서명/검증)

조직적 활용

  • 기획: 제한 공개(soft launch)
  • QA: 실제 환경 검증
  • CS: 이슈 재현 대상 고정

시나리오 1: 결제 기능 변경

상황

  • 결제 로직/외부 PG 연동 변경

선택

  • 카나리 배포 우선

이유

  • 오류율/지연이 즉시 사업 손실로 연결
  • 무작위 트래픽에서 안정성 검증 필요

관측 지표

  • 결제 성공률
  • 결제 단계별 지연
  • 재시도 횟수

롤백

  • 트래픽 비율 즉시 0%
  • PG 호출 차단

시나리오 2: 추천 알고리즘 변경

상황

  • 추천 품질/노출 로직 변경

선택

  • 다크 배포 우선

이유

  • 기능 효과는 지표보다 행동으로 판단
  • 기획/분석/CS와 협업 필요

관측 지표

  • CTR
  • 전환율
  • 사용자 피드백

롤백

  • 대상 사용자 조건 제거
  • 기존 알고리즘 유지

실패/롤백 체크리스트

  • 실패 판단 기준이 사전에 합의됐는가?
  • 카나리 중단은 자동화돼 있는가?
  • 다크 대상은 즉시 분리 가능한가?
  • 관측 지표가 배포 전 기준선을 갖는가?
  • 로그/트레이스에서 신규 버전 식별 가능한가?
  • CS 대응 가이드가 있는가?
  • 배포 변경 이력이 추적 가능한가?

흔한 오해 3개 + 교정

  1. 오해: 카나리면 안전하다
    교정: 기준 없는 카나리는 늦은 사고다.

  2. 오해: 다크 배포는 내부용이다
    교정: 실제 사용자 검증 전략이다.

  3. 오해: 헤더 라우팅은 단순하다
    교정: 클라이언트/보안 이슈가 따른다.


재학습 체크리스트

  • 리스크 유형(품질 vs 기능)을 구분하는가?
  • 지표로 판단할 문제인가, 행동으로 판단할 문제인가?
  • 카나리 단계와 중단 조건이 수치로 정의됐는가?
  • 다크 대상 식별이 재현 가능한가?
  • 헤더 전파/검증이 구현돼 있는가?
  • 롤백이 “버튼 한 번”인가?
  • 조직(기획/QA/CS)과 연결돼 있는가?
  • 관측으로 의사결정이 가능한가?

This post is licensed under CC BY 4.0 by the author.