무중단 배포 전략(Rolling, Blue/Green, Canary)

Kang Dong Hyun·2023년 2월 23일
0

중단 배포

V1이란 서버를 운영하고 있다고 가정해보자. 이번에 새로운 기능을 업데이트한 V2버전을 개발하여 서버에 배포하려고 한다. 중단 배포의 과정에 대해 알아보도록 하자.

  1. 새로 개발한 V2버전을 다운로드
  2. V1과 V2는 같은 포트를 사용하기 때문에 V2를 실행하기전 V1을 종료
  3. V2를 실행하여 로딩
  4. V2 운영 시작

이 과정에는 약점이 있는데 바로 V1이 종료 되고 V2를 실행하기 전까지 유저가 서비스를 이용할 수 없다는 점이다. 이 시간을 다운타임(Downtime) 이라고 한다. 기능이 점점 많아짐에 따라 다운타임도 증가할 것이기에 다운타임을 개선하고자 무중단 배포 시스템이 도입되었다.

무중단 배포

무중단 배포는 말 그대로 서비스가 중단되지 않은 상태로 새로운 버전을 배포하는 방법이다.
무중단 배포를 하기 위해서는 최소 서버가 2대 이상이 있어야한다.

무중단 배포 전략

무중단 배포 전략에는 대표적으로 3가지가 존재하는데
1. Rolling
2. Blue/Green
3. Canary
이 3가지의 전략으로 사용한다.

롤링(Rolling)

  1. 4개의 기존 버전 v0.0.1이 있다.
  2. 그 중 2개의 라우팅을 끊고 v0.0.2로 업그레이드한다.
  3. 업데이트 버전이 배포가 되면 다시 라우팅 시작
  4. 나머지 2개 인스턴스의 라우팅을 끊고 업데이트 버전 배포
  5. 나머지 2개의 인스턴스의 업데이트가 끝나면 다시 라우팅을 연결

롤링 배포는 사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 방법으로 가장 기본적인 무중단 배포 방식이다.
서비스 중인 인스턴스 하나를 로드밸런서에서 라우팅하지 않도록 한 뒤, 새 버전을 적용하여 다시 라우팅하도록 한다. 이를 반복하여 모든 인스턴스에 새 버전의 애플리케이션을 배포한다.

  • 장점
    -인스턴스마다 차례로 배포를 진행하기에 상황에 따라 손쉽게 롤백이 가능하다.
    -추가적인 인스턴스를 늘리지 않아도 된다.
    관리하기가 간편하다.

  • 단점
    -새 버전을 배포할 때 인스턴스의 수가 감소하기 때문에 사용중인 인스턴스에 트래픽이 몰릴 -수 있다. 그래서 서비스 처리 용량을 잘 고려하여야 한다.
    -배포가 진행될 때 구버전과 신버전이 공존하기에 호환성 문제가 발생할 수 있다. 위 순서의 3번과정에서 업데이트된 버전 2개, 안된 버전 2개가 공존하므로 사용자들은 균일한 서비스를 받지 못한다.

블루/그린(Blue/Green)

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

  • 장점
    -구버전의 인스턴스가 그대로 남아 있어 손쉬운 롤백이 가능하다.
    -구버전의 환경을 다음 배포에 재사용 가능하다.
    -운영환경에 영향을 주지 않고 새 버전 테스트가 가능하다.

  • 단점
    -시스템 자원이 두 배로 필요하다.
    -새로운 환경에 대한 테스트가 전제되어야 한다.

카나리(Canary)

옛날 광부들이 유독가스에 민감한 카나리아 새를 이용해 가스 누출 위험을 감지했던 것에 유래한 방식으로 잠재적 문제 상황을 미리 발견하기 위한 배포 방식이다.
신버전을 소수의 유저들에게만 배포하고 문제가 없는 것을 확인해가며 점차 많은 유저들에게 배포하는 기법이다.
블루/그린 배포와 유사하지만 블루그린처럼 트래픽을 한번에 확 바꾸는 것이 아니라 점진적으로 전환하기에 부정적 영향을 최소화하고 상황에 따라 트래픽 양을 조절하며 롤백이 가능하다.

  • 장점
    -문제 상황을 빠르게 감지
    -분할테스트인 A/B테스트로 활용 가능하다.

  • 단점
    -네트워크 트래픽 제어 부담

profile
초보개발자의 스터디공간

0개의 댓글