Java/Spring 개발자가 알아야 할 Kubernetes 배포 전략
웹 서비스를 운영하다 보면 애플리케이션을 업데이트해야 하는 상황이 자주 발생합니다.
하지만 서비스 중단 없이 배포하는 것은 항상 어려운 문제였습니다.
전통적인 Java 서버 환경에서는 다음과 같은 방식으로 배포했습니다.
↓
서버 접속
↓
애플리케이션 재시작
이 방식은 배포 중에 서비스가 잠시 중단되는 문제가 있습니다.
Kubernetes에서는 Rolling Update 전략을 사용하여 무중단 배포를 구현할 수 있습니다.
1. 전통적인 배포 방식의 문제
기존 Java 웹 애플리케이션 배포 구조는 다음과 같습니다.
└ Tomcat
└ application.war
배포 과정
↓
Tomcat 재시작
↓
서비스 중단
이 방식은 다음과 같은 문제가 있습니다.
- 서비스 중단
- 사용자 요청 실패
- 배포 리스크 증가
특히 트래픽이 많은 서비스에서는 문제가 더욱 커집니다.
2. Kubernetes의 Rolling Update 개념
Kubernetes에서는 애플리케이션을 Pod 단위로 실행합니다.
구조
↓
ReplicaSet
↓
Pod
Rolling Update는 기존 Pod을 하나씩 새로운 Pod으로 교체하는 방식입니다.
예를 들어 다음과 같은 상황을 가정해 보겠습니다.
현재 상태
Pod2 (v1)
Pod3 (v1)
새 버전 배포
Pod2 (v1)
Pod3 (v1)
다음 단계
Pod2 (v2)
Pod3 (v1)
마지막
Pod2 (v2)
Pod3 (v2)
이 과정에서 서비스는 계속 유지됩니다.
3. Spring Boot 애플리케이션 배포 구조
Spring Boot 애플리케이션을 Kubernetes에서 운영할 때 일반적인 구조는 다음과 같습니다.
↓
Service
↓
Pod1
Pod2
Pod3
Service는 로드밸런싱 역할을 합니다.
즉 새로운 Pod이 준비되면 자동으로 트래픽이 분산됩니다.
4. Rolling Update Deployment 설정
Kubernetes에서는 Deployment 설정을 통해 Rolling Update를 구성할 수 있습니다.
예시
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-app
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
selector:
matchLabels:
app: spring-app
template:
metadata:
labels:
app: spring-app
spec:
containers:
- name: spring-app
image: spring-app:v2
ports:
- containerPort: 8080
설정 설명
- maxUnavailable
동시에 중지될 수 있는 Pod 수 - maxSurge
동시에 추가로 생성되는 Pod 수
이 설정을 통해 서비스 중단 없이 배포가 진행됩니다.
5. Rolling Update 동작 과정
Spring Boot 애플리케이션 배포 과정은 다음과 같습니다.
1. 새로운 Pod 생성
2. Pod 준비 상태 확인
3. 트래픽 연결
4. 기존 Pod 종료
이 과정에서 중요한 요소는 Readiness Probe입니다.
6. Readiness Probe 설정
Readiness Probe는 애플리케이션이 트래픽을 받을 준비가 되었는지 확인합니다.
Spring Boot에서는 보통 Actuator health endpoint를 사용합니다.
예
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
동작 방식
Pod 생성
↓
애플리케이션 시작
↓
/actuator/health 확인
↓
Service 연결
즉 준비되지 않은 Pod에는 트래픽이 전달되지 않습니다.
7. 무중단 배포 구조
Spring Boot + Kubernetes 무중단 배포 구조는 다음과 같습니다.
↓
Service
↓
Pod(v1)
Pod(v1)
Pod(v1)
배포 시작
Pod(v1)
Pod(v1)
완료
Pod(v2)
Pod(v2)
사용자는 서비스 중단을 느끼지 못합니다.
8. 실제 운영에서의 추가 구성
실제 운영 환경에서는 다음 요소도 함께 구성합니다.
Liveness Probe
애플리케이션 장애 감지
↓
자동 재시작
HPA (Horizontal Pod Autoscaler)
트래픽 증가 시 Pod 자동 확장
↓
Pod 자동 증가
결론
Kubernetes의 Rolling Update는 서비스 중단 없이 애플리케이션을 배포할 수 있는 강력한 기능입니다.
Spring Boot 애플리케이션을 Kubernetes에서 운영하면 다음과 같은 장점을 얻을 수 있습니다.
- 무중단 배포
- 자동 복구
- 자동 확장
- 안정적인 운영
Java/Spring 개발자가 Kubernetes 배포 전략을 이해하면 클라우드 네이티브 환경에서 안정적인 서비스 운영이 가능해집니다.
'Platform > Infra(DevOps)' 카테고리의 다른 글
| Spring Boot + Kubernetes 운영 아키텍처 정리 (0) | 2026.03.05 |
|---|---|
| Spring Boot + Kubernetes CI/CD 배포 파이프라인 (0) | 2026.03.05 |
| Kubernetes에서 Spring Boot 로그와 모니터링 구성 (0) | 2026.03.05 |
| 레거시 자바 생태계에서 Kubernetes의 의미 (0) | 2026.03.05 |
| Elasticsearch 실무 도입 가이드 – 용도, 사용법, 그리고 RDB·Redis·DB Full-Text와의 차이점 정리 (0) | 2026.03.03 |
