본문

롤링 vs 블루그린 vs 카나리, 뭘 선택해야 할까?

단순히 서비스를 띄우는 것을 넘어, 사용자 경험을 지키는 '안전한 배포'를 위해 고민했던 세 가지 전략을 정리해 봅니다.


1. 롤링 배포 (Rolling Deployment): "달리는 자동차 바퀴 갈아 끼우기"

가장 기본적이고 익숙한 방식입니다. 구버전 인스턴스를 하나씩 내리고, 신버전 인스턴스를 하나씩 올리며 점진적으로 교체합니다.

  • 장점: 추가적인 인프라 비용이 거의 들지 않습니다. 설정이 비교적 간단합니다.
  • 단점: 배포 도중 구버전과 신버전이 공존하는 시간이 깁니다. 만약 신버전에 치명적인 버그가 있다면? 배포된 만큼의 사용자는 오류를 경험하게 됩니다. 롤백도 하나씩 되돌려야 하니 속 터집니다.

 

2. 블루/그린 배포 (Blue/Green Deployment): "똑같은 집 두 채 지어놓고 이사하기"

현재 운영 중인 환경(Blue)과 똑같은 환경(Green)에 신버전을 미리 배포합니다. 테스트가 끝나면 로드밸런서나 DNS가 가리키는 방향만 Green으로 '딸깍' 스위칭합니다.

  • 장점: 배포 속도가 매우 빠르고, 문제 발생 시 스위치만 다시 돌리면 되니 롤백이 즉각적입니다. 운영 환경 배포 전 확실한 사전 테스트가 가능합니다.
  • 단점: 인프라가 두 배로 필요하니 비용도 두 배입니다. Stateful한 서비스(DB 스키마 변경 등)가 포함되면 데이터 동기화 이슈가 복잡해집니다.

 

3. 카나리 배포 (Canary Deployment): "광산의 카나리아처럼, 먼저 간 보기"

과거 광부들이 유독가스를 감지하기 위해 카나리아(애완용 새)를 먼저 들여보냈던 것에서 유래했습니다. 전체 트래픽의 극히 일부(예: 5%)만 신버전으로 흘려보내 반응을 살핍니다. 문제가 없으면 트래픽 비중을 점차 늘려갑니다.

  • 장점: 리스크를 최소화할 수 있습니다. 실제 사용자 트래픽으로 신버전을 검증하므로 가장 안전합니다. A/B 테스트 용도로도 활용 가능합니다.
  • 단점: 트래픽을 정교하게 제어해야 하므로 구성이 복잡합니다. 

 

AWS 환경에서의 배포 전략 구성도


결론: 우리 팀의 선택은?

새벽의 악몽을 다시 겪고 싶지 않았던 우리 팀은 블루/그린 배포를 선택했습니다.

비용은 조금 더 들더라도, 트래픽 스위칭 한 번으로 즉시 롤백이 가능하다는 '안정성'이 무엇보다 중요했기 때문입니다.

물론 모든 서비스에 정답은 없습니다. 서비스의 중요도, 트래픽 규모, 인프라 예산에 맞춰 최적의 전략을 선택하는 것이 핵심입니다.

 

공유

댓글