무중단 배포(Zero-Downtime Deployment)

2025. 2. 17. 07:18IT/신기술

반응형

무중단 배포(Zero-Downtime Deployment)를 위해 리버스 프록시(Reverse Proxy)와 로드밸런싱(Load Balancing)을 효과적으로 활용하는 방법

무중단 배포(Zero-Downtime Deployment)


1. 서비스 중단 없이 애플리케이션의 새 버전을 배포하는 방식입니다. 이를 통해 사용자 경험에 영향을 주지 않고 지속적인 배포(CI/CD)를 구현할 수 있습니다.

2. 무중단 배포 전략

  • Blue-Green Deployment : 기존 프로덕션(Blue)과 새로운 버전(Green)을 함께 운영하다가 트래픽을 Green으로 전환.
  • Canary Deployment : 일부 사용자에게만 새 버전을 배포한 후 문제가 없으면 전체로 확장.
  • Rolling Deployment : 여러 서버를 순차적으로 업데이트.
  • A/B Testing : 서로 다른 버전의 애플리케이션을 특정 사용자 그룹에 노출하여 테스트.

리버스 프록시(Reverse Proxy)

  • 클라이언트 요청을 내부 서버로 전달하고, 서버의 응답을 클라이언트에 반환하는 프록시 서버입니다.
  • 대표 솔루션
    • Nginx: 고성능 HTTP 서버 및 리버스 프록시.
    • HAProxy: 고성능 TCP/HTTP 로드 밸런서.
    • Traefik: 마이크로서비스 환경에 적합한 다이나믹 프록시.
  • 리버스 프록시의 역할
    • 로드 밸런싱(Load Balancing)
    • SSL/TLS 종료(Offloading)
    • 캐싱(Caching)
    • 인증(Authentication)
    • 무중단 배포 지원(Zero-Downtime Deployment)
  • Nginx 예제 (Blue-Green Deployment)
http {
    upstream blue {
        server 192.168.1.10;
    }
    upstream green {
        server 192.168.1.20;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://blue; # 초기에는 blue 서버로 연결
        }
    }
}

 

  • 새로운 버전(Green)으로 트래픽 전환 시 proxy_pass http://green;으로 변경 후 nginx -s reload로 무중단 배포 수행.

 

로드밸런싱(Load Balancing)

  • 트래픽을 다수의 서버로 분산하여 성능과 가용성을 확보하는 기술입니다
  • 로드밸런싱 알고리즘
    • Round-Robin: 순차적으로 트래픽을 배분.
    • Least Connections: 가장 적은 연결 수를 가진 서버에 배분.
    • IP Hashing: 특정 클라이언트가 항상 동일한 서버에 연결되도록 설정.
    • Weighted Round-Robin: 서버의 성능에 가중치를 두어 트래픽을 배분.
  • HAProxy 예제 (Canary Deployment)
frontend http_front
    bind *:80
    default_backend app_servers

backend app_servers
    server app1 192.168.1.10:80 weight 5
    server app2 192.168.1.20:80 weight 1  # Canary 서버, 일부 트래픽만 전달

• app1에 83%(5/6) 트래픽 전달, app2에 17%(1/6) 트래픽 전달.

 

무중단 배포를 위한 리버스 프록시와 로드밸런서 구성 예시


Blue-Green Deployment + Nginx + HAProxy + CI/CD

  • CI/CD 파이프라인(Jenkins/GitHub Actions) : 새로운 버전의 애플리케이션 빌드 → Blue/Green 서버에 배포.
  • Nginx 리버스 프록시: / 요청을 현재 활성(Blue) 서버로 전달.
  • HAProxy 로드밸런서 : 다수의 Blue/Green 서버로 트래픽을 균등하게 분산.
  • 배포 단계
    • Green 서버에 새 버전 배포.
    • Canary 트래픽 전환 후 모니터링.
    • 이상 없으면 Nginx의 proxy_pass를 Green으로 변경.
    • Blue 서버를 유지보수 모드로 전환.

활용 전략

  • 무중단 배포 프로세스 자동화: CI/CD 도구(Jenkins, ArgoCD)와 연동.
  • 트래픽 모니터링 강화: Prometheus, Grafana, ELK Stack으로 배포 중 이상 탐지.
  • 헬스체크(Health Check) 설정: 애플리케이션 상태를 확인하여 비정상 노드 제외.
  • 피처 플래그(Feature Flag) 활용: 기능 단위로 활성화/비활성화 관리.
  • 블루/그린 전략 시 데이터베이스 변경 계획 수립: 스키마 변경은 트래픽 전환 전에 고려.


반응형