Container and Service Architecture Tradeoffs

Mental model

Kiến trúc runtime có hai lớp quyết định khác nhau: app được đóng gói/chạy bằng gì, và hệ thống được chia thành unit triển khai nào. Docker và Containerization giải quyết packaging/runtime consistency; Monolithic Architecture, Modular Monolith, Microservices Architecture và Serverless Architecture giải quyết boundary tổ chức, scaling và vận hành.

Bảng so sánh nhanh

Câu hỏiLựa chọnTrade-off
Cần isolation mạnh hay startup nhanh?Virtualization vs ContainerizationVM cô lập tốt hơn; container nhẹ, portable và hợp CI/CD hơn
Artifact chạy production là gì?Container Image, Container RuntimeImage bất biến, runtime tạo process isolated
Hệ thống mới nên bắt đầu thế nào?Monolithic Architecture hoặc Modular MonolithĐơn giản trước, tách boundary khi domain và scale đủ rõ
Khi nào microservices đáng tiền?Microservices ArchitectureIndependent scaling/deploy đổi lấy tracing, consistency và orchestration
Khi nào serverless hợp?Serverless ArchitectureEvent-driven/pay-per-use đổi lấy cold start, debugging và lock-in
Container phối hợp thế nào?Sidecar Pattern, Ambassador Pattern, Container Adapter PatternHelper container tách cross-cutting concern nhưng tăng integration contract
Workload song song ra sao?Work Queue Pattern, Scatter-Gather PatternQueue hợp batch; scatter/gather hợp query nhiều shard

Bài học

  • Container không phải VM nhẹ; nó là OS-level process isolation.
  • Docker thắng lớn vì chuẩn hóa packaging, không chỉ vì runtime.
  • Modular monolith thường là bước trung gian tốt trước microservices.
  • Serverless hợp phần event-driven phụ trợ, không phải câu trả lời chung cho mọi workload.
  • Container design patterns hữu ích khi boundary helper thật sự tái sử dụng được; nếu coupling quá chặt, tách container chỉ tạo thêm version skew.

Liên kết