Docker Compose는 개발 환경이나 소규모 Production 환경에서 빠르고 편리하게 Container를 관리할 수 있는 도구입니다.
하지만 서비스 규모가 커지고 운영해야 하는 Container가 증가하면 한계가 발생합니다.
초기 구조:
사용자
↓
Docker Compose
↓
Container
대규모 환경:
사용자
↓
Load Balancer
↓
Kubernetes Cluster
↓
Node 여러 개
↓
Container 여러 개
Kubernetes는 Container를 자동으로 배포하고 관리하는 Container Orchestration 플랫폼입니다.
이번 글에서는 Docker Compose와 Kubernetes 차이부터 전환이 필요한 시점, Compose 파일 변환 방법, Migration 과정, Production 운영 구조까지 알아보겠습니다.
Docker Compose와 Kubernetes 차이
Docker Compose:
목적:
단일 서버 Container 관리
구조:
Host
↓
Docker Engine
↓
Docker Compose
↓
Container
장점:
- 설정 간단
- 빠른 개발 환경 구축
- 관리 쉬움
Kubernetes:
목적:
대규모 Container 운영
구조:
Cluster
↓
Node
↓
Pod
↓
Container
장점:
- 자동 Scaling
- 장애 복구
- Load Balancing
- Rolling Update
Docker Compose에서 Kubernetes 전환이 필요한 시점
다음 상황이면 Kubernetes를 고려합니다.
Container 증가
예:
Container 5개
↓
Container 100개
관리 복잡도 증가
서버 여러 대 운영
기존:
Server 1대
변경:
Server 10대
자동 장애 복구 필요
문제:
Container 종료
↓
수동 재시작
Kubernetes:
자동 복구
Docker Compose와 Kubernetes 구조 비교
Docker Compose:
docker-compose.yml
↓
Service
↓
Container
Kubernetes:
Deployment
↓
Pod
↓
Container
변환:
Compose Service
↓
Kubernetes Deployment
Docker Compose 파일 Kubernetes 변환
기존 Compose:
services:
app:
image: my-app
ports:
- "3000:3000"
Kubernetes 구조:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: my-app
변경:
Service
↓
Deployment
↓
Pod
Docker Compose 환경 변수 Migration
Compose:
environment:
DATABASE_HOST: mysql
Kubernetes:
env:
- name: DATABASE_HOST
value: mysql
운영 환경에서는 ConfigMap과 Secret을 사용합니다.
구조:
ConfigMap
↓
Application 설정
Secret
↓
비밀번호 관리
Docker Compose Volume Kubernetes 전환
Compose:
volumes:
- data:/var/lib/mysql
Kubernetes:
Persistent Volume
↓
Persistent Volume Claim
↓
Container
구조:
Application
↓
PVC
↓
Storage
장점:
- 데이터 유지
- Node 이동 가능
Docker Compose Network Kubernetes 전환
Compose:
Docker Network
↓
Container 통신
Kubernetes:
Cluster Network
↓
Service Discovery
예:
app-service
↓
Database-service
Kubernetes 내부 DNS가 자동 관리합니다.
Docker Compose Scaling Kubernetes 전환
Compose:
docker compose up -d --scale app=5
Kubernetes:
replicas: 5
구조:
Deployment
↓
Pod 5개 생성
장점:
자동 Scaling 가능
Kubernetes Auto Scaling 구조
Kubernetes는 자동 확장이 가능합니다.
구조:
Traffic 증가
↓
CPU 증가
↓
Horizontal Pod Autoscaler
↓
Pod 증가
예:
3 Pods
↓
10 Pods
Docker Compose 배포 방식 변화
Compose:
명령 실행
↓
Container 실행
Kubernetes:
Desired State 선언
↓
Kubernetes Controller 관리
예:
원하는 상태:
Pod 3개 유지
장애:
Pod 1개 종료
Kubernetes:
자동 생성
Docker Compose CI/CD Kubernetes 전환
기존:
GitHub Actions
↓
Docker Compose Deploy
변경:
GitHub Actions
↓
Docker Image Build
↓
Registry
↓
kubectl apply
↓
Kubernetes
배포:
kubectl apply -f deployment.yaml
Docker Compose Rollback Kubernetes 방식
Compose:
이전 Image 변경
↓
재배포
Kubernetes:
kubectl rollout undo deployment app
자동 Version 관리:
v1
↓
v2
↓
Rollback v1
Docker Compose Monitoring Kubernetes 전환
Kubernetes 환경에서는 Monitoring 규모가 커집니다.
사용:
- Prometheus
- Grafana
- Alertmanager
구조:
Container
↓
Metrics
↓
Monitoring
↓
Alert
Docker Compose에서 Kubernetes로 Migration 순서
추천 순서:
1단계
현재 Compose 구조 분석
Service
Volume
Network
Environment
2단계
Container Image 정리
3단계
Kubernetes YAML 작성
4단계
Test Cluster 배포
5단계
Production Migration
구조:
Docker Compose
↓
Test Kubernetes
↓
Production Kubernetes
Docker Compose Kubernetes 전환 시 주의사항
Stateless 구조 변경
Container 내부 데이터 저장 금지
Secret 관리 변경
환경 변수 직접 저장 금지
Storage 재설계
Volume 구조 확인 필요
Network 구조 변경
Service 기반 통신 필요
Production Kubernetes 구조
최종 구조:
User
↓
Cloud Load Balancer
↓
Ingress
↓
Kubernetes Cluster
↓
Deployment
↓
Pod
↓
Container
↓
Database
↓
Storage
↓
Monitoring
Docker Compose Kubernetes 전환 Best Practice
추천:
- Image Version 관리
- Secret 분리
- CI/CD 구축
- Monitoring 적용
- Backup 준비
- 단계적 Migration
자주 묻는 질문
Docker Compose를 바로 Kubernetes로 바꿀 수 있나요?
가능하지만 Production에서는 구조 검토 후 단계적으로 전환하는 것이 좋습니다.
모든 서비스가 Kubernetes가 필요한가요?
아닙니다.
작은 서비스는 Docker Compose만으로 충분할 수 있습니다.
Kubernetes가 Docker Compose보다 무조건 좋은가요?
아닙니다.
규모와 운영 목적에 따라 선택해야 합니다.
가장 먼저 바꿔야 하는 부분은 무엇인가요?
Container Image, Environment, Volume 구조부터 정리하는 것이 좋습니다.
마무리
Docker Compose Kubernetes 전환은 서비스가 성장했을 때 자연스럽게 진행하는 운영 확장 과정입니다.
최종 흐름:
Docker Compose
↓
Container 운영
↓
Scaling 필요
↓
Cluster 운영
↓
Kubernetes 전환
↓
Cloud Native 환경
Docker Compose를 이해하면 Kubernetes 구조도 훨씬 쉽게 이해할 수 있습니다.
다음 글에서는 대규모 서버 운영 환경에서 필요한 Docker Compose Enterprise 운영 구조를 알아보겠습니다.