들어가기
현재 참여하고 있는 스터디 프로젝트에 가장 적합한 배포 방법을 적용하기 위해서 무중단 배포 전략에 대해 공부를 했다.
먼저 배포 방법에 대해 알아보고, 무중단 배포의 3가지 전략에 대해 살펴보자!

✔️ 중단 배포와 무중단 배포
배포 방법에는 중단 배포와 무중단 배포가 있다.
중단 배포란?
서버 한대로 서비스를 운영한다고 예를 들어보자.
현재서버에는 V1 버전의 서비스가 실행되고 있다. V1 버전에 기능을 추가하고 싶어서 V2 버전의 서비스를 개발했다.
이제 모든 사용자가 V2 버전의 서비스를 사용할 수 있도록 배포를 해야 한다.
새로운 버전의 배포 과정은 다음과 같다.
1. 개발된 V2 버전 빌드를 서버에 다운로드한다.
2. V2 버전을 실행하기 위해 V1 버전의 프로세스를 종료한다. (V1과 V2는 동일한 포트를 사용하기 때문)
3. 2번 시점을 기준으로 사용자는 서비스를 이용할 수 없게 된다.
4. V2 버전 빌드를 실행하여 로딩 과정을 거친다.
5. V2 버전이 배포가 되면서 사용자들은 서비스를 다시 이용할 수 있게 된다.
V1 버전이 종료되고, V2 버전이 실행되기까지 서비스가 중단되는 위 배포 방식을 중단 배포라고 하며,
서비스가 종료된 후 재시작까지의 시간을 다운 타임(DownTime)이라고 한다.
무중단 배포란?
무중단 배포는 말 그대로 서비스가 중단되지 않은 상태(Zero-DownTime)로 새로운 버전의 서비스를 배포하는 방법이다.
기존의 중단 배포 문제점을 해결하기 위해 나온 방법으로, 무중단 배포를 통해 사용자가 서비스를 이용하는데 문제없이 배포를 할 수 있게 되었다.
무중단 배포 방법에는 크게 3가지가 존재한다. 하나씩 차근차근 알아보자!
1. 롤링 (Rolling)
2. 블루/그린 (Blue/Green)
3. 카나리 (Canary)
✔️ 롤링 (Rolling)
롤링(Rolling) 배포는 다중 인스턴스를 사용할 때 새 버전의 서비스를 점진적으로 배포하는 방법으로, 무중단 배포의 가장 기본적인 방법이다.
서비스 중인 인스턴스 하나를 로드 밸런서에서 떼어내어 라우팅 하지 않도록 설정한 후, 새로운 버전의 서비스로 교체하고 다시 라우팅 하도록 한다.
이 과정을 반복해서 모든 인스턴스에 순차적으로 새 버전의 서비스를 배포한다.
장점
- 롤링 배포는 다양한 오케스트레이션 도구(K8S, Elastic Beanstalk 등)가 지원되어 간편하다.
- 많은 서버 자원을 확보하지 않아도 무중단 배포가 가능하다.
- 순차적으로 새로운 버전이 배포되므로, 배포로 인한 위험성이 줄어든다.
단점
- 배포가 진행될 때 서비스 중인 인스턴스 수가 줄어들어 각각의 서버에 트래픽이 집중될 수 있다.
- 구버전과 신버전의 애플리케이션이 동시에 서비스되기 때문에 호환성 문제가 발생될 수 있다.
롤링 배포 특성상, 단일 인스턴스를 사용하는 서비스에는 적합하지 않은 방법인 것 같다...!
✔️ 블루 / 그린 (Blue / Green)
블루(Blue)는 구버전(현재 서비스 중인 인스턴스), 그린(Green)은 신버전을 의미한다.
블루/그린 배포는 서비스 중인 구버전과 동일하게 신버전 인스턴스를 구성한 후, 로드 밸런서를 통해 모든 트래픽을 한 번에 신버전 인스턴스로 전환하는 방식이다.
장점
- 롤링 배포와 달리 한 번에 신버전으로 모든 트래픽을 전환하기 때문에 호환성 문제가 발생되지 않는다.
- 구버전의 인스턴스가 남아있기 때문에 문제 발생 시 빠른 롤백(Rollback)이 가능하다.
단점
- 시스템 자원이 2배로 필요하다.
✔️ 카나리 (Canary)
옛날 광부들은 유독 가스에 민감한 카나리아 새를 이용해서 가스 누출 위험을 감지했다.
여기서 유래된 카나리 배포 또한 잠재적 문제 상황을 미리 발견할 수 있는 배포 전략이다.
카나리(Canary) 배포는 특정 서버에 먼저 배포를 한 뒤, 오류가 발생되는지 확인하고 문제가 없다고 판단되면 모든 서버에 새로운 버전을 배포하는 방식이다.
블루 / 그린 배포와 비슷해 보이지만, 카나리 배포는 한 번에 트래픽을 전환하는 것이 아닌 단계적으로 트래픽을 전환한다.
장점
- A/B 테스트가 가능하다.
- 새로운 버전으로 인한 위험을 최소화할 수 있다.
단점
- 롤링 배포와 동일하게 구버전과 신버전이 동시에 존재하므로 호환성 문제가 발생될 수 있다.
출처
긴 글 읽어주셔서 감사합니다 🍀
잘못 작성된 내용은 피드백 주시면 반영하겠습니다 😎
'ETC' 카테고리의 다른 글
[디자인 패턴] 옵저버 패턴(Observer Pattern)이란? (3) | 2024.10.27 |
---|---|
[Linux] Cron(크론)이란? (0) | 2024.04.04 |
[Github] Github Action이란? (0) | 2024.03.26 |
[JIRA] Scrum 보드 활용하기 (0) | 2024.01.02 |