서비스 중단 없이 새로운 버전의 소프트웨어를 배포하는 방법
중단 배포 시 발생하는 다운타임을 해결할 수 있음
보통 2가지 이상의 배포 전략을 사용함
요청에 대해서 모든 인스턴스가 균등하게 사용되도록 네트워크 트래픽을 처리하는 것
수많은 클라이언트의 요청마다 가장 적합한 서버를 결정하여 클라이언트 요청을 효율적으로 처리하도록 함
사용자(클라이언트, 요청)와 서버 사이에 위치하며 보이지 않는 촉진자 역할을 함
클라이언트와 서버 간 트래픽을 제어함으로써 서비스 가용성과 확장성을 향상함
사용 중인 인스턴스 내에서 버전을 점진적으로 교체하는 배포 전략
사용 중인 인스턴스 중 하나를 로드밸런서에서 라우팅 되지 않도록 한 후, 신 버전으로 교체함
- 장점
1) 인스턴스 수에 제약이 있을 경우 유용함
- 단점
1) 신 버전 배포 중 사용할 수 있는 인스턴스의 수가 감소하므로 서버 용량을 미리 고려해야 함
2) 구 버전과 신 버전이 공존하기 때문에 호환성 문제가 발생할 수 있음
블루 구 버전 서버 / 그린 신 버전 서버
블루와 동일한 환경의 그린을 구축한 후, 그린으로 모든 트래픽을 전환하는 배포 전략
(구 버전, 신 버전이 한 순간이라도 공존했다고 보는 시각도 있음)
- 장점
1) 실제 서비스 환경에서 신 버전을 미리 테스트 할 수 있음
2) 문제 발생 시, 로드 밸런서를 통해 블루 서버로 빠른 롤백 가능
- 단점
1) 실제 운영 중인 인스턴스 자원의 2배가 필요하며, 그만큼 비용 측면에서 비효율적임
사용 중인 인스턴스 중 일부만 신 버전으로 배포하는 전략
소수의 이용자들만 신 버전을 사용하게 하고, 신 버전이 이상이 없다고 판단되면 모든 트래픽을 신규 버전으로 옮김
롤링 배포는 버전이 교체되는 동안 작업을 수행할 수 없지만, 카나리 배포는 버전 교체와 작업을 동시에 진행함
- 장점
1) 사용자 테스트와 무중단 배포를 동시에 진행할 수 있음
2) 오류를 조기에 감지하여 위험을 방지할 수 있음
- 단점
1) 구 버전과 신 버전이 공존하기 때문에 호환성 문제가 발생할 수 있음
참고
- https://aws.amazon.com/ko/what-is/load-balancing/
- https://dev.classmethod.jp/articles/ci-cd-deployment-strategies-kr/
- https://post.naver.com/viewer/postView.naver?volumeNo=31967043&memberNo=36733075
- 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