이번에는 무중단 배포에 대해서 글을 작성해보려고 한다.
무중단 배포를 알아보기 위해서 무중단 배포를 사용하지 않는 경우를 보자.
무중단 배포를 사용하지 않을 경우
실제 서비스를 서버 1개만을 사용해 운영한다고 가정해보자.
현재 서비스 중인 서비스는 V1 버전을 배포하고 있다.
기능을 추가로 개발해서 서비스 버전을 V2로 변경해서 배포하려고 한다.
새로운 버전 V2를 배포하기 위해서는 V2 버전의 빌드 파일을 서버에 배포를 해야한다.
현재 운영중인 서버는 1대뿐이기 때문에 V1과 V2는 서로 같은 포트를 사용한다. 따라서 V2 버전으로 변경해서 배포하기 위해서는 현재 배포중인 V1 버전의 서비스를 종료해야한다.
문제점?
이런 경우 문제점이 무엇일까?
이 짤로 문제점을 설명할 수 있다.
위 상황처럼 서비스를 사용하던 중 갑자기 서비스가 중단된다면?
PC방을 이용하던 사람들의 폭력성을 시험하던 것과 마찬가지로 클라이언트의 폭력성을 체험하는 계기가 될 것이다.
무중단 배포
무중단 배포란 말 그대로 서비스가 중단되지 않은 상태로 새로운 버전을 배포하는 것이다.
서비스가 계속 운영되는 상태에서 새로운 버전의 어플리케이션을 배포하는 과정에서 시스테 가동시간을 최소화하여 사용자에게 생기는 불편함(다운타임)이 없는 방식이다.
무중단 배포 전략에는 대표적으로 3가지가 있다.
이전 버전과 새로운 버전의 서버를 공통 로드 밸랜서 하에 동시에 운영하기 위해 두 개의 독립적인 환경(블루 환경, 그린 환경)을 이용하는 전략이다.
이 방식은 트래픽을 한 번에 구버전에서 신버전으로 옮긴다.
로드 밸런서
로드 밸런서는 서버 앞에 앉아 있는 "교통 경찰" 역할을 하며 속도와 용량 활용도를 최대화하고 어느 한 서버도 과로하지 않도록 하여 성능을 저하시킬 수 있는 방식으로 이러한 요청을 이행할 수 있는 모든 서버에 클라이언트 요청을 라우팅한다. 단일 서버가 다운되면 로드 밸런서는 나머지 온라인 서버로 트래픽을 리디렉션한다. 새 서버가 서버 그룹에 추가되면 로드 밸런서가 자동으로 해당 서버에 요청을 보내기 시작한다.
Blue에서 서비스가 정상 가동 중일 때 새로운 버전은 Green에 배포한다.
배포가 완료되면, 로드 밸런서가 Green으로 트래픽을 전환하고, Blue 서비스는 종료된다.
만약, 이전 버전에 문제가 발생 시 빠르게 로드 밸런서를 통해 블루 환경으로 롤백이 가능하다.
장점
단점
서비스 중인 인스턴스 하나를 로드 밸런서에서 라우팅하지 않도록 떼어낸다. (이렇게 되면 해당 서버에는 트래픽이 도달하지 않게 된다.)
이 상태에서 해당 서버의 애플리케이션을 새 버전으로 교체한다.
이 과정을 모든 서버가 새로운 버전으로 교체되도록 돌아가면서 반복한다.
장점
단점
Canary 전략은 위험을 빠르게 감지하는 배포 전략이다.
이전 버전과 새로운 버전이 동시에 가동되는 방식으로, 새 버전의 인스턴스는 일부 사용자에게만 서비스하고, 나머지 사용자는 기존 버전을 사용한다.
새 버전이 정상적으로 작동함을 확인하면 전체 트래픽을 새 버전을 전환한다.
만약 오류가 발생한다면, 일부 사용자에게서 오류를 조기에 감지해 큰 위험을 방지할 수 있다.
장점
단점
출처
https://hstory0208.tistory.com/entry/무중단-배포란-무중단-배포-전략에-대해-알아보자
https://hudi.blog/zero-downtime-deployment/
https://velog.io/@nandong1104/무중단-배포를-알고-계신가요#용어-정리
https://www.samsungsds.com/kr/insights/1256264_4627.html
https://www.youtube.com/watch?v=HKkhD6nokC8
https://www.youtube.com/watch?v=6SvUZqbU37E
https://www.youtube.com/watch?v=sIPU_VkrguI