Bỏ qua menu, vào nội dung chính
Architecture Pattern

Microservices là gì?

Định nghĩa

Microservices là kiến trúc chia một hệ thống lớn thành nhiều service nhỏ, độc lập, mỗi service đảm nhiệm 1 domain nghiệp vụ và giao tiếp với nhau qua API (REST/gRPC). Khác với monolith — một codebase duy nhất chứa tất cả tính năng. Ví dụ: Netflix chia thành 600+ microservices.

Microservices là buzzword nhiều người nói nhưng ít ai thực sự cần. Đa số dự án VN scale nhỏ (<100 user đồng thời) nên dùng monolith. Microservices chỉ phù hợp khi quy mô đủ lớn + đội dev đủ kỹ năng manage complexity.

01 · Cấu thành

6 thành phần chính

Hiểu các thành phần cơ bản để biết khi nào triển khai phần nào trước.

01

Service Boundaries

Chia theo Domain-Driven Design (DDD): user service, order service, payment service, inventory service. Mỗi service own data + business logic riêng.

02

API Gateway

Entry point duy nhất từ frontend → microservices. Handle auth, rate limit, route. Ví dụ: Kong, Cloudflare API Gateway.

03

Service-to-Service Communication

REST/gRPC cho sync calls, Message queue (RabbitMQ, Kafka) cho async events. Tránh tight coupling giữa services.

04

Database per Service

Mỗi service có DB riêng — không share DB. Đảm bảo loose coupling. Cross-service query qua API hoặc event sourcing.

05

Service Discovery

Services tìm nhau qua registry (Consul, Eureka) hoặc DNS-based (Kubernetes Service). Tự động routing.

06

Observability

Distributed tracing (Jaeger, OpenTelemetry), centralized logging (ELK), metrics (Prometheus + Grafana). Debug cross-service khó hơn monolith.

02 · Lợi ích

4 lợi ích đo lường được

Không phải "tăng năng suất chung chung" — đây là con số thực từ các dự án Alodev đã triển khai.

Scale từng service độc lập

Service heavy traffic (order, payment) scale up, service ít dùng giữ nguyên. Tiết kiệm resource.

Đội độc lập làm song song

Mỗi đội own 1-2 service, deploy độc lập. Không conflict merge code, không block nhau.

Tech stack đa dạng

Service AI dùng Python, service web dùng Node.js, service real-time dùng Go. Chọn tool đúng cho từng job.

Fault isolation

1 service crash không kéo theo cả hệ thống. Payment service down vẫn xem được catalog.

03 · Khi nào cần

Doanh nghiệp nên triển khai khi

Nếu ≥2/4 dấu hiệu dưới đúng với hiện trạng, là thời điểm phù hợp để bàn.

  • 01Quy mô >50 dev hoặc >5 đội độc lập
  • 02Traffic >100k user đồng thời với pattern không đều (1 phần hệ thống heavy hơn)
  • 03Cần deploy nhiều lần/ngày, không thể chờ build monolith 30 phút
  • 04Cần tech stack khác nhau cho từng feature (Python AI, Go realtime)
05 · FAQ

Câu hỏi thường gặp

Microservices có quá phức tạp cho SME Việt không?

Có — đa số SME VN không cần microservices. Monolith tốt cho: <50 dev, <100k user/ngày, đội nhỏ. Microservices premature optimization sẽ làm chậm dự án + đội burn out. Quy tắc: bắt đầu monolith well-structured (modular), khi grow đủ lớn mới refactor sang microservices từng phần.

Modular monolith vs Microservices — chọn cái nào?

Modular monolith: 1 deployable nhưng code chia rõ ràng theo domain (như Shopify). 90% lợi ích microservices, 10% complexity. Phù hợp 80% dự án VN. Microservices thực sự: chỉ khi cần scale từng service độc lập + multi-team. Alodev mặc định build modular monolith, refactor khi cần.

Microservices có làm dự án đắt hơn không?

Có đáng kể — gấp 2-3x. Lý do: cần infra phức tạp (Kubernetes, API gateway, service mesh), DevOps cao hơn, monitoring stack, testing distributed (E2E, contract tests), nhiều người manage. Cho dự án 200tr-2 tỷ scope thường monolith ROI tốt hơn. Microservices break-even từ dự án 3-5 tỷ+.

Chuyển từ monolith sang microservices có khả thi?

Có, gọi là 'strangler fig pattern' — tách dần từng module ra khỏi monolith. Bắt đầu từ module có boundary rõ ràng (notification, payment), test trong production, đến khi monolith chỉ còn legacy module thì retire. Mất 6-18 tháng tuỳ scope. Không bao giờ rewrite from scratch — chết.

Tại sao có lời khuyên 'monolith first'?

Vì khi mới build, domain boundaries chưa rõ — chia microservices sai = phải refactor liên tục, đắt + chậm. Monolith trước cho phép iterate nhanh, khi domain đã stable mới chia services. Đa số 'thành công microservices' (Netflix, Uber) đều bắt đầu monolith và refactor sau khi đã prove product-market fit.