블루-그린 배포
정의 대기 중입니다.
블루-그린 배포는 새로운 애플리케이션 버전을 배포할 때 발생하는 다운타임을 최소화하고 위험을 줄이기 위해 설계된 소프트웨어 릴리스 전략입니다. 이 접근 방식은 '블루'와 '그린'으로 불리는 두 개의 동일한 프로덕션 환경을 유지하는 것을 포함합니다.
언제든지 한 환경(예: 블루)은 현재 라이브 애플리케이션 버전을 실행하여 모든 프로덕션 트래픽을 처리합니다. 다른 환경(그린)은 유휴 상태로 유지되거나 테스트에 사용됩니다. 애플리케이션의 새 버전이 릴리스 준비가 되면 유휴 환경(그린)에 배포됩니다.
새 버전이 그린 환경에 배포되고 철저히 테스트된 후(통합 테스트, 성능 테스트, 그리고 소수의 사용자 또는 내부 직원을 대상으로 한 스모크 테스트 포함), 트래픽은 블루 환경에서 그린 환경으로 전환됩니다. 이 전환은 일반적으로 로드 밸런서 또는 라우터에 의해 관리되며, 모든 들어오는 요청을 그린 환경으로 전달하고 블루 환경은 유휴 상태가 됩니다.
주요 이점은 배포 중 거의 제로에 가까운 다운타임입니다. 전환 후 그린 환경에서 새 버전에 문제가 발생하면 트래픽을 즉시 블루 환경으로 다시 전환하여 신속한 롤백 메커니즘을 제공할 수 있습니다. 블루 환경은 다음 업데이트를 배포하는 데 사용되거나 그린 환경과 일치하도록 업데이트될 수 있습니다.
단점으로는 두 개의 동일한 프로덕션 환경을 유지해야 하므로 인프라 비용과 복잡성이 두 배가 됩니다. 특히 데이터베이스 스키마나 상태와 관련하여 두 환경 간의 일관성을 보장하는 것이 어려울 수 있습니다. 롤백은 이전 버전이 안정적인 경우에만 효과적이므로 결함 있는 코드를 배포하는 것을 방지하기 위해 스테이징 환경에서의 철저한 테스트가 중요합니다.
graph LR
Center["블루-그린 배포"]:::main
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5살도 이해할 수 있게 설명
연극을 위한 두 개의 똑같은 무대가 있다고 상상해 보세요. 배우들은 블루 무대에서 공연 중입니다. 다음 막이 준비되면, 블루 무대에서 공연이 계속되는 동안 그린 무대에 완벽하게 준비합니다. 그런 다음, 새 막을 위해 관객의 주의를 즉시 그린 무대로 옮기고, 블루 무대는 백업으로 준비된 상태로 둡니다.
🤓 Expert Deep Dive
블루-그린 배포는 점진적 롤아웃보다는 인프라 중복에 초점을 맞춘 카나리 릴리스 또는 롤링 배포의 한 형태입니다. 핵심 메커니즘은 외부 트래픽 라우팅(예: DNS, 로드 밸런서 구성, 리버스 프록시)을 사용하여 두 개의 동일한 서버 풀 간에 트래픽을 전환하는 데 의존합니다. 데이터베이스 관리는 상당한 과제를 제시합니다. 전략에는 두 환경 모두에서 액세스할 수 있는 단일 데이터베이스 인스턴스를 유지하는 것(스키마 변경이 하위 호환되지 않는 경우 호환성 문제 위험), 또는 신중한 동기화 및 전환 중 잠재적인 데이터 마이그레이션 단계를 포함한 데이터베이스 복제를 사용하는 것이 포함됩니다. 상태 저장 애플리케이션의 경우 상태 관리는 원활한 전환을 보장하기 위해 신중한 고려가 필요합니다. 롤백 기능은 애플리케이션 코드 오류에 매우 효과적이지만, 데이터 손상 또는 영구적인 인프라 오구성 문제에는 덜 효과적입니다. 중복 인프라를 유지하는 데 드는 비용 오버헤드는 고가용성 및 배포 위험 감소의 비즈니스 가치와 비교하여 평가해야 합니다.