CI/CD 파이프라인의 마지막 단계인 '배포(Deploy)'에서 무중단 배포 방법 중 하나로 롤링 업데이트(Rolling Update)가 있다.
무중단 배포가 왜 필요할까?
무중단 배포를 적용하지 않은 서비스에서 새로운 버전을 배포하기 위해서는 서비스를 잠시 중단해야 한다.
기존 서비스를 내린 뒤 새로운 버전으로 교체하고 다시 실행하는 방식.
하지만 24/7 운영이 기본인 오늘날, 배포를 위한 서비스 중단은 사용자에게 나쁜 경험을 주고 비즈니스에 손실을 입힐 수 있다.
→ 무중단 배포는 이러한 다운타임을 없애기 위한 배포 전략들을 총칭하는 말이며,
대표적으로 Rolling Update, Blue-Green, Canary 배포가 있다.
롤링 업데이트의 동작 방식
말 그대로 '굴러가듯이' 점진적으로 업데이트하는 방식.
구버전의 애플리케이션 인스턴스들을 한 번에 끄는 대신, 신버전의 인스턴스를 하나씩 추가하고 구버전의 인스턴스를 제거하며 점차 모든 인스턴스를 신버전으로 교체한다.
- 초기 상태 : 여러 개의 구버전(v1) 인스턴스가 로드 밸런서를 통해 트래픽 처리 중
- 신버전 배포 : 신버전(v2) 인스턴스 하나를 새로 실행
- 트래픽 전환 : 새로 실행된 v2 인스턴스가 정상적으로 동작하는지 확인한 후, 로드 밸런서에 연결하여 트래픽을 받기 시작
- 구버전 제거 : 로드 밸런서에서 구버전(v1) 인스턴스 하나를 제거하고 해당 인스턴스를 종료
- 반복 : 모든 구버전 인스턴스가 신버전으로 교체될 때까지 2~4번 과정 반복
서비스는 중단 없이 계속해서 사용자 요청을 처리하면서도, 점차 새로운 버전으로 업데이트될 수 있음
여기서 '인스턴스(Instance)'란?
: 글에서 계속 언급되는 인스턴스는 동일한 역할을 하는 서버의 복제본을 의미
안정적인 서비스를 위해서는 어떤 기능이든 여러 개의 복제본을 두고 운영해야 함
롤링 업데이트는 '여러 개의 인스턴스'가 있다는 것을 전제로 동작
→ 여러 복제본 중 하나씩을 안전하게 교체하기에 무중단 배포가 가능한 것
→ 모놀리식 아키텍처의 서버 인스턴스 / MSA의 각 기능별 인스턴스 모두 동일하게 적용되는 원리
롤링 업데이트의 장점
- 간단하고 직관적 : 쿠버네티스(Kubernetes)의 기본 배포 전략으로 채택되어 있음
- 추가 리소스가 거의 필요 없음 : 전체 인프라를 두 배로 준비해야 하는 다른 배포 방식과 달리 소수의 추가 인스턴스를 실행할 정도의 여유 리소스만 있으면 가능함
- 서비스 중단이 없음 : 배포 과정 내내 항상 하나 이상의 인스턴스가 실행 중이므로 사용자는 서비스 중단을 겪지 않음
롤링 업데이트의 단점
- 배포 중 버전 불일치 : 배포가 진행되는 동안에는 구버전(v1)과 신버전(v2)이 동시에 트래픽을 처리하게 됨. 만약 두 버전이 데이터베이스 스키마나 API 호환성 문제 등이 존재하면 사용자는 오류나 데이터 불일치를 경험할 수 있음
- 느리고 복잡한 롤백 : 배포했던 과정을 역순으로 다시 진행해야 하므로, 배포에 걸렸던 시간만큼 롤백에도 시간이 소요됨. 긴급한 상황에서 즉각적인 대처가 어려움
롤링 업데이트의 단점을 해결하기 위한 대안으로, 운영 환경 전체를 복제하여 더 빠르고 안전하게 배포하는
블루-그린(Blue-Green) 배포가 있다!
포스팅 보러가기 >
[infra] - [CI/CD] 가장 안전한 배포, 블루-그린(Blue-Green) 배포
'infra' 카테고리의 다른 글
| [CI/CD] 위험을 감지하는 카나리(Canary) 배포 (0) | 2025.07.14 |
|---|---|
| [CI/CD] 가장 안전한 배포, 블루-그린(Blue-Green) 배포 (0) | 2025.07.14 |
| [CI/CD] 개발부터 배포까지, 자동화하기 (0) | 2025.07.14 |