eelseungmin

무중단 배포

by eelseungmin

무중단 배포란?

운영 중인 서비스가 하나 있다고 가정하자. 서비스의 새로운 버전을 배포하면서 기존 버전을 종료하면서 사용자가 서비스를 사용할 수 없게 되는 시간(다운타임)이 발생하게 되는데, 이러한 다운타임 없이 사용자에게 새로운 버전이 배포될 수 있도록 하는 것을 말한다.

 

무중단 배포를 위한 전략

1. 롤링 배포(Rolling Deployment)

구버전의 인스턴스를 신버전으로 하나씩 교체해 나가는 방식을 말한다.

서비스 중인 인스턴스 하나를 로드밸런서에서 라우팅되지 않도록 한 뒤 신버전이 배포된 후 다시 라우팅하도록 한다.

 

차례대로 배포가 이루어지기 때문에 상황에 따라 손쉽게 롤백을 할 수 있다는 이점이 존재한다.

다만 배포가 이루어지는 동안 인스턴스 수가 감소하기 때문에 서비스가 다운될 위험이 동반된다.

또한 구버전과 신버전이 공존하기 때문에 공유하는 자원에 있어서 호환성 문제가 발생할 수도 있다.

 

2. 블루-그린 배포(Blue-Green Deployment)

구버전을 블루, 신버전을 그린으로 지칭하여 운영 환경에 구버전과 동일한 스펙의 신버전을 배포한 후 로드밸런서를 통해 일제히 신버전으로 모든 트래픽이 전환되도록 하는 방식을 말한다. 

 

구버전과 동일한 스펙을 갖춘 신버전을 배포하기 때문에 실제 환경에서 신버전을 미리 테스트해볼 수 있는 장점이 있으며, 롤링 배포처럼 롤백이 빠르다.

다만 해당 배포 방식을 위해 하나의 버전만 운용할 때 대비 두 배의 시스템 자원을 필요로 한다는 단점이 있다.

 

3. 카나리 배포(Canary Deployment)

잠재적 문제를 발견하기 위한 배포 방식으로 신버전의 제공 범위를 서서히 늘려가면서 모니터링과 피드백 과정을 거치는 것이 특징이다.

신제품을 경험하는 사용자를 로드밸런서를 통해 조절할 수 있는데, 특정 사용자나 특정 비율로 구분해 버전을 나누어 제공할 수 있다. 이는  A/B 테스트와 비교 모니터링에 유용한 방식이라고 할 수 있다.

 

블루-그린 배포와 비슷하게 실제 환경에서 신버전을 테스트하지만, 점진적으로 배포함으로써 부정적 영향을 최소화할 수 있다.

롤링 배포처럼 신/구버전이 공존하므로 호환성 문제가 발생할 수 있다.

 

참조

https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3

'Note > Infra' 카테고리의 다른 글

[Nginx] HTTPS 적용하기  (0) 2024.02.04
[Docker] Docker Compose로 Container에 환경변수 주입하기  (0) 2024.01.14

블로그의 정보

eel.log

eelseungmin

활동하기