-
Notifications
You must be signed in to change notification settings - Fork 0
무중단 배포에 대해 알아보자!
김동철 edited this page Aug 28, 2023
·
27 revisions
- https://ko.wikipedia.org/wiki/다운타임
- https://tecoble.techcourse.co.kr/post/2022-11-01-blue-green-deployment/
- https://hudi.blog/zero-downtime-deployment/
- https://tecoble.techcourse.co.kr/post/2022-11-01-blue-green-deployment/
- [https://velog.io/@znftm97/무중단-배포를-위한-환경-이해하기](https://velog.io/@znftm97/%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%99%98%EA%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0)
- [https://velog.io/@msung99/무중단-배포-아키텍처를-위한-배포전략Rolling-BlueGreen-Canary-전략](https://velog.io/@msung99/%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%B0%B0%ED%8F%AC%EC%A0%84%EB%9E%B5Rolling-BlueGreen-Canary-%EC%A0%84%EB%9E%B5)
!https://hudi.blog/static/f5b299d73132e49f7a3f3691853839fa/9d567/downtime.png
서비스가 운영 중일 때, 새로운 버전을 배포하기 위해서는 기존 서비스를 종료하고 새로운 서비스를 시작해야 합니다. 이 과정에서 다운타임(Downtime)이 필연적으로 발생하며, 해당 시간동안 사용자들은 서비스를 이용할 수 없게 됩니다. 이러한 다운타임을 해결해주는 방법이 바로 무중단 배포입니다.
즉, 서비스를 중단하지 않고 새로운 버전의 애플리케이션을 배포하는 방식을 무중단 배포라고 합니다.
- 다운타임(Downtime): 시스템을 이용할 수 없는 시간을 일컫는다. 이용 불가능의 의미는 시스템이 오프라인이거나 사용할 수 없는 상황에 놓이는 상태를 가리킨다.
- 트래픽을 점진적으로 구 버전에서 신 버전으로 옮기는 방식입니다.
-
- 인스턴스를 하나 추가하여 새로운 버전의 애플리케이션을 실행한 뒤 2) 로드 밸런서에 이를 연결하고 3) 구 버전의 인스턴스를 종료하면서 서버를 교체하는 방법입니다.
- 서버 개수를 유연하게 조절할 수 있는 클라우드 환경에 적합한 방법입니다.
-
- 구 버전의 인스턴스를 로드 밸런서에서 해제하고 2) 새로운 버전의 애플리케이션을 실행한 뒤 3) 다시 로드 밸런서에 연결시키는 방법입니다.
- 물리적인 서버로 서비스를 운영하는 온프레미스(On-premise) 환경에 적합한 방식입니다.
- On-premise : 서버를 클라우드와 같은 '가상의 공간'이 아니라, 자체적으로 보유하고 있는 서버에 직접 설치하고 운영하는 방식
- Blue/Green 배포 방식에 비해, 많은 서버 자원을 확보하지 않아도 된다.
- 점진적으로 새로운 버전이 사용자에게 출시되므로, 배포로 인한 위험성을 줄일 수 있다.
- 방법 2의 경우, 서비스 중인 인스턴스의 수가 줄어들면서 각각의 서버가 부담하는 트래픽의 양이 늘어날 수 있습니다. 따라서 전체 트래픽의 양과 단일 서버가 처리할 수 있는 트래픽의 양을 잘 고려하여 배포를 진행해야 합니다.
- 또한, 구버전과 신버전의 어플리케이션이 동시에 서비스되기 때문에 호환성 문제가 발생할 수 있습니다.
- 트래픽을 한번에 구버전에서 신버전으로 옮기는 방법입니다.
- 현재 운영중인 서비스의 환경을 Blue라고 부르고, 새롭게 배포할 환경을 Green이라고 합니다.
- Blue와 Green의 서버를 동시에 구성해둔 상태로, 배포 시점에 로드 밸런서로 트래픽을 Blue에서 Green으로 일제히 전환시킵니다.
- 롤링 배포와 카나리 배포와 달리, 전체 트래픽을 한번에 새로운 버전으로 옮기기 때문에 호환성 문제가 발생하고 신속한 배포가 가능합니다.
- 실제 서버 운영에 필요한 리소스 대비 2배의 리소스를 확보해야 합니다. 따라서, 온프레미스(On-premise) 환경의 경우 비용 부담이 크다는 단점이 있습니다.
- 소수 인원에 대해서만 트래픽을 새로운 버전에 옮겨둔 상태에서 서비스를 운영하는 방식
- 새로운 버전에 이상이 없다고 판단하였을 경우에 모든 트래픽을 신규 버전으로 옮긴다.
- 새로운 버전으로 인한 위험을 최소화 할 수 있다.
- A/B 테스트에 적합하다
- 롤링 배포와 마찬가지로 신/구 버전의 애플리케이션이 동시에 존재하므로 호환성 문제가 발생할 수 있다.
- FE - 나도 오픈소스 개발자? (NPM 배포기)
- FE - 합성 컴포넌트에 스토리북 한 스푼 🥄
- FE - Tailwind CSS 찐하게 사용해보기
- AOS - 안드로이드 네트워크 연결
- AOS - API 요청에 따른 동적 탭 생성
- AOS - 나도 오픈소스 개발자? (jitpack 배포기)
- AOS - 폭죽 애니메이션
- AOS - 가이드 모드 애니메이션
- AOS - 뷰모델과 애니메이션을 같이 사용했을때의 ISSUE
- BE - 무중단 배포에 대해 알아보자!
- BE - 더 무중단스러운 배포를 위한 graceful shutdown
- BE - 쿼리 최적화에 대해 알아보자!
- BE - 실전, 쿼리 가속도 업!