무중단 배포 전략 (Blue-Green, Rolling 배포)
서비스 중단 없이 새로운 버전을 안전하게 배포하는 전략으로, 사용자 경험 향상과 비즈니스 손실 방지를 위해 필수적인 기술
무중단 배포가 필요한 이유
사용자 경험 향상: 언제든지 끊김 없는 서비스 제공
비즈니스 기회 손실 방지: 서비스 중단으로 인한 수익 감소 방지
잦은 배포와 빠른 피드백: DevOps 문화에서 하루 여러 번 배포 가능
블루-그린 (Blue-Green) 배포
개념
블루 환경: 현재 운영 중인 구버전 환경
그린 환경: 새로 배포될 신버전 환경
동일한 환경 2개 구성 후 라우터를 통해 트래픽을 한 번에 전환
배포 과정
신버전 배포: 그린 환경에 새로운 버전 배포
QA 및 테스트: 외부 트래픽 없는 환경에서 안정성 검증
트래픽 전환: 로드 밸런서 설정 변경으로 모든 트래픽 한 번에 전환
기존 버전 대기: 빠른 롤백을 위해 블루 환경 일정 시간 유지
장단점
장점
빠른 롤백 (라우터 설정만 변경)
안전한 테스트 (실제 운영 환경과 동일한 환경에서 테스트)
간단한 전환 과정
단점
높은 비용 (동일한 환경 2배 유지)
데이터베이스 호환성 문제
웜업 필요 (캐시, 커넥션 풀 등)
주의사항
데이터베이스 마이그레이션 - 확장-축소 패턴
확장: 신규 컬럼 추가 (null=True, blank=True)
데이터 이전: 백그라운드 작업으로 기존 데이터 업데이트
기능 활성화: 신규 필드 본격 사용
축소: 불필요한 컬럼이나 로직 제거
롤링 (Rolling) 배포
개념
전체 서버를 여러 그룹으로 나누어 한 그룹씩 점진적으로 신버전 배포
배포 과정
점진적 업데이트: 일부 서버를 로드 밸런서에서 제외
신버전 배포: 제외된 서버에 신버전 배포
서비스 투입: 헬스 체크 후 다시 로드 밸런서에 추가
반복: 모든 서버가 신버전으로 업데이트될 때까지 반복
장단점
장점
비용 효율적 (추가 인프라 불필요)
점진적 배포로 안정성 확보
가용성 유지 (일부 서버는 항상 요청 처리)
단점
복잡한 롤백 (다시 롤링 업데이트 필요)
버전 호환성 문제 (구버전과 신버전 공존)
긴 배포 시간
주의사항
API 하위 호환성: 필드 삭제/변경 시 신중히 고려
세션 클러스터링: Redis, Memcached 등 중앙 집중형 세션 스토어 사용
헬스 체크: DB 커넥션, 외부 서비스 연결 등 정교한 검증 로직
배포 전략 비교
롤백 속도
매우 빠름
느리고 복잡
인프라 비용
높음 (2배)
낮음
배포 리스크
낮음
중간
배포 중 버전 상태
단일 버전
두 버전 공존
적합한 환경
장애가 치명적이고 빠른 롤백 필요 시
일반적인 웹 서비스, 비용 효율성 중요 시
카나리 배포
신버전을 아주 작은 일부 트래픽(1~5%)에만 먼저 노출시켜 실제 사용자 반응을 확인 후 점진적으로 트래픽 확대하는 방식
Last updated
