무중단 배포란?
먼저, 무중단 배포 이전에 배포란 무엇일까요?
배포란 새로 개발된 코드를 패키징하여 서버에 새로운 버전의 애플리케이션을 실행시키는 행위를 의미합니다.
배포시에 새로운 버전의 애플리케이션을 실행하기 위해 기존에 존재하던 애플리케이션을 종료해야 하는데 이 과정에서 사용자에게 서비스가 되지 않는다면 사용자들은 불편함을 느끼게 될 것입니다.
이런 상황을 피하기 위해 서비스를 중단하지 않고 배포하는 행위인 무중단 배포를 하게 되었습니다.
무중단 배포는 어떻게 이루어지나요?
배포중에 서비스가 내려가고 다시 올라가는 동안 서비스가 불가능한 것은 어쩔 수 없습니다.
이 때동안 서비스를 할 수 있는 방법은 없을까요?
가장 간단한 해결책으로 서버를 두대 이상 준비하고 서버를 한대씩 업데이트 하면 해결될 것입니다.
하지만 이 해결책도 문제점이 존재합니다.
- 사용자가 각 각 서버의 IP를 알아야 합니다.
- 어떤 서버가 실제 운영중인지 알 수 없습니다.
결국 사용자는 각각 서버에 대한 정보를 알아야 하고 어떤 서버가 현재 운영중인지 알기 위해 하나씩 다 접근해야 하는 것입니다.
리버스 프록시와 로드 밸런싱
이 문제를 해결하기 위해서는 클라이언트와 서버 사이의 중계자가 필요합니다.
이러한 역할을 하는 서버를 리버스 프록시라고 부릅니다.
Nginx란?
Nginx를 이용한 무중단 배포
블루 - 그린 배포 방식을 사용하여 무중단 배포를 진행하겠습니다.
발생했던 이슈
- nginx $set 명령이 작동하지 않는 증상