서비스를 만들고 나면, 서비스를 사용자들에게 제공하기 위해 배포라는 단계를 거쳐야한다.
현재는 많은 서비스 업체들이, 클라우드 서비스를 사용하면서 무중단 배포 를 사용하고 있다.
이를 통해 서비스를 내리지 않고, 배포 중에도 서비스를 제공할 수 있다.
현재 많이 언급되는 무중단 배포 전략에는 다음 세가지 방법이 있다.
- Rolling
- Blue-Green
- Canary
Rolling 배포
파드가 여러개인 경우, 하나씩 순차적으로 새로운 이미지로 배포 되도록 하는 방식
다운타임을 최소화한다는 점이 장점으로 꼽히며, 마이너한 버그 픽스 정도의 배포시에 사용하기좋다.
만약 배포 중에 사용자가 서비스에 접근하게 될 경우, 구, 신버전의 어플리케이션중 어느 서비스에 접속 될지 모른다는 단점이 있다.
모든 파드가 새로 배포 되기까지 blue-green 배포에 비해서 오래 걸릴수 밖에 없다는 단점이 있다.
Blue-Green 배포
서비스가 배포된 여러개의 파드가 존재할 경우, 해당 파드 갯수만큼 새로운 파드가 뜨고, 한번에 새로운 버전으로 스위치 되는 방식.
즉각적인 업데이트가 가능하다는 장점이 있지만, 이미 서비스 중이던 파드 만큼의 파드가 새로 띄워져야 하므로 리소스가 두배로 차지된다는 문제가 있다.
이 때문에 서버 가용용량이 충분하지 않으면 사용하기 어려울수 있다.
배포 후 테스트 했을때 문제가 있을 경우 Rollback이 쉽다는 장점이 있다. -> 두 버전이 모두 available 하기 때문.
Canary 배포
예전에, 카나리아 새를 이용해 광부들이 광산에서 테스트를 하던것을 토대로 네이밍 된 방식 이다.
찾아보면, 카나리아가 유독 가스등에 민감해 광부들이 일 할때 이 새를 데리고 다니다가, 카나리아가 만약 죽으면 광부들이 이를 통해 위험성을 인지하고 피했다고한다.
카나리 배포는, 이를 차용해, 일부 타겟 사용자들에게 새로 배포된 서비스를 제공하고, 문제가 없을 경우 점차적으로 새로운 버전으로 배포되는 파드를 점진적으로 늘려가는 방식이다.
위험을 미리 테스트 해볼수 있다는 장점이 있지만, 배포 방식이 복잡하다는 문제는 있다.
위 세가지 무중단 배포 이외에도, 기존의 레거시한 방법 중단이 필요한 방법 들이 있다.
무중단 서비스를 사용하고자 할때도, 위 세개의 방식중에 어떤것이 가장 좋다고 보기는 힘들다.
제공하고자 하는 서비스의 성격이나, 서버의 가용 용량에 따라, 어떤 방식이 최선일지 고려해 보고 적용해야할 것으로 보인다.