무중단 배포란?
무중단 배포(Zero-Downtime Deployment) 는 서비스에 다운 타임이 발생하지 않으면서, 새로운 버전의 애플리케이션을 서버에 배포하는 것을 의미. 무중단 배포 패턴에는 대표적으로 순차적으로 배포하는 롤링 배포, 전체 서버를 통째로 바꾸는 블루/그린 배포, 트래픽을 순차적으로 이동시키는 카나리 배포가 존재한다.
롤링 배포(Roling Deployment)
롤링 배포(Roling Deployment) 는 서버를 한 대씩 순차적으로 업데이트하는 가장 기본적인 방식. 특정 시점에는 두 가지 버전이 공존하기 때문에 새로운 버전은 기존 버전 기능을 지원하는 등 하위 호환성(Backward Compatibility) 에 신경을 써야 한다. 롤링 배포는 새로운 버전을 배포하기 위해서 새로운 서버를 생성하지 않는다. 배포가 진행 중인 서버는 요청 처리가 불가하기 때문에 다른 서버에 전달되는 트래픽이 증가할 수 있다.
배포를 위해 새로운 서버를 생성하는 비용을 감수하기 어려운 경우, 롤링 배포를 선택할 수 있다. 또한, 서버 API 구간에서 버그가 생겼을 때 이것을 수정하고 개발 서버에서 충분히 테스트한 이후 상용에 올려보고 싶을 때 롤링 배포가 유용할 수 있다. 서버 10대 중 1대만 버그를 수정해서 배포하고 디버그 레벨로 로깅을 하면서 수정한 버그가 해결됐는지 확인한다. 만약 실제 상용 서버에서도 문제가 없다면 1대씩 순차적으로 롤링 배포를 진행한다.
블루/그린 배포(Blue/Green Deployment)
블루/그린 배포(Blue/Green Deployment) 는 기존의 서버와 동일한 스펙과 사이즈의 서버를 미리 준비하고, 신규 버전을 배포한 이후에 기존 서버는 폐기하고 트래픽을 신규 버전의 서버로 이전 시키는 방법. 블루/그린 배포의 경우에는 기존의 버전을 가지고 있기(폐기 이전이라 가정) 때문에 롤백을 빠르게 수행할 수 있다. 하지만, 배포 과정에서 새로운 서버를 미리 준비해야 한다는 점에서 비용이 발생할 수 있다.
대규모 업데이트가 있을 때는 블루/그린 배포를 선택할 수 있다. 예를 들어 전면적으로 기술 부채가 해결되거나 중요한 변화가 있을 때, 비용을 감수하고 블루/그린 배포를 채택하는 것이 유용할 수 있다.
카나리 배포(Canary Deployment)
카나리 배포(Canary Deployment) 는 기존 버전의 서버와 새로운 버전의 서버들을 구성한 이후, 전체 트래픽의 퍼센티지로 관리하는 방법. 예를 들어 트래픽을 기존 서버 70퍼, 신규 서버 30퍼로 나누고 점점 신규 서버로 트래픽을 보내어 나중엔 신규 서버가 100퍼센트가 되어 배포가 완료된다. 롤링 배포처럼 특정 시점에 다른 두 버전의 서버가 공존하기 때문에 하위 호환성을 신경 써야 한다.
카나리 배포는 통계적으로 무언가 확인하고 싶은 것 (오류율, 성능)이 있을 때, 혹은 A/B 테스트를 하고 싶을 때 채택할 수 있다.
- 참고
https://tecoble.techcourse.co.kr/post/2022-11-01-blue-green-deployment/
'개발 > ETC' 카테고리의 다른 글
CORS 알아보기 (59) | 2025.01.10 |
---|---|
git 브랜치 생성, 전환하기 (40) | 2025.01.08 |
DB 동시성 제어하는 방법 알아보기 (75) | 2025.01.06 |
스레드, 프로세스, 코어 알아보기 (56) | 2025.01.03 |
단위 테스트, 통합 테스트 차이 (72) | 2025.01.02 |