Từ Docker Compose đến Orchestration thật
Giới hạn của Docker Compose ở quy mô production, Docker Swarm như bước đệm nhẹ, và khi nào thực sự cần Kubernetes.
Docker Compose tuyệt vời cho local dev nhưng không phải công cụ orchestration production (không tự phục hồi khi 1 máy chết, không scale qua nhiều máy tự động). Module này là cầu nối tư duy trước khi đào sâu Kubernetes ở Module 13 khoá AI Engineer — giúp bạn hiểu "khoảng trống" mà Kubernetes lấp vào, không học K8s như một hộp đen.
🎯 Mục tiêu học tập
- Nhận diện rõ giới hạn của Docker Compose khi vận hành production thật
- Hiểu Docker Swarm là gì — orchestration tích hợp sẵn trong Docker, đơn giản hơn Kubernetes
- So sánh Swarm và Kubernetes để chọn đúng công cụ theo quy mô nhu cầu
- Kết nối các khái niệm Compose đã học sang khái niệm tương ứng trong Kubernetes
Giới hạn của Docker Compose ở Production
Compose (Module 5) được thiết kế cho 1 máy duy nhất — không có khái niệm "nhiều node", không tự động khởi động lại service trên máy khác nếu máy hiện tại chết, không có cơ chế rolling update an toàn (cập nhật dần từng instance, giữ dịch vụ luôn khả dụng), và không tự động scale số replica theo tải. Với 1 service nhỏ chạy trên 1 VPS, Compose vẫn là lựa chọn hợp lý và đơn giản — nhưng khi cần độ tin cậy cao (high availability) hoặc scale ngang qua nhiều máy, cần một lớp orchestration thực thụ.
Docker Swarm — Orchestration tích hợp sẵn, đơn giản hơn
Swarm là chế độ orchestration tích hợp sẵn trong chính Docker Engine — cú pháp file định nghĩa service gần giống hệt Compose (thực tế Compose file dùng được gần như nguyên vẹn cho Swarm), độ phức tạp vận hành thấp hơn nhiều so với Kubernetes:
# Khởi tạo 1 Swarm cluster (trên máy đầu tiên — sẽ là manager node)
docker swarm init
# Deploy 1 stack (dùng lại cú pháp Compose file quen thuộc)
docker stack deploy -c docker-compose.yml my-app
# Scale 1 service lên 3 replica, tự phân phối qua các node
docker service scale my-app_api=3
Swarm phù hợp cho team nhỏ cần high-availability cơ bản mà không muốn gánh độ phức tạp vận hành của Kubernetes — nhưng hệ sinh thái công cụ/cộng đồng hỗ trợ nhỏ hơn nhiều so với Kubernetes, và hầu hết công cụ AI/data hiện đại (Databricks, nhiều managed service) không hỗ trợ Swarm.
So sánh Swarm vs Kubernetes — chọn đúng công cụ
| Tiêu chí | Docker Swarm | Kubernetes |
|---|---|---|
| Độ phức tạp vận hành | Thấp — gần giống Compose | Cao — nhiều khái niệm mới (Pod, Deployment, Service, Ingress...) |
| Hệ sinh thái & cộng đồng | Nhỏ, ít phát triển thêm | Rất lớn, chuẩn công nghiệp, được mọi cloud hỗ trợ managed |
| Tính năng nâng cao (autoscaling theo metric tuỳ chỉnh, service mesh, operator...) | Hạn chế | Phong phú, hệ sinh thái add-on khổng lồ |
| Phù hợp nhất cho | Team nhỏ, hệ thống không quá phức tạp, ưu tiên đơn giản | Hệ thống production nghiêm túc, cần tích hợp managed service cloud (đã học ở Module 13 khoá AI Engineer) |
Với lộ trình bạn đang theo (AI Engineer/Data Engineer), Kubernetes gần như chắc chắn là công cụ bạn sẽ gặp trong công việc thực tế (managed qua EKS/AKS/GKE) — Swarm đáng học để hiểu khái niệm orchestration một cách nhẹ nhàng trước, nhưng không cần thành thạo sâu nếu mục tiêu là production thật.
Ánh xạ khái niệm: Compose → Kubernetes
| Docker Compose | Khái niệm tương ứng trong Kubernetes |
|---|---|
services | Deployment + Pod |
ports | Service (ClusterIP/NodePort) + Ingress |
volumes | PersistentVolume + PersistentVolumeClaim |
environment | ConfigMap + Secret |
depends_on + healthcheck | readinessProbe + livenessProbe |
docker compose up --scale api=3 | replicas: 3 trong Deployment spec, hoặc HorizontalPodAutoscaler |
Bảng ánh xạ này là "bản đồ" giúp Module 13 khoá AI Engineer (triển khai Kubernetes) dễ tiếp thu hơn nhiều — phần lớn khái niệm Kubernetes không hề mới, chỉ là phiên bản "công nghiệp hoá, phân tán qua nhiều node" của những gì bạn đã quen thuộc từ Compose.
🏋️ Bài tập thực hành
Khởi tạo 1 Swarm cluster cục bộ (1 node là đủ để thử nghiệm), deploy lại stack đã xây ở Module 5 bằng docker stack deploy, thử scale 1 service lên nhiều replica. Sau đó, với mỗi dòng trong bảng ánh xạ Compose→Kubernetes, viết 1 câu giải thích ngắn bằng từ ngữ của riêng bạn — bài tập này chuẩn bị trực tiếp cho Module 13 khoá AI Engineer.
📚 Tài nguyên học tập
-
Docker — Swarm mode overviewTài liệu chính thức Docker SwarmDocs
-
Kubernetes — DocumentationTài liệu chính thức Kubernetes (đào sâu ở Module 13 khoá AI Engineer)Docs
-
Kubernetes — Compose to Kubernetes (kompose)Công cụ chuyển đổi tự động file Compose sang manifest KubernetesTool
✅ Tự đánh giá hoàn thành
- Giải thích được giới hạn của Docker Compose ở quy mô production
- Thực hành thành công deploy 1 stack lên Docker Swarm cục bộ
- So sánh được Swarm và Kubernetes, chọn đúng công cụ theo tình huống
- Ánh xạ được các khái niệm Compose sang khái niệm Kubernetes tương ứng