
Trong kiến trúc microservices, các tính năng khác nhau của một hệ thống lớn (ví dụ như Facebook) được triển khai tách biệt thành các dịch vụ nhỏ, liên kết lỏng lẻo (loosely coupled), được gọi là microservices.
Các microservices này phối hợp hoạt động với nhau để tạo thành một hệ thống dịch vụ trực tuyến phân tán lớn, hoạt động như một thể thống nhất.
Nguyên tắc thiết kế áp dụng trong Microservices
Bạn còn nhớ:
- Nguyên tắc trách nhiệm đơn (Single Responsibility)
- Nguyên tắc phân tách mối quan tâm (Separation of Concerns)
không?
Cả hai nguyên tắc này đều được áp dụng rõ rệt trong kiến trúc microservices.
Đặc điểm của mỗi Microservice
Mỗi service:
- Chỉ đảm nhận một trách nhiệm duy nhất
- Tương ứng với một tính năng cụ thể
- Được tách biệt khỏi các service khác
Từ đó hình thành kiến trúc liên kết lỏng lẻo (loosely coupled).
Lợi ích trong phát triển và bảo trì
Kiến trúc này giúp việc:
- Bảo trì ứng dụng
- Phát triển tính năng
- Kiểm thử
- Triển khai từng module riêng lẻ
trở nên dễ dàng và gọn gàng hơn nhiều so với kiến trúc monolithic.
Hãy thử tưởng tượng việc dồn toàn bộ tính năng vào một repository duy nhất — mọi thứ sẽ phức tạp đến mức nào?
Điều đó sẽ trở thành một cơn ác mộng trong bảo trì.
Phân chia theo team trong dự án lớn
Bên cạnh đó, với các dự án quy mô lớn, hệ thống thường được quản lý bởi nhiều đội nhóm khác nhau.
Khi các module hoặc tính năng được tách biệt:
- Chúng có thể được giao cho các team chuyên trách
- Giúp quy trình phát triển trở nên trơn tru và hiệu quả hơn
Khả năng mở rộng (Scalability)
Với microservices, khả năng mở rộng (scalability) cũng trở nên dễ dàng.
- Bản thân kiến trúc được thiết kế để mở rộng ngay từ đầu
- Những service nào cần mở rộng có thể được scale độc lập
- Không ảnh hưởng đến các service khác
Cơ sở dữ liệu cho từng Microservice
Ngoài ra, mỗi microservice lý tưởng nhất nên có một cơ sở dữ liệu riêng.
Điều này giúp:
- Loại bỏ các điểm lỗi đơn (single point of failure)
- Giảm thiểu các nút thắt cổ chai (system bottlenecks) trong toàn hệ thống