[backend] 무중단 배포

alirz-pixel·2022년 9월 1일
0

backend

목록 보기
2/2

중단 배포 및 다운 타임


위의 사전처럼 새로 개발한 V2 버전을 배포하기 위해선 먼저 실행 중인 V1 버전의 프로세스를 종료해야 한다.

로딩 과정을 거치고 V2 버전이 정상적으로 실행되면 유저가 다시 정상적으로 서비스를 이용할 수 있게된다.

위와 같은 배포 방식을 "중단 배포"라고 하며, 유저가 서비스를 이용할 수 없는 시간을 "다운 타임"이라고 한다.

무중단 배포

중단 배포의 경우, 새로운 버전으로 체인지하기까지 유저가 서비스를 이용할 수 없기 때문에(다운타임) 이 방식은 피하는 것이 좋다.

그래서 서비스가 중단되지 않은 상태로(Zero-downtime), 새로운 버전을 유저들에게 배포하기 위해 무중단 배포를 사용한다.

무중단 배포의 경우, 2대 이상의 서버가 확대되어야 하며 여러 방식으로 구현할 수 있다.

롤링 배포

방식 1

인스턴스를 하나 추가하고, 새로운 버전을 실행한다.
그 후, 기존 구버전 어플리케이션이 실행되는 인스턴스를 하나 줄인다.

방식 2

구버전이 실행되고 있는 서버 하나를 로드밸런서에서 떼어낸다.
이 상태에서 해당 서버의 어플리케이션을 V2로 교체한다.

장단점

장점

  1. 많은 오케스트레이션 도구에서 지원하여 간편하다.
  2. 많은 서버 자원을 확보하지 않아도 무중단 배포가 가능하다.

단점

  1. 방식 2의 경우, 배포 도중에 인스턴스 수가 줄어들기 때문에 나머지 서버가 처리하는 트래픽의 양이 늘어나게 된다.
  2. 사용자에게 구버전과 신버전의 어플리케이션이 동시에 서비스되기 때문에 호환성 문제가 발생할 수 있다.

Blue/Green 배포

방식

Blue와 Green 서버를 동시에 나란히 구성해둔 상태로 배포 시점에 로드 밸런서가 트래픽을 Blue에서 Green으로 일제히 전환시키는 방식

장단점

장점

롤링 배포와 다르게 모든 트래픽을 한번에 새로운 버전으로 옮기기 때문에 호환성 문제가 발생하지 않는다.

단점

실제 운영에 필요한 서버 리소스 대비 2배의 리소스를 확보해야 한다.

카나리 배포

방식

소수 인원에 대해서만 트래픽을 새로운 버전에 옮겨둔 상태에서 서비스를 운영한다.
새로운 버전에 이상이 없다고 판단되면, 모든 트래픽을 신규 버전으로 옮긴다.

장단점

장점

새로운 버전으로 인한 위험을 최소화할 수 있다.

단점

롤링 배포와 마찬가지로 신/구 버전의 애플리케이션이 동시에 트래픽을 감당하므로 호환성 문제가 발생할 수 있다.

Reference

https://hudi.blog/zero-downtime-deployment/

0개의 댓글