카나리 테스트와 함께하는 안전한 서버 배포
두줄요약
Kubernetes 환경에서 Helm, NGINX Ingress, Istio로 카나리 배포를 구성했습니다. 프로세스 유형별 트래픽 제어와 모니터링·롤백 절차를 정리했습니다.
문제 상황
- Spring Boot 메이저 버전과 의존 라이브러리 동시 변경에 따른 프로덕션 전체 배포 위험
- 미검증 기능·성능 문제를 줄이기 위한 일부 트래픽 대상 사전 검증 필요
구조와 흐름
- 프로덕션 브랜치를 추종하는 카나리 브랜치와
canary태그 Docker 이미지 관리 - Helm 차트의 별도 릴리스 설치와 릴리스명 기반 리소스·레이블 셀렉터 분리
- 외부 API, gRPC 내부 서비스, 큐 워커, 싱글턴 배치별 상이한 트래픽 제어
해결 방법
- NGINX Ingress의 canary 어노테이션과 weight로 외부 요청 비율 점진 조정
- Istio VirtualService로 Kubernetes Service와 카나리 Service 간 gRPC 요청 가중치 라우팅
- 워커는 replicas 수로 처리 비중 조절, 싱글턴은 기존·카나리 중 하나만 실행
성능/운영 포인트
- 배포 도구로 Helm 설치와 프로세스 유형별 카나리 비율 설정 일괄 적용
- 체크리스트 기반 비율 증가와 Sentry·Grafana 모니터링, 이상 시 weight 0 롤백
- 향후 대조군 메트릭 비교·자동 롤백 및 사용자 그룹 기반 카나리 적용 검토






