무중단 배포 방법

구동희·2022년 10월 17일
0

배포(Deploy)

개발한 웹 서비스를 다른 사람에게 제공하기 위해서 공용 네트워크에 개발한 웹 서비스를 올려두는 것을 의미한다.

배포 시 발생 할 수 있는 문제점

타인에게 서비스를 제공하기 위해서는 웹 서비스 배포가 필수적이다.
그런데, 사용자의 요구사항이 변경되어 다시 배포를 해야한다면 현재 공용 네트워크에 올라간 웹 서비스를 종료하고 VersionUp된 웹 서비스를 공용 네트워크에 올려야 한다.

이때 DownTime이 발생하는데, 이 시간 동안은 Server의 요청처리가 불가능하기 때문에 불만족스러운 사용자 경험, 기업의 업무 불가 등의 문제를 가져올 수 있다.

이러한 문제들은 결국 고객손실을 불러오고 회사의 수익 저하를 가져온다.

아래의 예시로 다시한번 살펴보자.

서비스 이용자가 100만 명이라고 가정하자.
V1을 운영하던 중에 개발이 완료된 V2를 새롭게 운영 하려고 한다면 우선 V1을 종료해야한다. 그리고 V2를 새롭게 배포해야한다.

이 시간 동안 100만명의 이용자들이 서비스를 이용하지 못하는 DownTime이 발생하고 회사의 손실을 불러온다.

무중단 배포

위와 같이 배포를 하는 동안 DownTime이 발생하는 문제를 해결하는 방법은 무중단 배포가 있다.

말 그대로 웹 서비스를 중단 없이 배포하는 것을 의미한다.
무중단 배포를 구현하는 방법에는 크게 3가지가 있다.

  • Rolling 배포
  • Blue Green 배포
  • Canary 배포

하나씩 자세히 살펴보자.

Rolling 배포 방식

롤링 배포는 사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 것으로 무중단 배포의 가장 기본적인 방식이다.

서비스 중인 인스턴스 하나를 로드밸런서에서 라우팅하지 않도록 한 뒤, 새 버전을 적용하여 다시 라우팅하도록 한다.

이를 반복하여 모든 인스턴스에 새 버전의 애플리케이션을 배포한다.
그림을 통해 자세히 살펴보자.

우선, 새로운 버전을 배포하기전에 로드밸런서를 통해 4개의 웹서버가 구동중이다.

그러다 새로운 버전을 배포하기 위해서 웹 서버1 에 대한 라우팅을 제거한다.

라우팅이 제거된 웹 서버1이 새로운 버전으로 배포되면 로드밸런서의 라우팅을 다시 연결한다.

위 과정을 모든 웹 서버에 반복한다.

이렇게 새로운 버전에 대한 배포를 순차적으로 함으로써, 웹 서버 한대가 종료된 동안에 다른 웹 서버들이 요청을 처리할 수 있다.

Rolling 배포 방식 장단점

⭕ 장점

  • 차례로 배포를 진행하기에 문제가 발생할 경우 손쉽게 롤백이 가능하다.

❌ 단점

  • 차례로 서버를 종료하고 다시 배포하기 때문에 종료된 동안 다른 서버에 트래픽이 몰릴 수 있다.

  • 배포가 진행되는 동안 구버전과 신버전의 호환성 문제가 발생 할 수 있다.


Blue Green 배포 방식

블루는 구버전, 그린은 신버전을 의미한다.

운영중인 구버전과 동일하게 신버전의 인스턴스를 구성한 후 로드밸런서를 통해 모든 트래픽을 한번에 신버전 쪽으로 전환하는 방식이다.

그림을 통해 자세히 살펴보자.

우선, 위와 같이 V1의 서버들에 대해서 로드 밸런서가 라우팅을 하고 있다.
그러다 V2 개발이 완료되면 V2에 대한 웹서버 들을 실행한다.

V2 서버들의 전부 정상적으로 실행 됨을 HealthCheck를 통해 확인하고 로드밸런서가 라우팅하는 서버들을 V1에서 V2로 변경한다.

Blue Green 배포 방식 장단점

⭕ 장점

  • 한번에 라우팅이 변경되기 때문에 트래픽이 몰리는 문제를 해결한다.
  • 한번에 신버전으로 변경되기 때문에 구번전과의 호환성 문제가 발생하지 않는다.

❌ 단점

  • Blue에 대한 Green 서버를 따로 두어야하기 때문에 시스템 자원이 두배로 필요하다.

Canary 배포 방식

Canary 배포 방식은 구 버전과 새 버전의 서버들을 구성하고 일부 트래픽을 새 버전으로 분산하여 오류 여부를 판단한다.
지속적인 모니터링을 통해 신 버전의 오류 여부를 판단하고 문제가 없다면 신버전으로 운영 환경을 대체한다.
만약, 문제가 있다고 판단되면 다시 구버전으로 돌아간다.

위와 같이 V2 버전을 배포할 때, V1 버전과 V2 버전을 함께 구성한다.
그리고 모니터링을 통해서 V2버전에 문제가 있는지를 확인한다.

모니터링 후, 문제가 없다면 모든 서버를 V2로 대체한다.

Canary 배포 방식 장단점

⭕ 장점

  • BlueGreen 방식과 다르게 시스템 자원이 두배로 필요하지 않다.
  • 지속적인 모니터링을 통해서 새로운 버전의 문제가 있는지를 세밀하게 판단할수 있다.

❌ 단점

  • Rolling 방식과 같이 구버전과 신버전의 호환성 문제가 발생 할 수 있다.
profile
천천히 배워가는 개발꿈나무

0개의 댓글