AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

블루-그린 배포: 코드 배포를 무중단으로 수행하는 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

- 개발자: CI/CD 파이프라인 구축을 위한 전략 이해

- DevOps 엔지니어: 무중단 배포와 롤백 기술 적용

- 시스템 관리자: 인프라 자원 최적화 및 확장성 고려

- 난이도: 중급 이상 (IaC, 컨테이너 오케스트레이션 기술 필요)

핵심 요약

  • 무중단 배포 : Zero Downtime을 달성하는 데 필수적인 블루-그린 배포 전략
  • 즉시 롤백 : kubectl rollout 또는 AWS CodeDeploy로 5초 내 복구 가능
  • 테스트 환경 분리 : Green 환경에서 생산 유사 환경에서의 성능 벤치마크 수행
  • 비용 관리 : Blue 환경에서 저사양 인스턴스 사용으로 비용 절감

섹션별 세부 요약

1. 블루-그린 배포의 원리

  • 두 환경 병렬 운영 :

- Blue: 현재 운영 중인 프로덕션 환경

- Green: 새 버전이 배포되는 환경

  • 배포 단계:
  1. Green 환경에 새 버전 배포 (kubectl apply -f k8s/green-deployment.yaml)
  2. Green 환경에서 스모크 테스트e2e 테스트 수행
  3. 로드 밸런서(AWS ALB, NGINX)를 Green으로 전환
  4. 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 환경에서 저사양 인스턴스 사용

- 자동화를 통해 배포 프로세스를 수동 작업 제거하고 신뢰성 향상