배포 전략 종류 (롤링 / 블루 · 그린 / 카나리)

Eeeasy-code·2023년 11월 5일
0

[MSA]

목록 보기
1/1
post-custom-banner

무중단 배포

무중단 배포란 배포 중 서비스 기능이 멈추지 않고, 실제 사용자들이 정상적으로 서비스를 사용할 수 있는 기능을 제공하는 배포 방식이다.

MSA의 발전으로 서비스 별로 적절한 기술 스택과 소규모 배포를 가능하게 하여, Agile 프로세스를 통해 스프린트 단위로 기능을 유동적으로 개발할 수 있게 하고, docker를 통해 컨테이너 환경과 높은 이식성으로 안정적이고 빠른 배포 환경을 구축할 수 있게 된다.

무중단 배포는 공통점이 두 가지 존재한다.

1. 서버는 최소 두 개 이상 존재

서버를 배포하기 위해서는 결국에 잠깐이라도 서비스 중인 서버가 내려가고 다시 서버가 동작하는 시간 즉, downtime이 필요하기 때문에 절대 단일 서버로 무중단 배포 시스템을 구축할 수 없다.

2. 로드밸런서가 필요

먼저, 프론트엔드 단과 백엔드 단이 직접적으로 연결되어 있다고 보자. 무중단 배포를 위해, 프론트엔드 단에서는 모든 서버에 대한 각각의 IP를 알고 있어야하고 이 서버들 중 어떤 서버가 현재 사용 가능한지 찾아 그 서버에 요청을 날려야 한다. 또한, 트래팩에 대한 정보가 일괄적으로 관리되지 않아, 유동적인 트래픽 관리도 불가능해 배포 과정에서 서비스가 정상적으로 운영될 수 있는지 확인도 어렵다.

따라서 서버 앞 단에 로드밸런서를 둬서 클라이언트 요청을 받아서 처리하는 환경을 구성한다.

배포 전략 종류

무중단 배포 이전의 모습은 서비스 중인 서버를 멈추고, 이 후에 새로운 버전을 배포하여 재가동하는 형태이다.

무중단 배포 전략은 3가지가 있다. 각 전략은 호환성, 자원 효율성, 안정성 등의 측면에서 차별화된다.

1. 롤링 배포

롤링 배포는 기존 운영중인 서버 중 일부 단위만큼씩 새 버전으로 점진적으로 교체하는 방식이다. 하지만, 그 동안 가용 가능한 서버 자원이 줄어들기 때문에, 서버 자원이 충분한지 확실한 검증 하에 진행되어야 한다. 또한, 구 버전과 신 버전이 같이 서비스되기 때문에 호환성 검증도 필요하다.

단점

  • 구 버전과 신 버전의 호환성 확인 필요
  • 배포동안 가용 가능한 서버 자원 감소

2. 블루 · 그린 배포

기존 버전(블루)에 연결되어 있던 트래픽을 일괄적으로 신 버전(그린)으로 전환하는 배포 방식이다. 또한, 한꺼번에 모든 서비스를 전환하기 때문에, 신 버전이 정상적으로 동작하는지에 대한 테스트가 진행되어야 한다. 다만, 일반적인 배포 방식보다 서버 자원을 두 배로 유지해야 한다는 단점이 있다.

장점

  • 구 버전과 신 버전에 대한 호환성 확인이 필요없음
  • 신 버전을 미리 배포하기 때문에, 실제와 동일한 환경에서 미리 테스트 가능

단점

  • 서버 자원을 두 배로 유지해야 함
  • 신 버전에 대한 테스트 선행 필요

3. 카나리 배포

카나리 배포는 롤링 배포와 블루-그린 배포를 합쳐놓은 배포 방식이다. 신 버전의 비율을 유동적으로 늘려가는 롤링 배포 + 실제 환경에서 미리 테스트 진행하는 블루-그린 배포
위험을 빠르게 감지할 수 있는 배포 전략으로, 지정한 서버 또는 특정 사용자에게만 배포했다가 정상적으로 작동하면 전체를 배포한다. 서버의 트래픽의 일부를 신 버전으로 분산시켜 오류 여부를 확인할 수 있다. 이런 전략은 A/B 테스트가 가능하며, 성능 모니터링에 유용하다. 트래픽을 분산시킬 때에는 라우팅을 랜덤하게 혹은 사용자로 분류 가능하다.

장점

  • 위험 상황 빠르게 감지
  • A/B 테스트로 활용 가능

단점

  • 네트워크 트래픽 제어에 대한 부담

A/B 테스트 -> 대조군과 실험군으로 나누어 특정한 UI나 알고리즘의 효과를 비교하는 방법론

profile
쉽고 즐겁게 개발합시다.
post-custom-banner

0개의 댓글