무중단 배포
무중단 배포는 서비스가 도는 도중에 프로그램을 새 버전으로 바꾸는 배포다. 예전에는 점검 시간을 정해 서버를 멈췄지만, 지금은 그렇게 하기 어렵다. 그래서 사용자가 접속할 수 없는 순간을 없애는 것이 목표다. 절차는 신버전 준비부터 구버전 종료까지 이어진다. 먼저 신…
주요 장면
대본
무중단 배포란
무중단 배포는 서비스가 도는 도중에 프로그램을 새 버전으로 바꾸는 배포다.
예전에는 점검 시간을 정해 서버를 멈췄지만, 지금은 그렇게 하기 어렵다.
그래서 사용자가 접속할 수 없는 순간을 없애는 것이 목표다.
배포 절차
절차는 신버전 준비부터 구버전 종료까지 이어진다.
먼저 신버전을 기동하고 헬스체크를 통과시킨다. 정상 인스턴스만 트래픽을 받는다.
로드밸런서 가중치로 소량의 트래픽을 신버전에 보낸다.
에러율과 응답 시간을 보고 이상이 없으면 비율을 단계적으로 늘린다.
이상이 보이면 가중치를 구버전으로 되돌린다. 롤백 경로는 반드시 표시한다.
방식 비교
배포 방식은 신버전을 트래픽에 넣는 방식에 따라 나뉜다.
롤링 배포는 인스턴스를 순차 교체한다. 추가 자원이 가장 적게 든다.
블루-그린 배포는 두 환경 사이에서 트래픽을 전환한다. 롤백이 빠르다.
카나리 배포는 일부 사용자에게 먼저 보내고 점차 확대한다.
세 방식은 자원, 전환 속도, 롤백 방법이 서로 다르다.
직접 풀어 보자. 롤백이 빠르지만 서버를 두 벌 유지하는 방식을 고른다.
정답은 블루-그린 배포다. 두 환경을 두고 트래픽만 옮기므로 롤백이 빠르다.
DB 하위호환
무중단 배포에서 가장 흔한 실수는 DB 변경을 빠뜨리는 것이다.
DB 스키마는 확장 후 축소 순서로 나눠 적용한다.
먼저 컬럼을 추가하고, 코드를 전환한 뒤, 구 컬럼을 삭제한다.
구 컬럼을 배포와 같은 시점에 지우면 구버전 인스턴스가 장애를 겪는다.
직접 풀어 보자. 확장과 전환이 끝난 뒤 하는 작업을 고른다.
정답은 3단계다. 확장과 전환이 끝난 뒤에 구 컬럼을 지운다.
정리
무중단 배포는 서비스 중단 없이 신버전을 배포하는 기법이다.
방식은 롤링, 블루-그린, 카나리로 나뉘고 각각 장단점이 다르다.
전제는 로드밸런서, 헬스체크, 세션 드레이닝이다.
DB 하위호환과 자동 롤백을 함께 확보하는 것이 핵심이다.