프로젝트를 배포하는 여러 방법이 있습니다.
하지만 보통 사용자들이 사용하는 서비스들은 무중단 배포를 하는 곳이 많다는 것도 사실입니다.
오늘은 무중단 배포에 대해서 알아보겠습니다.
무중단 배포
무중단 배포는 애플리케이션을 업데이트하거나 새로운 버전을 배포할 때, 서비스 중단 없이 연속적으로 시스템을 운영하는 배포 방식을 말합니다.
1. 블루-그린 배포
- 블루-그린 배포는 두 개의 환경(블루, 그린)을 설정하여 배포하는 방식입니다.
1) 블루 : 현재 애플리케이션이 실행되고 있는 기존의 환경
2) 그린 : 새로운 버전의 애플리케이션을 배포하는 환경
- 새로운 버전이 그린 환경에 배포되고, 테스트를 완료하면, 로드 밸런서를 통해 트래픽을 블루에서 그린 환경으로 전환합니다.
- 문제가 발생할 경우, 다시 블루 환경으로 쉽게 롤백할 수 있습니다.
2. 카나리 배포
- 카나리 배포는 새로운 버전을 전체 인스턴스에 배포하기 전에 일부 소수의 인스턴스에만 배포하여 테스트하는 방식입니다.
- 새로운 버전이 일부 인스턴스에서 성공적으로 작동하는지 확인한 후, 점차적으로 다른 인스턴스에도 배포를 확장합니다.
- 이처럼 비율을 점차 늘려가는 방식을 통해 전체 시스템에 영향을 미치지 않도록 할 수 있습니다.
3. 롤링 업데이트
- 롤링 업데이트는 기존 서버 인스턴스를 순차적으로 하나씩 새로운 버전으로 교체하는 방식입니다.
- 배포 도중에도 서비스는 계속 제공되며, 각 인스턴스가 순차적으로 새로운 버전으로 교체됩니다.
- 특정 수의 인스턴스가 새 버전으로 전환되면 나머지 인스턴스도 같은 방식으로 교체됩니다.
각각의 업데이트 방식 장단점 정리
업데이트 방식 | 장점 | 단점 |
블루-그린 | 배포 속도가 빠름 (한 번에 배포 완료) | 두 배의 인프라가 필요하여 비용이 증가 |
롤백이 간단함 (트래픽을 이전 버전으로 즉시 전환 가능) | 대규모 배포에서는 다운타임 발생 가능 | |
버전 간 완벽한 격리로 안전성 증가 | 인프라 리소스 관리가 복잡함 | |
카나리 | 위험 관리 가능 (소수 사용자에게 먼저 배포하여 문제 발생 시 빠르게 롤백) |
모든 배포 단계에서 모니터링 및 관찰이 필요 -> 운영 복잡도 증가 |
트래픽 분산을 통해 배포 중 오류 탐지 가능 | 배포 시간이 상대적으로 길어질 수 있음 | |
롤백이 용이 (문제 발생시 이전 버전으로 즉시 전환 가능) | 인프라 리소스가 두 배로 필요할 수 있음 | |
롤링 | 인프라 리소스 최적화 (새로운 버전이 점진적 적용 -> 추가 인프라 필요 x) |
전체 배포 완료 시까지 시간이 오래 걸릴 수 있음 |
최소한의 다운타임 (서비스 연속성 유지) | 중간에 문제가 발생하면 특정 인스턴스에만 문제 발생 가능 -> 복구 복잡해짐 | |
적은 비용으로 운영 | 롤백 시 이미 배포된 인스턴스에 문제가 생길수 있어 롤백이 복잡함 |
'Daily' 카테고리의 다른 글
CDC(Change Data Capture)란? (0) | 2024.12.09 |
---|---|
모놀리식 프로젝트 DDD 패턴으로 전환하기 (1) | 2024.11.10 |
[Spring Boot] 동시성 제어 (3) | 2024.10.12 |
Spring Boot - 이메일(SMTP)비동기 전송 (0) | 2024.09.29 |
VMware Ubuntu가상환경 Jenkins 설치 (3) | 2024.09.02 |