1. 소프트웨어 배포 전략 개요
- 소프트웨어 배포 전략은 새로운 버전의 애플리케이션을 프로덕션 환경에 안전하게 출시하는 방법을 정의합니다.
- 각 전략은 복잡성, 리소스 요구사항, 위험 수준, 다운타임 등의 측면에서 서로 다른 특성을 가집니다.
- 비즈니스 요구사항, 애플리케이션 특성, 인프라 환경에 따라 적합한 배포 전략이 달라집니다.
정보
이 글에서는 단순한 전략부터 복잡한 전략까지 순서대로 살펴보고, 각 전략의 장단점과 적합한 상황을 비교 분석합니다.
2. 리크레이트 배포 (Recreate Deployment)
- 리크레이트 배포는 가장 단순한 배포 전략으로, '한 번에 모두 교체'하는 방식입니다.
- 현재 버전을 완전히 종료한 후 새 버전을 배포하는 방식으로 작동합니다.
2.1 작동 방식
- 현재 실행 중인 모든 인스턴스를 종료합니다.
- 새 버전을 배포합니다.
- 새 버전으로 서비스를 다시 시작합니다.
2.2 장점
- 구현이 매우 간단합니다.
- 추가 인프라가 필요하지 않습니다.
- 두 버전 간 호환성 문제가 발생하지 않습니다.
- 리소스를 효율적으로 사용합니다.
2.3 단점
- 서비스 다운타임이 불가피합니다.
- 롤백 시 또 다른 다운타임이 발생합니다.
- 규모가 큰 시스템에는 적합하지 않습니다.
2.4 적합한 상황
- 개발 또는 테스트 환경
- 다운타임이 허용되는 비중요 애플리케이션
- 자원이 제한된 환경
팁
리크레이트 배포는 단순성이 필요하고 일시적인 다운타임이 허용되는 소규모 프로젝트나 내부 도구에 적합합니다.
3. 롤링 배포 (Rolling Deployment)
- 롤링 배포는 서버를 점진적으로 하나씩 또는 작은 배치로 업데이트하는 방식입니다.
- 리크레이트 배포보다 복잡하지만, 다운타임을 최소화하거나 없앨 수 있습니다.
3.1 작동 방식
- 클러스터에서 서버 하나(또는 작은 그룹)를 서비스에서 제외합니다.
- 해당 서버에 새 버전을 배포 합니다.
- 서버를 다시 서비스에 포함시키고 정상 작동을 확인합니다.
- 모든 서버가 업데이트될 때까지 이 과정을 반복합니다.
3.2 장점
- 추가 하드웨어 없이 기존 인프라로 배포할 수 있습니다.
- 다운타임이 없거나 최소화됩니다.
- 리소스 사용이 최적화됩니다.
3.3 단점
- 배포 중에 여러 버전이 동시에 실행되므로 버전 간 호환성이 중요합니다.
- 전체 배포에 시간이 오래 걸릴 수 있습니다.
- 문제가 발견되면 롤백이 복잡할 수 있습니다.
3.4 적합한 상황
- 중간 규모의 애플리케이션
- 점진적인 변경이 필요한 경우
- 추가 인프라 리소스를 사용할 수 없는 경우
4. 블루-그린 배포 (Blue-Green Deployment)
- 블루-그린 배포는 두 개의 분리되었지만 동일한 프로덕션 환경을 유지하는 전략입니다.