7 phút đọc

Protected: So sánh Kubernetes, Docker Swarm và Nomad

Tuấn Bùi Tài
Đăng ngày 30/10/2025 Principal DevOps Engineer
Protected: So sánh Kubernetes, Docker Swarm và Nomad

Hôm nay tôi nói chút về việc chọn nền tảng để orchestration container. Nói là chọn chứ đa phần mọi người chọn Kubernetes, vì chọn Docker Swarm hay Nomad vì đơn giản trong CV “không được sang”.

3d5d3c3b-9166-4307-9f2b-613efc40652a

Kubernetes thì không cần nói rồi cả thế giới dùng ông to ông bé nào cũng đều muốn “hạ tầng tôi chạy kubernetes”, Swarm thì nhẹ dễ dùng rồi, còn Nomad của HashiCorp (chắc có bạn chưa biết) build với triết lý đơn giản và multi-workload. Nhưng khi triển khai microservices ở quy mô vừa và lớn, đặc biệt trên các hạ tầng VPS tối ưu chi phí như ở Việt Nam, thì câu chuyện hiệu năng, độ ổn định và tỷ suất tài nguyên/hiệu năng mới là thứ quyết định.

Đầu tuần đang sẵn required từ sếp, tôi đã dành thời gian để benchmark chi tiết cả ba công cụ này trong một simulated e-commerce system. Đây chỉ một bài benchmark nhanh nên không thể cover hết điểm mạnh điểm yếu của các công nghệ, và với một vài yếu tố cụ thể để mọi người thêm góc nhìn thực tế cho bạn nào tìm hiểu đến thì tiết kiệm thời gian nhé.

Setup môi trường benchmark

Để bài benchmark này sát thực tế nhất, tôi mô phỏng kịch bản tải đột biến (giống đợt flash sale black friday). Toàn bộ chạy trên VPS với cấu hình sau:

  • Hệ thống: 5 Microservices (User, Order, Product, Payment, Search).
  • Quy mô: 50 container ban đầu, có khả năng dynamic scale lên 200 container (mô phỏng traffic peak).
  • Workload: 100,000 requests/s (tải đỉnh chạy 24 giờ liên tục).
  • Hạ tầng: 7 nodes được build từ gói Cloud VPS giá rẻ (6 Cores, 16 GB RAM) gồm 3 node Control Plane và 4 node Worker Nodes: (chạy 50-200 container)

Bài test 1: Deployment time

Tốc độ Deploy không chỉ là việc hệ thống chạy nhanh hay chậm. Nó cho thấy chi phí mà Control Plane phải gánh để khởi tạo và kiểm tra tài nguyên. Đây là thời gian cần thiết để 50 containers chuyển sang trạng thái Ready hoàn toàn.

Nền tảng Thời gian deploy 50 container Nhận xét
Docker Swarm 49,317 ms (~49.3s) Nhanh nhất. Cơ chế đơn giản, trực tiếp gọi Docker API, không qua lớp Controller/Scheduler phức tạp.
Nomad 61,972 ms (~62.0s) Nhanh thứ hai, chỉ tốn thêm chút thời gian xử lý HCL và kiểm tra Constraints.
Kubernetes 82,643 ms (~82.6s) Chậm nhất; YAML => API Server => Scheduler => kubelet nhiều lớp.

Nhận định

  • Docker Swarm có lợi thế lớn về tốc độ deploy.
  • Nomad giữ được sự cân bằng tốt giữa hiệu năng và khả năng mở rộng.
  • Kubernetes chậm hơn ở bước khởi tạo, nhưng đổi lại có hệ sinh thái và tính năng mạnh hơn.

Bài test 2: Khả năng auto-scaling

Bài test này đánh giá khả năng mở rộng khi lưu lượng tăng mạnh từ 10k req/s lên 80k req/s. Hai chỉ số chính được dùng để so sánh là:

  • Response Time (P95)
  • Error Rate

Kết quả

Nền tảng Mức scale đạt được Response Time P95 Error Rate
Kubernetes 180 pod 235.48 ms (~0.23s) 0.17%
Nomad 160 task 261.73 ms (~0.26s) 0.26%
Docker Swarm Scale không kịp 473.91 ms (~0.47s) 0.93%

Nhận định

  • Kubernetes cho kết quả tốt nhất về auto-scaling và độ ổn định.
  • Nomad bám khá sát Kubernetes cả về tốc độ phản hồi lẫn tỉ lệ lỗi.
  • Docker Swarm bộc lộ hạn chế rõ rệt khi traffic tăng nhanh, nên kém phù hợp hơn cho production quy mô lớn.

Từ bài test này có thể thấy Nomad là phương án trung gian khá hấp dẫn: đơn giản hơn Kubernetes nhưng vẫn đủ mạnh trong nhiều tình huống tải thực tế.


Bài test 3: Service Discovery & Latency

Bài test tập trung vào độ trễ nội bộ khi các service giao tiếp với nhau, ví dụ Order gọi Payment.

Kết quả

Nền tảng Latency nội bộ P95 Cơ chế Nhận xét
Kubernetes 1.83 ms CoreDNS + kube-proxy (iptables/IPVS) Tối ưu tốt ở mức kernel
Nomad 2.17 ms Consul Service Discovery Hiệu năng tốt, chỉ chậm hơn nhẹ
Docker Swarm 3.08 ms Overlay Network / Routing Mesh Độ trễ cao nhất

Nhận định

  • Kubernetes có latency thấp nhất.
  • Nomad vẫn cho hiệu năng khá sát Kubernetes.
  • Docker Swarm thua rõ hơn ở lớp networking và service routing.

Chi phí vận hành

Kubernetes

  • Overhead cao nhất.
  • Tốn tài nguyên cho control plane.
  • Cấu hình và vận hành phức tạp.
  • Yêu cầu đội ngũ DevOps có năng lực tương đối mạnh.

Phù hợp khi:

  • cần độ ổn định cao
  • cần RBAC, network policy, policy engine
  • cần hệ sinh thái production lớn và đầy đủ

Docker Swarm

  • Overhead thấp nhất.
  • Dễ cài đặt và dễ tiếp cận.
  • Có thể tận dụng tốt mô hình gần với docker-compose.

Điểm trừ:

  • thiếu nhiều tính năng production nâng cao
  • khi hệ thống phình to, chi phí vận hành ẩn có thể tăng

Nomad

  • Kiến trúc gọn.
  • Dễ quản lý hơn Kubernetes.
  • Hiệu năng thực tế khá tốt.

Điểm cần cân nhắc:

  • ít phổ biến hơn trong production
  • khó tuyển người có kinh nghiệm hơn
  • cộng đồng và tài nguyên hỗ trợ nhỏ hơn Kubernetes

Kết luận

1) Kubernetes

Chọn Kubernetes khi hệ thống cần:

  • độ tin cậy rất cao
  • khả năng scale mạnh
  • tính năng production nâng cao như RBAC, policy, networking phức tạp

Đổi lại, bạn phải chấp nhận:

  • chi phí vận hành cao
  • tiêu tốn thêm tài nguyên cho control plane
  • độ phức tạp triển khai và quản trị lớn

2) Docker Swarm

Docker Swarm phù hợp khi:

  • hệ thống chỉ có vài microservices
  • traffic chưa quá lớn
  • đội ngũ nhỏ, cần triển khai nhanh
  • muốn tiết kiệm chi phí vận hành trên VPS cấu hình thấp

Đây là lựa chọn kinh tế và dễ tiếp cận nhất trong ba nền tảng.

3) Nomad

Nomad là lựa chọn đáng cân nhắc nếu bạn muốn:

  • kiến trúc gọn hơn Kubernetes
  • hiệu năng tốt
  • khả năng chạy production ở mức khá
  • sự cân bằng giữa đơn giản và năng lực scale

Tuy nhiên, trước khi đưa vào production, cần xem kỹ yếu tố:

  • năng lực nhân sự
  • cộng đồng hỗ trợ
  • khả năng tìm tài liệu và kinh nghiệm thực chiến

Tóm tắt quyết định

Nhu cầu Nền tảng phù hợp
Production lớn, nhiều tính năng nâng cao Kubernetes
Hệ thống nhỏ đến vừa, cần tối ưu chi phí Docker Swarm
Muốn cân bằng giữa hiệu năng và độ gọn Nomad

Gợi ý thực tế

Không phải lúc nào chạy theo Kubernetes cũng là phương án tối ưu. Với nhiều công ty nhỏ và vừa, có thể bắt đầu bằng:

  • Docker Swarm
  • hoặc Docker Compose + hạ tầng cloud/VPS tối ưu chi phí

Chỉ nên chuyển sang Kubernetes khi nhu cầu scale và tính năng đã thực sự bắt buộc.

Chia sẻ bài viết

Đã sao chép liên kết vào bộ nhớ tạm!