Kubernetes의 배포 전략: Rolling Update, Recreate, Blue-Green, Canary

Kubernetes에서 애플리케이션을 배포할 때 다양한 배포 전략(Deployment Strategies) 을 사용할 수 있다.
배포 전략은 무중단 배포(Zero-Downtime Deployment) 을 목표로 하거나, 특정 상황에서 빠른 롤백(Rollback) 이 가능하도록 설계된다.
이번 글에서는 Kubernetes에서 대표적으로 사용되는 Rolling Update, Recreate, Blue-Green, Canary 배포 전략에 대해 살펴본다.


1. Rolling Update (롤링 업데이트)

개요

  • 기존 애플리케이션을 점진적으로 새로운 버전으로 교체하는 방식
  • 한 번에 전체 애플리케이션을 업데이트하지 않고, 일부 Pod 를 새로운 버전으로 교체하면서 점진적으로 배포
  • Deployment에서 기본적으로 제공하는 배포 방식

특징

  • 무중단 배포 가능
  • 문제가 발생하면 바로 이전 버전으로 롤백 가능
  • 새 버전과 기존 버전이 공존하므로, 데이터베이스 변경 시 주의 필요

적용 방법

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v2

2. Recreate (재생성 배포)

개요

  • 기존 애플리케이션을 모두 삭제한 후, 새로운 버전을 배포하는 방식
  • 서비스 중단이 발생하지만, 특정 상황에서는 적합할 수 있음

특징

  • 버전 충돌 없이 깔끔하게 배포 가능
  • 모든 Pod가 동일한 상태에서 실행되므로 예측 가능
  • 서비스 중단이 발생하므로 주의 필요

적용 방법

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
strategy:
type: Recreate
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v2

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

개요

  • 기존 버전(Blue)과 새로운 버전(Green)을 동시에 운영하면서,
    새로운 버전이 준비되면 트래픽을 변경하여 배포하는 방식

특징

  • 기존 버전을 유지하면서 새 버전을 테스트 가능
  • 빠른 롤백 가능
  • 두 개의 환경을 운영해야 하므로 리소스 사용량 증가

적용 방법

apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
  • 트래픽을 Blue 환경에서 Green 환경으로 변경하면 배포 완료

4. Canary Deployment (카나리아 배포)

개요

  • 전체 사용자에게 새 버전을 배포하기 전에, 일부 트래픽만 새 버전으로 보내는 방식
  • 점진적으로 트래픽을 조정하면서 안정성을 확인하고 전체 배포 진행

특징

  • 위험성을 최소화하며 점진적으로 배포 가능
  • 특정 사용자 그룹만 대상으로 새로운 기능 테스트 가능
  • 트래픽을 조절할 수 있는 로드 밸런서Ingress 설정 필요

적용 방법

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
spec:
rules:
- host: my-app.example.com
http:
paths:
- path: /
backend:
service:
name: my-app-v1
port:
number: 80
- path: /new
backend:
service:
name: my-app-v2
port:
number: 80

5. 배포 전략 비교

배포 전략무중단 배포롤백 용이성배포 속도리소스 사용량
Rolling Update✅ 가능✅ 가능⏳ 느림⚡ 적음
Recreate❌ 중단됨✅ 가능🚀 빠름⚡ 적음
Blue-Green✅ 가능✅ 매우 빠름⏳ 느림🔥 높음
Canary✅ 가능✅ 가능⏳ 점진적🔥 높음

6. 정리 및 결론

  • Rolling Update → 기본 배포 방식, 무중단 배포 가능, 안정적
  • Recreate → 서비스 중단 가능하지만 단순한 배포 방식
  • Blue-Green → 빠른 롤백 가능하지만, 리소스 사용량이 많음
  • Canary → 점진적 배포 가능, 실험적 배포에 적합

배포 전략은 애플리케이션 특성 및 요구사항에 따라 적절하게 선택하는 것이 중요하다.
특히 무중단 배포(Zero-Downtime Deployment) 가 중요한 경우, Rolling Update, Blue-Green, Canary 전략을 적극 고려하는 것이 좋다. 🚀


댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다