본문 바로가기
infra

무중단 배포 프로세스

by marble25 2023. 9. 17.

서비스를 무중단으로 배포하는 프로세스가 어떻게 될까 공부하면서 크게 3가지 전략이 존재한다는 것을 알게 되었다.

Rolling Update

롤링 업데이트는 트래픽을 점진적으로 구버전에서 신버전으로 옮기는 것이다.

크게 1) scale out후 scale in하는 방법과 2) scale in 후 scale out하는 방법이 있다.

  1. scale out 후 scale in연결이 완료되면 v1을 서비스하는 서버 하나를 제거한다.
  2. 모든 트래픽이 v2를 서비스할 때까지 이 과정을 반복한다.
  3. v1 → v2로 배포가 이루어질 때, v2를 서비스하는 서버를 하나 생성해 로드 밸런서에 연결한다.
  4. scale in 후 scale out해당 서버의 서비스를 v1 → v2로 변경한다.모든 트래픽이 v2를 서비스할 때까지 이 과정을 반복한다.
  5. 변경한 서버를 로드밸런서에 연결한다.
  6. v1을 서비스하는 서버를 하나 로드밸런서에서 제거한다.

롤링 업데이트는 무중단 배포가 가능하고, 점진적으로 사용자에게 배포되기 때문에 배포 과정에서 문제가 발생하더라도 v1을 서비스하는 서버가 여전히 존재하기 때문에 덜 위험하다.

하지만 v1와 v2가 동시에 서비스되는 시간 동안 호환성 문제가 발생할 수 있다.

Blue/Green 배포

트래픽을 한번에 v1에서 v2로 옮기는 방법이다.

현재 운영중인 환경을 Blue라고 부르고, 새로 설치할 환경을 Green이라고 부른다.

Blue와 Green을 모두 구동한 후 배포 시점에 로드 밸런서가 트래픽을 Blue → Green으로 전환한다.

Green 버전 배포가 성공적으로 이루어지면 Blue 서버를 제거할 수 있다.

Blue/Green 배포는 호환성 문제가 발생하지 않는다.

하지만 일시적으로 리소스가 2배로 필요하다. 스케일 아웃/인 이 자유로운 클라우드 환경이 아니면 수행하기 어려울 수 있다.

Canary 배포

카나리아는 유독가스에 굉장히 민감한 동물로 석탄 광산에서 유독 가스 누출의 위험을 알리는 용도로 사용되어왔다. 미리 광산에 카나리아를 넣어보고 멀쩡히 돌아오면 광산이 위험하지 않다는 뜻이다.

카나리 배포는 롤링 업데이트와 블루/그린 배포의 특징을 모두 따온, 상대적으로 복잡한 배포 방식이다.

Blue로 가는 트래픽을 줄여나가고 Green으로 가는 트래픽을 점차 늘려나간다.

이때 트래픽을 분산하는 규칙은 정하기 나름이다.

예를 들어 1시간마다 구버전으로 가는 트래픽의 퍼센티지를 줄이고 신규 버전으로 가는 트래픽의 퍼센티지를 늘리는 방법을 취할 수 있다. 또는, IE 사용자는 신규 버전, 나머지는 기존 버전 등으로 사용자 요청을 분배해서 처리할 수 있다.

점진적으로 배포되기 때문에 새로운 버전 배포에 따른 로그를 모니터링하면서 배포 과정의 위험성을 줄일 수 잇다. 또한, 복잡한 전략이 필요로 할 때 유용하게 사용할 수 있다.

하지만 역시 v1과 v2가 동시에 서비스되는 시간이 존재하여 호환성 문제가 발생할 수 있다. 또한, 구현하기가 비교적 까다롭다.

'infra' 카테고리의 다른 글

[TIL] mig 해제하기  (0) 2023.12.14
[TIL] js pm2 패키지  (0) 2023.11.05
컨테이너 보안  (0) 2023.07.14
[TIL] GSLB(Global Server Load Balancing)  (0) 2023.03.30
[TIL] DNS 서버 Round Robin  (0) 2023.03.30