Bỏ qua để đến Nội dung

Trên hành trình đến với vị trí SA - Kiến trúc Microservices

24 tháng 3, 2026 bởi
Trên hành trình đến với vị trí SA - Kiến trúc Microservices
Hưng Nguyễn

Chắc các bạn vẫn còn nhớ bài Trên hành trình đến với vị trí SA - bước chuẩn bị mà tôi đã viết hồi tháng 10-2025.

Ở đó tôi đã nói về những thứ mà 1 Developer cần ôn luyện lại trước khi nghĩ tới việc chuyển sang làm việc tại vị trí Solution Architect.

Sau khi đã ôn lại nền tảng xong rồi, thì việc tiếp theo là cần làm chủ, nắm vững được kiến trúc Microservices - Đây là yêu cầu bắt buộc đối với 1 SA.

Để nắm bắt được khối lượng kiến thức khổng lồ về các Mẫu thiết kế và Nguyên lý thiết kế liên quan đến Microservices trong thời gian ngắn, thì chúng ta cần học 1 cách tổng quát nhất (top-down từ trên xuống), chứ không thể học chi tiết, nắm sâu từng thứ một rồi tổng hợp ngược lên (bottom-up) được.

Vậy nên, tôi đã chuẩn bị những thứ thuộc Kiến trúc Microservices mà mình cần nắm vững như dưới đây nhé:

  • Microservices là gì?
  • Kiến trúc Microservices là gì?
  • Đặc tính của Microservices
  • Lợi ích của Kiến trúc Microservices
  • Thách thức của Kiến trúc Microservices
  • Lúc nào nên dùng Kiến trúc Microservices
  • Lúc nào không nên dùng Microservices (Anti-Pattern của Microservices)
  • Về mặt Kiến trúc Ứng dụng
  • Về khả năng mở rộng (Scalability)
  • Về mặt Triển khai (Deployment)
  • Về team phát triển

  • Các service cần phải loose coupling với nhau -> mỗi service cần phải có DB riêng của nó, mỗi service có thể dùng 1 loại DB khác nhau.
  • Như vậy, việc thay đổi trong DB này không ảnh hưởng đến các microservice khác.
  • DB của 1 service không được truy xuất trực tiếp bởi các microservice khác. Mà việc này được thực hiện thông qua REST APIs của service cần thay đổi dữ liệu.
Lợi ích:
  • Có thể thay đổi Data schema của 1 service mà không ảnh hưởng đến các microservice khác.
  • Mỗi DB có thể scale độc lập với nhau.
  • Domain data của microservice được đóng gói chỉ trong service đó.
  • Nếu DB của 1 service bị down -> không ảnh hưởng đến các service khác.
  • Việc lưu trữ đa ngôn (Polyglot persistent) cho phép lựa chọn loại lưu trữ tối ưu nhất tùy theo nhu cầu của từng microservices.
Ví dụ cho Hệ thống E-Commerce:

  • Service Sản phẩm (Product) sử dụng DB NoSQL dạng document để lưu trữ dữ liệu đến catalog.
  • Service Giỏ hàng (Shopping cart) thì sử dụng NoSQL dạng cache phân tán để lưu trữ dữ liệu key-value đơn giản.
  • Service Đơn hàng (Order) thì sử dụng Relational DB để xử lý cấu trúc quan hệ đa dạng.
  • Các DB NoSQL cho phép scale khủng và tính khả dụng cao, đồng thời với cấu trúc không-schema đem lại sự linh hoạt.

TBD

  • Trục X: Lặp lại theo chiều ngang cùng với việc nhân bản dịch vụ và dữ liệu.
  • Trục Y: Phân rã Chức năng thành các Microservices.
  • Trục Z: Phân vùng dữ liệu dựa theo các Ranh giới Khách hàng (Customer Boundaries) thành các Phân mảnh (Shards) / Phân cụm (Pods).
  • Phân rã Chức năng có thể đạt được bằng cách tách rời kiến trúc thành các chức năng cùng với trục Y.
  • Microservices là một ví dụ của việc phân rã chức năng.
  • Mở rộng theo trục Y chia ứng dụng thành nhiều dịch vụ khác nhau.
  • Kết hợp cả mở rộng theo trục XY cùng với kiến trúc microservices sẽ đem lại khả năng chịu tải tốt hơn.
  • Khi giao tiếp trực tiếp giữa Client-tới-Service có vấn đề gì?
  • Giao tiếp trong Monolithic và Giao tiếp trong Microservices khác gì nhau?
  • Giao tiếp trong Microservices nhìn chung.
  • Giao tiếp Đồng bộ trong Microservices là gì?
  • Thiết kế RESTful API trên nền HTTP
  • Thiết kế GraphQL API
  • Thiết kế gRPC API
  • WebSocket API
  • API Gateway Pattern
  • Gateway Routing Pattern
  • Gateway Aggregation Pattern
  • Gateway Offloading Pattern
  • Backends for Frontends (BFF) Pattern
  • Service Aggregator Pattern
  • Service Registry/ Discovery Pattern
  • Giao tiếp Bất đồng bộ trong Microservices là gì?
  • Giao tiếp dựa trên Message 1-nhận (mô hình one-to-one)
  • Giao tiếp dựa trên Message đa-nhận (mô hình one-to-many)
  • Nguyên tắc đảo ngược phụ thuộc (DIP)
  • Fan-Out Publish/Subscribe Messaging Pattern
  • Topic-Queue Chaining & Load Balancing Pattern
  • TBD

TBD

TBD

TBD

TBD




Trên hành trình đến với vị trí SA - Kiến trúc Microservices
Hưng Nguyễn 24 tháng 3, 2026
Chia sẻ bài này
Thẻ
Lưu trữ