배포 전략 실습 — Canary vs Dark Deployment
카나리와 다크 배포의 노출 방식·관측 지표·롤백 설계를 비교하는 실전 가이드
Posted
By okorion
배포 전략 실습 — 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개 + 교정
오해: 카나리면 안전하다
교정: 기준 없는 카나리는 늦은 사고다.오해: 다크 배포는 내부용이다
교정: 실제 사용자 검증 전략이다.오해: 헤더 라우팅은 단순하다
교정: 클라이언트/보안 이슈가 따른다.
재학습 체크리스트
- 리스크 유형(품질 vs 기능)을 구분하는가?
- 지표로 판단할 문제인가, 행동으로 판단할 문제인가?
- 카나리 단계와 중단 조건이 수치로 정의됐는가?
- 다크 대상 식별이 재현 가능한가?
- 헤더 전파/검증이 구현돼 있는가?
- 롤백이 “버튼 한 번”인가?
- 조직(기획/QA/CS)과 연결돼 있는가?
- 관측으로 의사결정이 가능한가?
This post is licensed under CC BY 4.0 by the author.
