📌무중단 배포란?
애플리케이션의 중단 없이 배포를 하는 것
📌초기 배포 방식
📖Recreate
가장 단순한 배포 전략으로, 기존 버전의 서버를 모두 삭제한 다음 새로운 버전의 서버를 생성하는 방법이다.
출처) https://yongdev91.tistory.com/23
📚장점
- 자원 사용량이 증가하지 않아, 비용 상의 이점이 있다.
- 네트워크 변경등이 불필요
📚단점
DownTime을 없애기 위해 무중단 배포가 등장하였다.
📌무중단 배포 방식
📖1. Rolling
사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 것. 즉, 배포된 서버를 한 대씩 구버전에서 새 버전으로 교체하는 것
출처) https://dunchi.tistory.com/69
📚장점
- 인스턴스마다 차례로 배포를 진행하기에 상황에 따라 손쉽게 롤백이 가능하다.
- 인프라에 구성된 현재 자원을 그대로 유지하고 무중단 배포가 가능하다.
→ 기존의 서버의 연결을 끊고 그 자리에 새로운 서버로 대치시켜버리니 기존의 자원에 크게 줄이거나 늘일 필요가 없는 것이다
📚단점
- 배포 속도가 느리다.
- 새 버전을 배포할때 인스턴스의 수가 감소하기 때문에 사용 중인 인스턴스에 트래픽이 몰릴 수 있다. 즉, 업데이트 도중에 일부 서버를 필연적으로 끊어야 하기 때문에 서버 과부하가 발생할 가능성이 높다.
- 배포 중 인스턴스의 수가 감소 되므로 서버 처리 용량을 미리 고려해야 한다
- 배포가 진행될때 구버전과 신버전이 공존하기에 호환성 문제가 발생할 수 있다.
→ 배포가 끝나기 전까지는 이전 버전을 서비스 받는 유저와 신규 버전을 서비스 받는 유저가 공존
📖2. BlueGreen
블루는 구버전, 그린은 신버전을 의미한다.
운영중인 구버전과 동일하게 신버전의 인스턴스를 구성한 후 로드밸런서를 통해 모든 트래픽을 한번에 신버전 쪽으로 전환 하는 방식이다.
출처) https://dunchi.tistory.com/69
📚장점.
- 새롭게 배포할 환경에만 배포하면 되기 때문에 배포 속도가 매우 빠르다
- 구버전의 인스턴스가 그대로 남아있어서 손쉬운 롤백이 가능하다.
- 구버전의 환경을 다음 배포에 재사용할 수 있다.
- 운영환경에 영향을 주지 않고 새 버전 테스트 가능하다.
📚단점.
- 구 버전과 신 버전을 동시에 갖추어야하므로 시스템 자원이 두배로 필요하다.
- 새로운 환경에 대한 테스트가 전제되어야 한다.
📖3. Canary
신버전을 소수의 유저들에게만 배포를 해보고 문제가 없는것을 확인해가며 점차 많은 유저들에게 배포하는 기법이다. 새 버전을 구성하고 트래픽 일부를 분산 처리한다. 트래픽을 한번에 확 바꾸는 것이 아니라 단계적으로 전환하기에 부정적 영향을 최소화하고 상황에 따라 트래픽 양을 조절하며 롤백할 수 있다.
출처) https://dunchi.tistory.com/69
📚장점.
- 문제 상황을 빠르게 감지할 수 있다 (오류률 / 성능모니터링에 용이)
→ A/B 테스트
- Production 환경에서 테스트에 용이하다.
📚단점.
- Routing 변경이 필요하므로, 네트워크 트래픽 제어 부담이 된다.