무중단 배포 전략 - 롤링, 블루-그린, 카나리 배포
TIL

무중단 배포 전략 - 롤링, 블루-그린, 카나리 배포

 

서비스가 과거 모놀리식 구조에서 MSA(Micro Service Architecture) 구조로 쪼개지고 배포 주기도 짧아지면서 배포 방식 또한 변화가 생겼다. 기존 서버를 종료하고 새로운 버전의 서버를 실행하는 중단 배포 방식(유저가 서비스를 이용할 수 없는 시간인 downtime이 존재한다.)보다는 서비스가 중단되지 않는(zero-downtime) 무중단 배포 방식을 많이 채용한다. 

 

무중단 배포(Zero-downtime deployment)에는 서비스가 중단되지 않은 상태로 새로운 버전을 사용자들에게 배포하는 것을 의미한다. 무중단 배포를 하기 위해서는 최소 서버가 2대 이상 필요하다. 가장 많이 알려져 있는, 무중단 배포의 3가지 전략, 롤링 배포, 블루-그린 배포 그리고 카나리 배포에 대해 알아보자.

 


롤링(Rolling) 배포

롤링 배포는 사용중인 인스턴스들을 하나씩 점진적으로 새로운 버전으로 교체하는 방식이다. 사용중인 인스턴스 하나를 로드밸런서에 라우팅하지 않도록 한 뒤, 새 버전으로 다시 라우팅하도록 한다. 모든 인스턴스에 대해 이 과정을 반복해서 전체를 새 버전으로 교체한다.

 

롤링 배포

 

장점

1. 인스턴스마다 차례로 배포를 진행하기 때문에 상황에 따라 쉽게 롤백이 가능하다.

2. k8s, elastic beanstalk 과 같은 많은 오케스트레이션 도구에서 지원한다.

3. 많은 서버 자원을 확보하지 않아도 무중단 배포가 가능하다.

 

단점

1. 새 버전으로 교체할 때 그만큼 사용중인 인스턴스 수가 감소하기 때문에 교체중인 인스턴스를 제외한 나머지 인스턴스의 처리 용량을 고려해야 한다.

2. 배포가 진행되는 동안 구버전과 신버전이 동시에 존재하기 때문에 호환성 문제가 발생할 수 있다.

 


블루-그린(Blue-Green) 배포

블루-그린 배포는 운영 환경에 구버전과 동일하게 신버전의 인스턴스들을 구성한 뒤, 로드밸런서를 통해 신버전으로 일괄로 트래픽을 전환하는 배포 방식이다. 현재 운영중인 서비스의 환경을 블루, 신버전을 그린이라고 부른다.

 

블루-그린 배포

 

장점

1. 구버전과 동일한 운영 환경에 신버전의 인스턴스들을 올리기 때문에 실제 서비스 배포 환경에서 신버전을 미리 테스트 해볼 수 있다.

2. 롤링 배포와 마찬가지로 빠른 롤백이 가능하다.

3. 배포가 완료된 후 남아 있는 기존 버전의 환경을 다음 배포에 재사용 할 수 있다.

 

단점

1. 구버전과 신버전이 동시에 운영 환경에 존재하기 때문에 시스템 자원이 두배로 필요하다.

 


카나리(Canary) 배포

카나리 배포는 잠재적 문제 상황을 미리 발견하기 위한 배포 방식이다. 일부만 신버전으로 교체해서 모니터링하고 오류가 없다면 나머지 인스턴스를 신버전으로 교체하는 방식이다. 보통은 들어오는 트래픽에 가중치를 줘서 일부만 신버전으로 유입시키는 방법을 쓴다. 그 후에 이상이 없다면 나머지 서버를 롤링 방식으로 모두 업데이트 시킨다. 이러한 방식은 A/B 테스트를 하기에 적합하다고 한다.

A/B 테스트란?
마케팅과 웹 분석에서 주로 사용하는 테스트 방식으로, 두 개의 변경 A와 B를 사용하는 종합 대조 실험이다.
예를 들어서, 특정 화면에서 이미지 링크가 있는 경우, 텍스트 링크가 있는 경우 이미지 링크를 더 많이 클릭한다- 가 가설이라면 A는 이미지 링크, B는 텍스트 링크라고 볼 수 있다.

 

카나리 배포

 

장점

1. 단계적인 전환 방식을 통해 부정적 영향을 최소화하고 상황에 따라 트래픽 양을 늘리거나 롤백할 수 있다.

 

단점

1. 롤링 배포 방식과 마찬가지로 신버전, 구버전이 함께 운영되기 때문에 호환성 문제가 있을 수 있다.

 

 


Reference

https://hudi.blog/zero-downtime-deployment/

https://www.samsungsds.com/kr/insights/1256264_4627.html

 

 

728x90
반응형