무중단 배포, 처음 듣는 용어일 경우 많이 생소 할 것이다.
무중단 배포 말고도 중단 배포도 존재한다.
이제 어떠한 차이점이 존재하는지 알아보자
우선 해당 블로그를 인용하여 작성하였다.
https://hudi.blog/zero-downtime-deployment/
https://www.samsungsds.com/kr/insights/1256264_4627.html
https://2cloud.io/blog/zero-downtime-during-deployment
이제 중단 배포 방식이 무엇인지 설명하도록 할 것이다.
우리가 기존에 서버를 운영한다고 가정하도록 할 것이다.
시간이 지남에 따라 새로운 버전의 서버가 만들어지고 그 서버를 업데이트하려고 한다.
하지만 기존 서버랑 새로운 서버는 동일한 포트를 사용해야하기 때문에, 기본 서버를
종료 시키고, 새로운 서버를 배포할 수 밖에 없다. 이것을 중단 배포라고 한다.
기존 서버가 종료되고 새로운 버전의 서버가 실행되는 사이의 걸린시간을 다운타임 이라 한다.
무중단 배포는 서비스 장애와 배포의 부담을 최소화하기 위해 운영 중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 기술이다.
로드밸런서(Load Balancer)를 통해 연결된 두 개 이상의 (서로 다른 IP, 포트를 가진) 인스턴스에 트래픽을 제어해 배포하는 것이다.
롤링 배포에서 각 서버는 오프라인으로 전환되고 배포된 다음 다시 온라인으로 전환된다.
여기서 "서버를 오프라인으로 전환"은 로드 밸런서의 사용 가능한 서버 목록에서 서버를 제거하는 것을 의미한다.
이런식으로 진행하면 로드 밸런서는 업그레이드 기간 동안 해당 서버로의 트래픽 전송을 중지하게 된다
롤링 배포는 기존 애플리케이션의 인스턴스를 새로운 인스턴스로 점진적으로 교체하는 것이다.
지정된 시간에 인스턴스가 N+1개 실행되고, 새로운 인스턴스가 도착하면 점진적으로 제거된다.
블루그린은 로드 벨런서가 있는 두 개의 동일한 환경을 갖는 것이다.
블루를 구버전, 그린을 신버전으로 지칭한다.
운영 환경에 구버전과 동일하게 신버전의 인스턴스를 구성한 후, 로드밸런서를 통해 신버전으로 모든 트래픽을 전환하는 배포방식이다.
잠재적 문제 상황을 미리 발견하기 위한 방식이다.
신버전의 제공 범위를 늘려가면서 모니터링 및 피드백 과정을 거칠 수 있다.