[인프라] 무중단 배포란 ?

mallin·2022년 3월 24일
0

인프라

목록 보기
1/1
post-thumbnail

현재 운영중인 서비스가 있다고 가졍하겠습니다.
서비스를 정상적으로 운영하고 있던 와중, 갑자기 오류가 발생해서 결제가 정상적으로 되지 않는 상황이 발생했습니다. 다행히 원인을 빨리 발견하고 수정한 다음 배포 버튼을 눌렀는데요.

원인을 빨리 발견해서 다행이다 라며 안도의 한숨을 내쉬고 있던 그때 ,, 옆자리에 앉아있던 분이 사이트가 접속이 되지 않는다고 합니다.

엥 ? 난 분명 원인을 해결해서 배포했는데 왜 접속이 안되지 ?

다시금 동공지진이 시작되던 가운데 .... 😵
알고보니 배포 시 아직 무중단 배포 를 사용하고 있는게 아니라 중단 배포 방식이라 새로운 서비스로 스위칭 될때까지 접속이 되지 않았던 것이였습니다.

여기서 나오는 무중단 배포와 중단 배포는 무엇이고 둘의 차이점은 뭘까요 ?? 이번 포스팅을 통해서 알아보도록 하겠습니다.

중단 배포

기존 서비스를 중지하고 새로운 서비스를 띄우는 배포 방식

위처럼 서버가 구성되어 있을 때 중단 배포를 하게 되면

  1. 서버에 연결되어 있는 연결을 모두 끊고
  2. 새로운 코드가 적용되어 있는 서버를 시작한다음
  3. request 를 다시 연결합니다.

하지만 이렇게 되면 🚨 큰 문제점이 있습니다
배포를 할 때마다 서비스가 중단된다는 것인데요. 하루에 한 번씩 배포를 한다고 하면 하루에 한번은 무조건 다운타임을 가져가는 수 밖에 없습니다. 😰
해당 방법을 개선한 배포방식이 바로 무중단 배포 방식이라고 합니다.

무중단 배포

운영중인 서비스를 중단하지 않고 배포하는 방식

무중단 배포의 핵심은 로드밸런서를 사용한다는 것입니다. 로드밸런서를 통해 트래픽을 제어해서 배포합니다. 무중단 배포를 하기 위해서는 고가용성의 시스템 인프라가 구성되어 있어야 합니다.
무중단 배포의 종류로는 총 3가지를 예시로 들 수 있습니다.

저는 총 3가지 방법 중에서 블루-그린 배포 방식만 사용해봤습니다 🙂

1. 롤링 배포

사용 중인 인스턴스를 새 버전을 점진적으로 교체하는 방식

과정
1. 배포된 서버의 연결을 일시적으로 끊는다.
2. 끊어진 서버를 버전 0.2 로 업데이트 한다.
3. 업데이트 완료 후 다시 연결한다.

장점 & 단점

장점단점
추가적으로 인스턴스를 늘리지 않아도 된다
차례차례 배포하기 때문에 롤백이 쉽다
배포할 때 인스턴스 수가 줄어들기 때문에 사용중인 인스턴스로 트래픽이 몰릴 수 있다.
구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있다.

2. 블루-그린 배포

새로운 버전이 적용된 인스턴스를 새로 띄우고, 로드밸런서를 통해 트래픽을 전환하는 방식

과정
1. 새로운 버전이 배포된 인스턴스 생성
2. 새로운 버전 인스턴스와 연결
3. 기존 버전 인스턴스와의 연결 삭제

장점 & 단점

장점단점
구버전 인스턴스가 그대로 남아 있기 때문에 배포가 쉽다.시스템 자원이 두 배로 필요하다(비용이 그만큼 든다)

3. 카나리 배포

소수의 사용자에게 새로운 버전을 배포하고, 범위를 점차 넓혀 가는 방식

과정
1. 소수의 사용자에게 새로운 버전 배포
2. 정상적으로 작동하는 경우 모든 사용자에게 새로운 버전 배포

장점 & 단점

장점단점
오류를 빨리 발견할 수 있다
A/B 테스트에 용이하다
네트워크 트래픽에 제어가 필요하다

현재 회사에서는 2번 블루-그린 방식을 AWS 의 로드밸런서를 통해서 사용하고 있는데 추후에 기회가 된다면 (혹은 개인 프로젝트로) 3번 카나리 배포 방식을 한번 써보고 싶네요 !!

🙇🏼‍♀️ 레퍼런스

무중단 배포 아키텍처(Zero Downtime Deployment) - 글로벌 서비스 운영의 필수 요소
[Infrastructure] 무중단 배포의 2가지 방법 (Rolling Update, Blue-Green Update)
[Infra] 무중단 배포 방식(Rolling / BlueGreen / Canary)
NginX 와 무중단 배포

0개의 댓글