์ง๊ธ ์ฌ๋ด์์ ๊ฐ๋ฐ์ค์ธ ์๋น์ค๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์์:
- ์ค์ ์ฌ์ฉ์๊ฐ ์ ์ํด์ Request๋ฅผ ๋ ๋ฆฌ๋ App
- Request๋ฅผ ์ฒ๋ฆฌํ๋ Backend (FastAPI) โ Redis Queue ๋๋ DB์ ์ฝ์
- Queue์ ๋ฃ์ ์์ฒญ์ Dispatcher๊ฐ Celery Worker๋ก ์ ๋ฌ
- Celery Worker๊ฐ Task๋ฅผ ํ๋์ฉ ์คํ
์ฆ, ๊ฐ ํ๋ก๊ทธ๋จ์ ๋จ์ ๋ช
๋ น์ด๋ก ์คํํ๊ณ ์์.
์ด ๊ตฌ์กฐ๋ฅผ Kubernetes๋ก ์ค์ผ์คํธ๋ ์ด์
ํ๋ฉด ๋ ํธํ๊ฒ, ์์ ํ๊ฒ ๊ด๋ฆฌํ ์ ์์๊น?
์ฅ์ ๊ณผ ์ ์ฉ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํด๋ณด์.
1. Kubernetes
1.1 Kubernetes๋?
์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋๊ท๋ชจ ์๋ ๋ฐฐํฌ,
์ค์ผ์ผ๋ง ๋ฐ ๊ด๋ฆฌ๋ฅผ ๊ฐํธํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์คํ ์์ค ๊ธฐ๋ฐ
์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
(Container Orchestration)ย ๋๊ตฌ
์ฝ๊ฒ ๋งํ๋ฉด,
โ์ปจํ
์ด๋๋ฅผ ๊ตฐ์ง์ผ๋ก ๋ฌถ๊ณ , ๊ด๋ฆฌํ๋ ์๋ํ ์์คํ
โ
K8s ์ด๋ฆ ์ ๋
- Kubernetes โ ๊ทธ๋ฆฌ์ค์ด๋ก โ์กฐํ์, ํ์ผ๋ฟ, ์ ์ฅโ ์๋ฏธ
- ๊ฐ๋ฐ์๋ค์ด ์งง๊ฒ ์ค์ฌ์ K8s๋ก ์ฌ์ฉ
- K + 8๊ธ์ ์๋ต + s โ โKโ์ โsโ ์ฌ์ด์ 8๊ธ์ ์กด์ฌ
1.2 ์ปจํ
์ด๋๊ฐ ๋ญ์ง?
- ๋จผ์ , ์ปจํ
์ด๋๊ฐ ๋์ค๊ฒ ๋ ๋ฐฐ๊ฒฝ์ ์์์ผ ํจ

1. ์ ํต์ ๋ฐฐํฌ (Traditional Deployment)
- ํ ๋์ ์ปดํจํฐ(์๋ฒ)์ ํ๋์ OS)๋ฅผ ์ค์นํ๊ณ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ ์คํ
- ์: PC์ Windows ์ค์น โ ๊ฒ์, ์๋ํ๋ก์ธ์, ์ํ ๋ณด์ ํ๋ก๊ทธ๋จ ์ค์น
- ๋ฌธ์ ์ :
- ๋ณด์ ํ๋ก๊ทธ๋จ, ํ์ ํ๋ก๊ทธ๋จ ์ฆ๊ฐ โ ๋ฆฌ์์ค ์ฌ์ฉ๋ ์ฆ๊ฐ, ์๋ ์ ํ
- OS ๋จ์๋ก ๊ฒฉ๋ฆฌ๋์ง ์์ ํ๋ก๊ทธ๋จ ๊ฐ ์ถฉ๋ ๊ฐ๋ฅ
- ํ์ฅ/๋ฐฐํฌ ์ ์ฐ์ฑ ๋ถ์กฑ
2. ๊ฐ์ํ ๋ฐฐํฌ (Virtualized Deployment)
- ํ๋์ ์๋ฒ(OS) ์์ ์ฌ๋ฌ ๊ฐ์ ์ปดํจํฐ(VM)๋ฅผ ์์ฑ
- ํ์ดํผ๋ฐ์ด์ (Hypervisor)๊ฐ OS์ VM ์ฌ์ด ์ค๊ฐ ๊ณ์ธต ์ญํ
- VM๋ง๋ค OS ์ค์น ๊ฐ๋ฅ โ ํ๋ก๊ทธ๋จ ๋
๋ฆฝ ์คํ
- ์ฅ์ :
- ํ๋ก๊ทธ๋จ ์ถฉ๋ ๊ฒฉ๋ฆฌ ๊ฐ๋ฅ
- ์ด์์ฒด์ ๋จ์๋ก ํ๊ฒฝ ๋ถ๋ฆฌ
- ๋จ์ :
- VM๋ง๋ค OS ํฌํจ โ ๋ฆฌ์์ค ์ฌ์ฉ๋ ๋ง์
- VM ๊ธฐ๋ ์๊ฐ ๋๋ฆผ
3. ์ปจํ
์ด๋ ๋ฐฐํฌ (Container Deployment)
- ํ์ดํผ๋ฐ์ด์ โ Container Runtime์ผ๋ก ๋์ฒด
- VM โ Container๋ก ๋์ฒด
- ์ปจํ
์ด๋๋ OS๋ฅผ ๋งค๋ฒ ์ค์นํ ํ์ ์์ด ์ปค๋์ ๊ณต์ ํ๋ฉด์ ํ๋ก๊ทธ๋จ ๊ฒฉ๋ฆฌ
- ์ฅ์ :
- ๊ฐ๋ณ๊ณ ๋น ๋ฆ โ OS ์ ์ฒด๋ฅผ ํฌํจํ์ง ์์
- ๋ฆฌ์์ค ํจ์จ์ โ ๋ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์
์คํ ๊ฐ๋ฅ
- ๋ฐฐํฌ/ํ์ฅ ์ฉ์ด โ ์ด๋ฏธ์ง ๊ธฐ๋ฐ, ๋น ๋ฅธ ์์
- ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ ์ ๊ณต โ ํ๋ก๊ทธ๋จ ๊ฐ ์ถฉ๋ ์ต์ํ
Container Runtime: ์ปจํ
์ด๋๋ฅผ ์ค์ ๋ก ์คํํ๊ณ ๊ด๋ฆฌํ๋ ์ํํธ์จ์ด
| ๋ฐฐํฌ ๋ฐฉ์ | OS ํฌํจ ์ฌ๋ถ | ๊ฒฉ๋ฆฌ ์์ค | ๋ฆฌ์์ค ํจ์จ | ๊ธฐ๋ ์๋ | ํน์ง |
|---|
| ์ ํต์ ๋ฐฐํฌ | OS 1๊ฐ | ๋ฎ์ | ๋ฎ์ | ๋น ๋ฆ | ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ๊ฐ์ OS์์ ์คํ |
| ๊ฐ์ํ ๋ฐฐํฌ (VM) | VM๋ง๋ค OS ํฌํจ | ๋์ | ๋ฎ์ | ๋๋ฆผ | ํ๋ก๊ทธ๋จ ๊ฐ ์ถฉ๋ ๋ฐฉ์ง, OS ๋จ์ ๊ฒฉ๋ฆฌ |
| ์ปจํ
์ด๋ ๋ฐฐํฌ | OS ๊ณต์ , ์ปค๋๋ง | ๋์ | ๋์ | ๋งค์ฐ ๋น ๋ฆ | ํ๋ก๊ทธ๋จ ๋จ์ ๊ฒฉ๋ฆฌ, ๊ฒฝ๋, ๋ฐฐํฌ/ํ์ฅ ์ฉ์ด |
์ฆ, ์ปจํ
์ด๋๋ ๊ธฐ์กด ์ ํต์ ๋ฐฐํฌ์ ๊ฐ์ํ ๋ฐฐํฌ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ,
ํ๋ก๊ทธ๋จ ๋จ์ ๊ฒฉ๋ฆฌ์ ๊ฐ๋ฒผ์ด ๋ฆฌ์์ค ์ฌ์ฉ,
๋น ๋ฅธ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ํ๊ฒฝ์ ์ต์ ํ๋ ๋ฐฐํฌ ๋ฐฉ์์ ์ ๊ณตํจ
1.3 ์ค์ผ์คํธ๋ ์ด์
(Orchestration)์ด๋?
- ๋ค์์ ์ปจํ
์ด๋๋ฅผ ๋ฐฐํฌ, ํ์ฅ, ๋ชจ๋ํฐ๋ง, ์ฅ์ ๋์๊น์ง ์๋ํํ๋ ๊ธฐ์
๋ง์น ์ปดํจํฐ ๊ฒ์์์ ์ฌ๋ฌ ์บ๋ฆญํฐ๋ฅผ ๋์์ ๊ด๋ฆฌํ๊ณ ,
๊ทธ๋ค์ด ์ ํ๋ ฅํ๋ฉฐ ๋ฏธ์
์ ์ํํ ์ ์๋๋ก ์งํํ๋ ๊ฒ์ฒ๋ผ,
์ปดํจํฐ ํ๋ก๊ทธ๋จ(์ ํ๋ฆฌ์ผ์ด์
)๋ค์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํด ์ฃผ๋ ๋๊ตฌ์
๋๋ค.
ํนํ ์ด ํ๋ก๊ทธ๋จ๋ค์ '์ปจํ
์ด๋'๋ผ๊ณ ๋ถ๋ฆฌ๋ ํน๋ณํ ์์ ์์ ๋ด๊ฒจ ์์ผ๋ฉฐ,
์ฟ ๋ฒ๋คํฐ์ค๋ ์ด๋ค ์์๋ฅผ ํ์ํ ๊ณณ์ ์ฎ๊ธฐ๊ณ , ์์ ์์ ํ๋ก๊ทธ๋จ์ด ์ ๋์๊ฐ๋๋ก ๋์
์ ~ ์ ์ ๋ง์์ง๋ ์ปจํ
์ด๋๋ค์ ํตํฉ์ ์ผ๋ก
๋ฌธ์ ์์ด ๋์๊ฐ ์ ์๋๋ก ํด์ฃผ๋
์๋ ์ปจํ
์ด๋ ๊ด๋ฆฌ ์๋ฃจ์
์ด๊ตฌ๋!
1.4 Kubernetes์ ํต์ฌ ๊ธฐ๋ฅ
-
์๋ ๋ณต๊ตฌ(Self-healing)
- ์คํจํ ์ปจํ
์ด๋ ์๋ ์ฌ์์
- ์ ์๋ ์ํ์ ๋ค๋ฅด๋ฉด ์๋ ๊ต์ฒด
-
๋ก๋ ๋ฐธ๋ฐ์ฑ(Load Balancing)
- ์ ํ๋ฆฌ์ผ์ด์
ํธ๋ํฝ ์๋ ๋ถ์ฐ
- ์ธ๋ถ ํธ๋ํฝ ์ฒ๋ฆฌ์ฉ ๊ณ ์ IP ์ ๊ณต
-
์๋น์ค ๋ฐ๊ฒฌ(Service Discovery)
- ์ปจํ
์ด๋ ๊ฐ ํต์ ์๋ ์ค์
-
ํ์ฅ์ฑ(Scaling)
- ๋ช
๋ น์ด ํ๋๋ก ์ปจํ
์ด๋ ์ ์ฝ๊ฒ ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๊ธฐ ๊ฐ๋ฅ
1.5 Kubernetes์ ํต์ฌ ๊ตฌ์ฑ ์์
1.6 Kubernetes๋ฅผ ์ ์ฉํ์ ๋์ ์ฅ์
-
ํ์ฅ์ฑ(Scalability)
- ์์ฒญ ํญ์ฃผ ์ Pod ์๋ฅผ ์๋์ผ๋ก ๋๋ฆฌ๊ณ , ํธ๋ํฝ ๊ฐ์ ์ ์ค์
- ์: FastAPI Backend 2 โ 10 Pod ์๋ ํ์ฅ
-
์๊ธฐ ์น์ (Self-Healing)
- Pod Crash ์ ์๋ ์ฌ์์
- ๋
ธ๋ ์ฅ์ ์ ๋ค๋ฅธ ๋
ธ๋๋ก ์ฌ๋ฐฐ์น
-
๋ฐฐํฌ ์ฉ์ด์ฑ(Deployment)
- Rolling Update, Rollback ์ง์
- ๋ค์ดํ์ ์ต์ํ
-
ํ๊ฒฝ ๊ด๋ฆฌ(Config)
- ConfigMap/Secret์ผ๋ก ํ๊ฒฝ ๋ณ์์ ์ธ์ฆ ์ ๋ณด ๊ด๋ฆฌ
- ์ด๋ฏธ์ง ๋ฒ์ ๋ณ๊ฒฝ๋ง์ผ๋ก ์ ์ฒด ์๋น์ค ์
๋ฐ์ดํธ ๊ฐ๋ฅ
-
์๋น์ค ์ถ์ํ
- Pod IP ์ง์ ๊ด๋ฆฌ ํ์ ์์ โ Service๊ฐ ๋ด๋ถ ํต์ ๋ด๋น
- LoadBalancer/Ingress๋ก ์ธ๋ถ ์ ๊ทผ ์ ์ด
-
๋ชจ๋ํฐ๋ง๊ณผ ๋ก๊น
- ํตํฉ ๋ก๊ทธ/๋ชจ๋ํฐ๋ง ์์คํ
๊ณผ ์ฝ๊ฒ ์ฐ๋ ๊ฐ๋ฅ
- Prometheus, Grafana, ELK ์คํ ๋ฑ
-
DevOps ์นํ
- CI/CD ํ์ดํ๋ผ์ธ๊ณผ ์ฐ๊ณ ์ฉ์ด
- IaC(Infrastructure as Code) ๊ฐ๋ฅ
2. ๊ธฐ์กด ํ๊ฒฝ์ Kubernetes๋ฅผ ์ ์ฉํด๋ณด์
2.1 App
- ์ ์ฉ ๋ฐฉ์: Deployment + Service(LB), Auto-scaling ๊ฐ๋ฅ
- ๊ธฐ์กด ํ๊ฒฝ: ๋ช
๋ น์ด๋ก ์๋ ์คํ
- Kubernetes ์ ์ฉ ํ: Deployment๋ก ์๋ ๋ฐฐํฌ, ๋กค๋ง ์
๋ฐ์ดํธ ๊ฐ๋ฅ โ ๊ด๋ฆฌ ํธ๋ฆฌ, ๋ค์ดํ์ ์ต์ํ
2.2 Backend (FastAPI)
- ์ ์ฉ ๋ฐฉ์: Deployment, Pod ์ ์กฐ์ , LoadBalancer Service๋ก ์์ฒญ ๋ถ์ฐ
- ๊ธฐ์กด ํ๊ฒฝ: ๋จ์ผ ์ธ์คํด์ค
- Kubernetes ์ ์ฉ ํ: Pod ๋ณต์ ๊ฐ๋ฅ, ์์ฒญ ๋ถ์ฐ โ ํธ๋ํฝ ์ฆ๊ฐ ์ ์๋ ํ์ฅ, ์์ ์ฑ ํฅ์
2.3 Redis Queue
- ์ ์ฉ ๋ฐฉ์: StatefulSet ๋๋ Deployment, Persist Volume ์ฌ์ฉ
- ๊ธฐ์กด ํ๊ฒฝ: ์๋ ๊ด๋ฆฌ
- Kubernetes ์ ์ฉ ํ: Pod ์ฌ์์ ์ ๋ฐ์ดํฐ ์ ์ง ๊ฐ๋ฅ, ์์ ์ ์ด์ ๊ฐ๋ฅ
2.4 Dispatcher + Celery Worker
- ์ ์ฉ ๋ฐฉ์: Dispatcher๋ Deployment, Celery Worker๋ Job/Deployment, ํ์ ์ Worker ์ ์กฐ์
- ๊ธฐ์กด ํ๊ฒฝ: ์๋ ์คํ, ์์ฒญ ์ฒ๋ฆฌ ๋ณ๋ ฌํ ์ด๋ ค์
- Kubernetes ์ ์ฉ ํ: ์๋ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ, ์์ฒญ ์ฒ๋ฆฌ ๋ณ๋ ฌํ ์ฉ์ด, ์ฅ์ ๋์ ์๋ํ
2.5 Config ๊ด๋ฆฌ
- ์ ์ฉ ๋ฐฉ์: ConfigMap / Secret์ผ๋ก ํ๊ฒฝ ๋ณ์, DB URL, Redis URL ๊ด๋ฆฌ
- ๊ธฐ์กด ํ๊ฒฝ: .env ํ์ผ ์๋ ๊ด๋ฆฌ
- Kubernetes ์ ์ฉ ํ: ์์ ํ๊ฒ ์ค์ ๊ด๋ฆฌ, ํ๊ฒฝ ๋ถ๋ฆฌ ์ฉ์ด, CI/CD ์ฐ๊ณ ๊ฐ๋ฅ
2.6 ์ ๋ฐ์ ๋ณํ ์์ฝ
| ํ๋ก๊ทธ๋จ | ๊ธฐ์กด ํ๊ฒฝ | Kubernetes ์ ์ฉ ํ |
|---|
| App | ์๋ ์คํ | Deployment + LB, Auto-scaling |
| Backend | ๋จ์ผ ์ธ์คํด์ค | Pod ๋ณต์ , LoadBalancer ์์ฒญ ๋ถ์ฐ |
| Redis Queue | ์๋ ๊ด๋ฆฌ | StatefulSet/Deployment, Persist Volume |
| Dispatcher + Celery | ์๋ ์คํ | Deployment + Job/Worker, ์๋ ์ค์ผ์ผ๋ง |
| ์ฅ์ ๋์ | ์๋ ์ฌ์์ | Pod Crash ์ ์๋ ์ฌ์์(Self-healing) |
| ํ์ฅ | ์๋ ์กฐ์ | Horizontal Pod Autoscaler(HPA) |
| ํ๊ฒฝ ๋ณ์ | .env ํ์ผ | ConfigMap/Secret์ผ๋ก ์์ ๊ด๋ฆฌ |
| ์๋น์ค Discovery | ์ง์ IP/Port ๊ด๋ฆฌ | Kubernetes Service + ๋ด๋ถ DNS ์ ๊ณต |