본문 바로가기
카테고리 없음

제로부터 DevOps까지 12편 - 블루그린·카나리·롤링 배포 실습

by 타임 플레그 2025. 5. 29.
반응형

릴리즈 전략 완전 정복: 블루그린·카나리·롤링 배포 실습

“위험 없이, 중단 없이, 유연하게 배포하는 법.”
운영 환경에서 배포는 가장 민감한 순간입니다. 이 순간을 안전하게 넘기기 위해, 다양한 릴리즈 전략을 사용할 수 있습니다. 이번 편에서는 블루그린, 카나리, 롤링 배포 전략을 실습 중심으로 정리해 봅니다.


✅ 왜 릴리즈 전략이 중요한가?

단순히 docker-compose down && up으로 배포하면, 서비스가 잠깐이라도 멈추게 됩니다.
사용자 입장에서는 “장애”로 느껴질 수 있고, 트래픽이 많은 시간이라면 금전적 손해로 이어질 수도 있습니다.

릴리즈 전략은 운영 안정성을 지키기 위한 핵심 무기입니다.

🚨 “잘못된 코드가 배포되면?” → 즉시 롤백할 수 있어야 함
💡 “절반만 먼저 써보게 하고 싶다면?” → 트래픽을 나눌 수 있어야 함


🛠️ 사전 준비: 실습을 위한 환경 세팅

릴리즈 전략을 실습하기 위해 다음 환경이 준비되어 있어야 합니다:

  • Docker 및 docker-compose 설치 완료
  • 최소 2개의 서비스 버전 (예: v1, v2) 준비
  • Nginx 리버스 프록시 설정 가능 상태
  • 테스트용 트래픽 확인용 API 포함

📦 my-app:v1, my-app:v2는 기능이 명확히 구분되어 있어야 테스트가 쉬워집니다.


🔵 블루그린 배포 (Blue-Green Deployment)

개념:

  • 기존 버전(Blue)을 유지하면서 새 버전(Green)을 별도로 배포
  • 모든 테스트가 끝난 후 트래픽을 Green으로 전환
  • 문제가 생기면 다시 Blue로 즉시 롤백 가능

장점:

  • 완전한 무중단 배포 가능
  • 명확한 롤백 경로 존재

단점:

  • 인프라 자원이 2배로 필요 (Blue & Green 동시에 유지)

Docker 실습 예시:

services:
  web-blue:
    image: my-app:v1
    ports:
      - "8081:80"

  web-green:
    image: my-app:v2
    ports:
      - "8082:80"

Nginx 리버스 프록시 전환 예시:

location / {
  proxy_pass http://localhost:8081;  # → 8082로 교체하여 전환
}

✅ 실습 Tip: 전환 전후 각각 curl로 결과 확인 (curl localhost:8081, 8082)


🟡 카나리 배포 (Canary Release)

개념:

  • 소수 사용자(예: 10%)에게만 새로운 버전을 먼저 배포
  • 문제가 없으면 점진적으로 전체로 확장

장점:

  • 실서비스에서의 A/B 테스트 가능
  • 문제 발생 시 피해 범위 최소화

단점:

  • 로드밸런서, 트래픽 라우팅 설정 복잡

Docker + Nginx 실습:

upstream app {
  server web-v1 weight=9;
  server web-v2 weight=1;
}
server {
  location / {
    proxy_pass http://app;
  }
}

추가 팁: 일정 비율로 트래픽 분산되는지 테스트 시 curl 명령어 반복 사용

⚠️ Nginx는 기본적으로 세션 유지가 없기 때문에 무작위 분산됨에 유의


🔁 롤링 배포 (Rolling Deployment)

개념:

  • 전체 서버 중 일부만 업데이트하고, 점차 다른 서버도 순차적으로 교체
  • 항상 일부 인스턴스는 살아있기 때문에 중단 없음

장점:

  • 리소스 절약
  • 점진적 배포로 안정성 확보

단점:

  • 상태 불일치나 세션 문제 주의 필요

실습 개념:

  1. Nginx upstream 설정으로 트래픽 분산
  2. 하나의 인스턴스를 내리고 새로운 버전으로 교체
  3. 트래픽 확인 후 다음 인스턴스 교체 반복

🧪 상태 모니터링을 위해 watch docker ps + curl 병행 권장


🎯 A/B 테스트와의 차이점은?

  • 카나리 배포: 품질 안정성을 확인하기 위한 전환 테스트
  • A/B 테스트: UI/UX, 기능 효과 등 사용자 반응을 비교하기 위한 마케팅 도구

🎓 목적이 “성능 확인”이냐 “사용자 선호 파악”이냐의 차이


🧭 회고: 릴리즈에도 전략이 필요하다

이제 우리는 단순히 “배포하는 법”이 아니라,
**“어떻게 배포해야 안정적인가”**를 고민할 수 있는 수준에 도달했습니다.

릴리즈 전략은 DevOps의 꽃이며,
운영 안정성과 사용자 신뢰를 지키는 핵심 역량입니다.

💡 전략 없는 배포는 도박입니다. 전략 있는 배포는 실력입니다.


🔮 다음 편 예고: 운영 자동화와 GitOps

릴리즈가 안정적으로 이루어졌다면, 이제는 운영 자동화를 고민할 시간입니다.
다음 편에서는 Helm, ArgoCD, GitOps 구조를 통해 운영 자동화를 구현하는 방법을 소개합니다.


⚙️ 이제 배포는 단순한 명령어가 아니라, 전략과 설계의 결과입니다.
릴리즈 전략은 DevOps 실전 운영의 핵심입니다.

반응형