무중단 배포
DevOps 관련 공부를 하다보면 무중단 배포라는 단어가 눈에 많이 띄이는것 같다.
그래서 이번에는 무중단 배포에 대해서 한번 알아보고자 한다.
무중단 배포란?
무중단 배포는 말그대로 중단하지 않고 배포를 진행하는 것을 의미한다. 보통은 애플리케이션을 업데이트 한 뒤, 배포를 하게 될 경우 애플리케이션을 중단시키고 배포를 진행하게 된다. 이럴경우 사용자는 배포가 완료되는 시간 동안 애플리케이션 사용에 제한이 생긴다. 이렇게 서비스가 중단되는 시간을 다운타임(Downtime)이라고 하며, 이러한 다운타임을 해결하고자 생긴것이 무중단 배포이다.
무중단 배포를 하기 위해서는 두대 이상의 서버가 필수적이다.
실제로 서비스 중인 서버 1대와 새롭게 배포한 서버 1대를 사용하여 무중단 배포할 수 있다.
무중단 배포는 일반적으로 로드밸런싱 해서 사용중인 서버와 새롭게 배포할 서버에 각각 트래픽을 분산시킨 후 사용중인 서버로의 트래픽을 차단하여 사용자들은 바로 새롭게 배포된 서버로 흘러 들어가게 된다고 보면 된다.
이러한 무중단 배포에는 몇가지의 방식들이 존재하는데, 그 방식들에 대해서 알아보도록 하자.
1. Rolling Update
2. Blue / Green
3. Canary
1. Rolling Update
무중단 배포에서 가장 기본적인 방식이라고 할 수 있는것이 바로 Rolling Update 방식이다.
Rolling Update 방식이란, 이전 버전의 서버는 한대씩 죽여가면서 새롭게 배포한 서버를 한대씩 올려가는 방식이다.
Downtime은 발생하지 않으나, 이전 버전과 새로운 버전이 공존하는 시간이 존재한다는 단점이 있다.
2. Blue / Green
Blue / Green 배포는 이전 버전에서 새로운 버전으로 한번에 배포하는 방식이며, 이전버전을 (Blue), 새로운 버전을 (Green) 이라고 칭한다.
Blue / Green 배포방식은 이전 버전과 새로운 버전을 모두 존재하기에 롤백이 쉬우며 Downtime을 없앨 수 있다.
또한, Rolling Update 방식에서 이전버전과 새로운 버전의 공존하는 시간이 존재한다는 단점을 커버할 수 있다.
하지만 Rolling Update 방식보다 2배의 자원을 사용해야 하므로 더 많은 비용이 발생하게 된다.
3. Canary
Canary 방식의 어원을 살펴보자면, '카나리아'라는 새에서 나오게 되었다
"카나리아는 메탄, 일산화탄소에 매우 민감한 새라 가스에 노출되면 죽어버리게 된다. 그래서 옛날에 광부들이 안전하게 일 할 수 있도록 카나리아를 이용하였다. 카나리아가 노래를 계속하고 있는 동안 광부들은 안전함을 느낀 채 일 할 수 있었으며, 만약 카나리아가 죽게 되면 곧바로 탄광을 탈출함으로써 광부들의 생명을 보존할 수 있었다."
Canary 방식은 카나리아 새처럼 위험을 빠르게 감지할 수 있는 방식이다.
특정 서버나 소수의 유저들만 먼저 새로운 버전을 배포하고 사용하고 나서 안전하다고 판단이 되면 그 후에 모든 서버들에 새로운 버전을 배포하는 방식이다.
'DevOps > CI CD' 카테고리의 다른 글
[ArgoCD] ArgoCD에서 Blue/Green 배포하기 (0) | 2021.07.05 |
---|---|
[ArgoCD] Kubernetes Cluster에 ArgoCD 배포하기 (1) | 2021.07.02 |
[Jenkins] Jenkins에 Github를 연동하고 빌드 자동화하기 (2) | 2021.05.23 |
[Code Pipeline] EKS와 Code Pipeline를 사용하여 CI/CD 구축하기 (1) | 2021.05.07 |
[Jenkins] AWS EC2에 Jenkins를 설치해보자 (0) | 2021.04.13 |