무중단 배포 전략 (Blue-Green, Rolling 배포)

서비스 중단 없이 새로운 버전을 안전하게 배포하는 전략으로, 사용자 경험 향상과 비즈니스 손실 방지를 위해 필수적인 기술

무중단 배포가 필요한 이유

  • 사용자 경험 향상: 언제든지 끊김 없는 서비스 제공

  • 비즈니스 기회 손실 방지: 서비스 중단으로 인한 수익 감소 방지

  • 잦은 배포와 빠른 피드백: DevOps 문화에서 하루 여러 번 배포 가능

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

개념

  • 블루 환경: 현재 운영 중인 구버전 환경

  • 그린 환경: 새로 배포될 신버전 환경

  • 동일한 환경 2개 구성 후 라우터를 통해 트래픽을 한 번에 전환

배포 과정

  1. 신버전 배포: 그린 환경에 새로운 버전 배포

  2. QA 및 테스트: 외부 트래픽 없는 환경에서 안정성 검증

  3. 트래픽 전환: 로드 밸런서 설정 변경으로 모든 트래픽 한 번에 전환

  4. 기존 버전 대기: 빠른 롤백을 위해 블루 환경 일정 시간 유지

장단점

장점

  • 빠른 롤백 (라우터 설정만 변경)

  • 안전한 테스트 (실제 운영 환경과 동일한 환경에서 테스트)

  • 간단한 전환 과정

단점

  • 높은 비용 (동일한 환경 2배 유지)

  • 데이터베이스 호환성 문제

  • 웜업 필요 (캐시, 커넥션 풀 등)

주의사항

데이터베이스 마이그레이션 - 확장-축소 패턴

  1. 확장: 신규 컬럼 추가 (null=True, blank=True)

  2. 데이터 이전: 백그라운드 작업으로 기존 데이터 업데이트

  3. 기능 활성화: 신규 필드 본격 사용

  4. 축소: 불필요한 컬럼이나 로직 제거

롤링 (Rolling) 배포

개념

전체 서버를 여러 그룹으로 나누어 한 그룹씩 점진적으로 신버전 배포

배포 과정

  1. 점진적 업데이트: 일부 서버를 로드 밸런서에서 제외

  2. 신버전 배포: 제외된 서버에 신버전 배포

  3. 서비스 투입: 헬스 체크 후 다시 로드 밸런서에 추가

  4. 반복: 모든 서버가 신버전으로 업데이트될 때까지 반복

장단점

장점

  • 비용 효율적 (추가 인프라 불필요)

  • 점진적 배포로 안정성 확보

  • 가용성 유지 (일부 서버는 항상 요청 처리)

단점

  • 복잡한 롤백 (다시 롤링 업데이트 필요)

  • 버전 호환성 문제 (구버전과 신버전 공존)

  • 긴 배포 시간

주의사항

  • API 하위 호환성: 필드 삭제/변경 시 신중히 고려

  • 세션 클러스터링: Redis, Memcached 등 중앙 집중형 세션 스토어 사용

  • 헬스 체크: DB 커넥션, 외부 서비스 연결 등 정교한 검증 로직

배포 전략 비교

항목
블루-그린
롤링

롤백 속도

매우 빠름

느리고 복잡

인프라 비용

높음 (2배)

낮음

배포 리스크

낮음

중간

배포 중 버전 상태

단일 버전

두 버전 공존

적합한 환경

장애가 치명적이고 빠른 롤백 필요 시

일반적인 웹 서비스, 비용 효율성 중요 시

카나리 배포

신버전을 아주 작은 일부 트래픽(1~5%)에만 먼저 노출시켜 실제 사용자 반응을 확인 후 점진적으로 트래픽 확대하는 방식

Last updated