블루-그린 배포: 코드 배포를 무중단으로 수행하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 개발자: CI/CD 파이프라인 구축을 위한 전략 이해
- DevOps 엔지니어: 무중단 배포와 롤백 기술 적용
- 시스템 관리자: 인프라 자원 최적화 및 확장성 고려
- 난이도: 중급 이상 (IaC, 컨테이너 오케스트레이션 기술 필요)
핵심 요약
- 무중단 배포 :
Zero Downtime
을 달성하는 데 필수적인 블루-그린 배포 전략 - 즉시 롤백 :
kubectl rollout
또는AWS CodeDeploy
로 5초 내 복구 가능 - 테스트 환경 분리 :
Green
환경에서 생산 유사 환경에서의 성능 벤치마크 수행 - 비용 관리 :
Blue
환경에서 저사양 인스턴스 사용으로 비용 절감
섹션별 세부 요약
1. 블루-그린 배포의 원리
- 두 환경 병렬 운영 :
- Blue: 현재 운영 중인 프로덕션 환경
- Green: 새 버전이 배포되는 환경
- 배포 단계:
Green
환경에 새 버전 배포 (kubectl apply -f k8s/green-deployment.yaml
)Green
환경에서 스모크 테스트 및 e2e 테스트 수행- 로드 밸런서(
AWS ALB
,NGINX
)를Green
으로 전환 Blue
환경에서 메트릭 모니터링 및 롤백 준비
2. 주요 도전 과제 및 해결 방안
- 데이터베이스 마이그레이션:
- ❌ 스키마 변경 시 오류 발생 가능
- ✅ 역방향 호환성 있는 마이그레이션 먼저 수행
- 세션 지속성:
- ❌ Blue
에서 로그인한 사용자가 Green
으로 전환 시 세션 손실
- ✅ Redis
또는 공유 데이터베이스 사용
- 비용 증가:
- ❌ 두 환경 운영 시 비용 증가
- ✅ Blue
환경에서 저사양 인스턴스 사용 (비수기 시간)
3. 도구 및 플랫폼 활용
- IaC 도구:
Terraform
또는AWS CloudFormation
으로Green
환경 복제 - Kubernetes:
kubectl rollout
또는Istio
로 트래픽 분산 관리 - AWS:
AWS CodeDeploy
의 내장 블루-그린 배포 기능 활용 - 오픈소스:
Spinnaker
으로 고급 배포 전략 적용
4. 실무 적용 팁
- 점진적 도입: 비핵심 서비스부터 블루-그린 배포 시작
- 자동화 강화: CI/CD 파이프라인(
Jenkins
,GitLab CI
)에 배포 단계 통합 - 모니터링 필수:
Prometheus
또는CloudWatch
으로 지연 시간, 에러율 실시간 추적
결론
- 실무 적용 팁:
- kubectl rollout
또는 AWS CodeDeploy
로 즉시 롤백이 가능한 환경 구축
- Green
환경에서 e2e 테스트 및 성능 벤치마크 수행 후 배포
- 비용 관리를 위해 Blue
환경에서 저사양 인스턴스 사용
- 자동화를 통해 배포 프로세스를 수동 작업 제거하고 신뢰성 향상