코드 저장소.

무중단 배포 종류 본문

웹개발

무중단 배포 종류

slown 2024. 8. 5. 13:46

목차

1.무중단 배포?

2.무중단 배포의 필요성?

3.무중단 배포 전략

 

1.무중단 배포?

무중단 배포는 말 그대로 서비스가 중단되지 않은 상태로 새로운 버전을 배포를 하는 방식을 말합니다. 그리고 무중단 배포를 위해서는 최소 서버가 2대 이상은 필요로 합니다.

 

2.무중단 배포의 필요성?

기존에 서버가 1대만 운영이 된다고 가정을 합시다. 기존에 운영되고 있는 서비스1이 있고 새로운 기능이 추가된 서비스2가 있습니다. 서비스2를 배포를 하려면 서버가 1대이고 포트번호가 같으므로 기존의 서비스1을 중단을 하고 서비스2를 빌드후 재배포를 해야 합니다. 이러다 보면 사용자 입장에서는 서버가 배포가 되는 동안 사용을 할 수 없는 시간이 있는데 이것을 다운타임이라고 합니다. 무중단 배포를 사용을 하면 이러한 다운타임을 줄일 수 있고 사용자들이 불편함 없이 서비스를 사용할 수 있습니다.

3.무중단 배포 전략

무중단 배포의 종류는 크게 3가지로 나뉩니다.

 

Rolling Depolyment

Blue/Green Depolyment

Canary Deployment 

 

Rolling Depolyment

 

롤링 배포는 현재 실행 중인 버전을 점진적으로 새로운 버전으로 교체하는 배포 방법입니다.  모든 서버가 새로운 버전으로 교체될 때까지 기존 버전과 새로운 버전이 동시에 실행됩니다.

 

롤링배포는 다음과 같은 과정으로 작동을 합니다.

  • 서비스 중인 인스턴스 하나를 로드밸런스에서 라우팅을 하지 않도록 떼어냅니다. 
  • 떼어낸 인스턴스는 트래픽이 도달을 하지 않고 새로운 버전으로 교체를 합니다.
  • 위의 과정을 모든 서버에 동일하게 적용을 합니다.

장점

 

  • 전체 시스템을 한 번에 업데이트하지 않고 단계적으로 진행하여 안정성을 높일 수 있습니다.
  • 추가적인 자원 없이 기존 자원에서 업데이트가 이루어집니다
  • 인스턴스마다 차례로 배포를 진행하기 때문에 상황에 따라 손쉽게 롤백(Roll Back)이 가능합니다.

 

단점

  • 롤링 배포 방식은 가용 자원(인스턴스)이 제한적일 경우에 사용되며 새 버전을 배포할 때 인스턴스 수가 감소하기 때문에 서비스 처리 용량을 고려해야 한다. (예로, 롤링 업데이트 과정에 새로운 버전 인스턴스가 1개만 존재 할 경우 트래픽이 몰리면 과부하가 발생할 수 있다.)
  • 또한 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있다.

Blue/Green Depolyment

 

Blue/Green 배포는 이전 버전을 Blue, 새로운 버전을 Green으로 정한 뒤  배포 할 때, 이전 버전을 바로 종료하는 것이 아닌 새로운 버전의 어플리케이션이 준비될 때 까지 기다린 후 종료하는 전략입니다. 

 

Blue/Green 배포는 다음과 같은 과정으로 진행이 됩니다.

  • Blue 에서 서비스가 정상 가동 중일 때 새로운 버전은 Green 에 배포된다.
  • 배포 완료되면, 로드 밸런서가 Green 으로 트래픽을 전환하고, Blue서비스는 종료된다.

장점 

  • 롤링 배포와 달리 한번에 트래픽을 모두 새로운 버전으로 옮기기 때문에 호환성 문제가 발생하지 않는다.

단점

  • 실제 운영에 필요한 서버 리소스 대비 2배의 리소스를 확보해야한다. 인스턴스를 쉽게 추가/삭제가 가능한 클라우드 환경이나 Docker를 사용한다면 문제가 크게 되지는 않지만 온프레미스의 환경이라면 단점대로 비용에 많은 부담이 들것이다.

Canary Deployment 

 

카나리 배포는 새로운 버전을 소수의 서버나 사용자 그룹에 배포한 후, 문제 발생 여부를 확인합니다. 문제가 없으면 점진적으로 배포 범위를 확대하는 배포방식입니다.

 

카나리 배포는 다음과 같은 과정으로 진행이 됩니다.

  • 이전 버전과 새버전을 동시에 가동
  • 새버전은 사용자의 일부만 사용하게하고 대부분은 구버전을 사용하게 한다.
  • 새버전에서 문제가 발생을 하지 않는다고 확인이 되면 트래픽을 새버전으로 옮긴다.

장점

  • 실제 사용자 테스트와 무중단 배포를 동시에 할 수 있다.
  • 새로운 버전으로 인한 위험을 최소화 할 수 있다.

단점

  • 롤링배포와 마찬가지로 호환성에 문제가 발생할 수 있다.

 

출처

https://loosie.tistory.com/781 

 

[서비스 배포 전략 구상하기] 무중단 배포 3가지 방식 (Rolling, Blue-Green, Canary)

무중단 배포 서비스를 운영할 때 새로운 버전을 배포하는 동안 기존 운영되는 애플리케이션이 종료된다는 문제가 있다. 실제 서비스하는 앱이라면 클라이언트에게 아주 안좋은 UX환경을 제공하

loosie.tistory.com

https://hstory0208.tistory.com/entry/%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC%EB%9E%80-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC-%EC%A0%84%EB%9E%B5%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90