[?] Docker + Nginx + Jenkins CI/CD 무중단 배포 가이드1

Walter Mitty·2023년 7월 12일
0

회사에서 API 서버랑, 프론트 운영서버 두개 다 배포해야했는데... 처음엔 진짜 띠용하고 막막했다가 사수분이 붙어서 다 도와주셔서 써보는 가이드 <라고 해봤자 최고의 가이드 티스토리 따라가보기

사전 필요한 지식

| 무중단 배포(Zero-downtime Deployment)

먼저 무중단 배포는 다운타임(Downtime) 없이 서비스가 중단되지 않는 상태로 새로운 버전을 사용자에게 계속해서 배포하는 것이다.

무중단 배포를 진행하려면 서버를 2대 이상 확보해야 한다. 그리고 nginx와 같은 웹서버를 앞단에 배치시켜서 한 곳에서 모든 클라이언트들의 요청을 받도록 해야한다.

그리고 뒷단에 존재하는 여러 서버들에게 상황에 따라 적절히 요청을 분배시키는 방식, 즉 로드밸런싱을 진행하는 것이다.
참고자료

| 블루 그린(Blue Green) 배포 전략

현재 운영 중인 구 버전 서버를 블루, 신 버전 서버를 그린이라고 부른다.
신 버전에 대한 새로운 인스턴스들을 생성 및 배포해서, 로드 밸런서를 구버전과 신버전 모두 일제히 연결 시킨다, 그리고 기존 구 버전을 종료시키고 로드밸런서가 신 버전만을 바라보게 하는 전략!

장점

  • 롤링 배포전략과 달리 한번에 트래픽을 신버전으로 옮기기 때문에 호환성 문제 발생하지 않음
  • 빠른 롤백이 가능하고, 운영환경에 영향을 주지않고 실제 서비스 환경으로 신 버전 테스트가 가능
  • 배포가 완료된 후 남아있는 구 저번 환경을 다음 배포에 재사용 할 수 있음
  • 신 버전 배포가 진행되는 동안 서버 과부하가 일어날 확률 적음

단점

  • 시스템 자원이 2배로 필요하게되어, 비용이 훨씬 발생합니다. 즉, 실제 운영에 대한 필요한 서버 리소스에 대비해 2배의 리소스를 확보해야 한다.

블루 그린 방식은 물리적인 서버를 대상으로 사용하기에는 비용상 버겁기 때문에 클라우드 환경에서 쉽게 인스턴스를 생성하거나 없앨 수 있는 AWS나 Docker 컨테이너와 같은 가상 환경에서 사용하는 것이 좋다.

0개의 댓글