728x90
1. 롤링 배포 (Rolling Deployment)
설명:
- 점진적 업데이트: 전체 시스템을 동시에 업데이트하지 않고, 시스템의 일부 인스턴스에서만 새 버전을 점진적으로 배포합니다.
- 작업 방식: 기존 인스턴스를 하나씩 교체하면서 새로운 버전을 배포하고, 전체 시스템이 새 버전으로 완전히 전환될 때까지 계속됩니다.
장점:
- 무중단 배포: 전체 시스템이 항상 운영 중이므로 서비스 중단 없이 배포할 수 있습니다.
- 리소스 효율적: 한 번에 전체 시스템을 업데이트할 필요가 없으므로 리소스를 절약할 수 있습니다.
단점:
- 상태 불일치: 새로운 버전과 기존 버전이 동시에 운영되기 때문에, 버전 간의 호환성 문제를 주의해야 합니다.
- 문제 발견 시 롤백 어려움: 문제가 발생하면 이미 업데이트된 인스턴스와 업데이트되지 않은 인스턴스가 혼재하여 문제를 파악하고 해결하기 어려울 수 있습니다.
배포 :
- 시스템이 여러 인스턴스(예: 서버, 컨테이너)로 구성되어 있습니다.
- 기존 버전과 새 버전의 인스턴스가 번갈아가며 운영됩니다.
- 전체 시스템의 일부 인스턴스가 새 버전으로 업데이트되고, 나머지는 기존 버전을 유지합니다.
- 모든 인스턴스가 새 버전으로 교체될 때까지 계속됩니다.
시간 → | ||||
인스턴스 A(구) | 인스턴스 B(구) | 인스턴스 C(구) | 인스턴스 D(구) | |
1 | ↓ | ↓ | ↓ | ↓ |
인스턴스 A(신) | 인스턴스 B(구) | 인스턴스 C(구) | 인스턴스 D(구) | |
2 | ↓ | ↓ | ↓ | ↓ |
인스턴스 A(신) | 인스턴스 B(신) | 인스턴스 C(구) | 인스턴스 D(구) | |
3 | ↓ | ↓ | ↓ | ↓ |
인스턴스 A(신) | 인스턴스 B(신) | 인스턴스 C(신) | 인스턴스 D(구) | |
4 | ↓ | ↓ | ↓ | ↓ |
인스턴스 A(신) | 인스턴스 B(신) | 인스턴스 C(신) | 인스턴스 D(신) |
2. 블루-그린 배포 (Blue-Green Deployment)
설명:
- 두 개의 환경: 두 개의 환경(블루와 그린)을 운영하여, 한 환경에서는 현재 버전이 실행되고, 다른 환경에서는 새 버전이 실행됩니다.
- 트래픽 전환: 새 버전의 테스트가 완료된 후, 트래픽을 기존 환경에서 새 환경으로 전환하여 사용자에게 새 버전을 제공합니다.
장점:
- 간단한 롤백: 문제가 발생하면 트래픽을 기존 환경으로 쉽게 되돌릴 수 있어 롤백이 간단합니다.
- 테스트 용이: 새로운 버전이 완전히 테스트된 후 트래픽을 전환할 수 있어 안정성이 높습니다.
단점:
- 자원 소모: 두 개의 환경을 동시에 운영하므로 자원이 두 배로 소모될 수 있습니다.
- 배포 비용: 인프라를 두 배로 유지해야 하므로 비용이 증가할 수 있습니다.
배포:
- 블루 환경: 현재 운영 중인 버전의 시스템.
- 그린 환경: 새 버전이 배포된 테스트 환경.
- 트래픽이 블루 환경에서 그린 환경으로 전환됩니다.
- 문제 발생 시, 트래픽을 블루 환경으로 다시 전환할 수 있습니다.
초기 상태: | ||||
[ 블루 환경 (구 버전) ] | ← | 트래픽 | → | [ 사용자 ] |
배포 중: | ||||
[ 블루 환경 (구 버전) ] | ← | 일부 트래픽 | → | [ 사용자 ] |
[ 그린 환경 (신 버전) ] | ← | 일부 트래픽 | → | [ 사용자 ] |
배포 완료: | ||||
[ 그린 환경 (신 버전) ] | ← | 트래픽 | → | [ 사용자 ] |
3. 카나리 배포 (Canary Deployment)
설명:
- 부분 배포: 새 버전을 전체 사용자에게 배포하기 전에 소수의 사용자에게 먼저 배포하여 문제를 조기에 발견합니다.
- 점진적 확산: 문제가 없으면 점진적으로 배포 범위를 확대하여 전체 사용자에게 배포합니다.
장점:
- 위험 최소화: 전체 사용자에게 배포하기 전에 소수의 사용자로부터 피드백을 받을 수 있어 위험을 줄일 수 있습니다.
- 문제 조기 발견: 배포 후 문제가 발견되면 작은 사용자 그룹에만 영향을 미치므로 수정이 용이합니다.
단점:
- 복잡성 증가: 배포 프로세스가 복잡해질 수 있으며, 일부 사용자만 새 버전을 경험하게 됩니다.
- 데이터 불일치: 새 버전과 구 버전 간의 데이터 불일치 문제가 발생할 수 있습니다.
배포:
- 전체 시스템에 새 버전을 한 번에 배포하지 않고, 일부 사용자에게 먼저 배포합니다.
- 카나리 배포: 소수의 사용자에게 새 버전을 배포하여 문제를 조기에 발견합니다.
- 문제가 없으면 점진적으로 전체 사용자에게 배포합니다.
초기 상태: | ||
[ 구 버전 ] | ← | 전체 사용자 |
배포 중: | ||
[ 구 버전 ] | ← | 95% 사용자 |
[ 신 버전 ] | ← | 5% 사용자 |
배포 확장: | ||
[ 구 버전 ] | ← | 70% 사용자 |
[ 신 버전 ] | ← | 30% 사용자 |
배포 완료: | ||
[ 신 버전 ] | ← | 전체 사용자 |
728x90
'Server' 카테고리의 다른 글
[Redis] Pub/Sub (0) | 2024.03.01 |
---|---|
[Caching] 캐싱의 원리 와 목적 (0) | 2024.02.29 |
[Session] Spring Boot에서의 세션 관리 (0) | 2024.02.28 |
Session 이란? (0) | 2024.02.24 |
동시성 제어 (0) | 2024.02.18 |