Trong bài này, chúng ta sẽ cùng nhau tìm hiểu về kiến trúc đang rất nổi tiếng trong những năm trở lại đây – Microservice

Kiến trúc microservice cơ bản – Nguồn: Software architecture patterns – Mark Richards
Mỗi microservice được thiết kế để thực hiện một chức năng duy nhất hoặc một nhóm nhỏ các chức năng liên quan, được quản lý độc lập với nhau.
MicroserviceÂđược xây dựng dựa trên khái niệm “bounded context”: Mỗi service mô hình hoá một domain hoặc một workflow. Nghĩa là mỗi service chứa mọi thứ cần thiết để hoạt động trong ứng dụng, bao gồm các class, các thành phần con trong nó và database.

Các thành phần của kiến trúc microservice cơ bản bao gồm:
- Service: chứa logic nghiệp vụ của microservice, chỉ có service mới được truy cập vào database
- Database: một tập hợpc các bảng chứa dữ liệu phục vụ cho logic nghiệp vụ của microservice.
- API gateway: cung cấp một điểm truy cập thống nhất cho các microservice, giúp quản lý, điều phối và bảo mật giao tiếp giữa các service với nhau trong kiến trúc microservices, đồng thời cung cấp một nền tảng để triển khai các chính sách quản lý API và tối ưu giao tiếp.
Một ví dụ điển hình cho điều này là xây dựng hệ thống thương mại điện tử. Các service có thể được chia như sau:

- Quản lý người dùng: service chịu trách nhiệm quản lý thông tin đăng nhập, đăng ký, và hồ sơ của người dùng.
- Quản lý sản phẩm: service chịu trách nhiệm quản lý danh mục sản phẩm, thông tin chi tiết sản phẩm và tồn kho.
- Xử lý đơn hàng: service quản lý quá trình tạo đơn hàng, xác nhận và theo dõi trạng thái đơn hàng.
- Thanh toán: service xử lý các giao dịch thanh toán, bao gồm cả việc tích hợp với các cổng thanh toán bên ngoài.
- Giao hàng: service quản lý việc giao hàng, bao gồm lựa chọn phương thức vận chuyển và theo dõi giao hàng.
- Thông báo: service này chịu trách nhiệm gửi thông báo (email/SMS/event).
Mỗi dịch vụ trong hệ thông trên hoạt động độc lập, có cơ sở dữ liệu riêng, và giao tiếp với nhau qua API. Kiến trúc này giúp dễ dàng quản lý và mở rộng từng phần của ứng dụng, đồng thời nâng cao khả năng bảo mật và tính ổn định của hệ thống.
*Trường hợp nên dùng kiến trúc microservice:
- Kiến trúc microservice sẽ phù hợp với các ứng dụng có thể chia chức năng thành hàng chục hoặc hàng trăm phần riêng biệt và độc lập với nhau.
- Kiến trúc microservice sẽ phù hơp khi ứng dụng của bạn đỏi hỏi sự phản ứng nhanh với thay đổi. Khi ứng dụng được chia thành các thành phần riêng biệt, việc thay đổi mã nguồn ít gây ảnh hưởng tới cả hệ thống. Việc testing cũng trở nên dễ dàng hơn vì phạm vi test được giới hạn.
*Trường hợp không nên dùng kiến trúc microservice
- Nếu bản chất dữ liệu của bạn được liên kết chặt chẽ và không thể chia dữ liệu ra thành các database chạy độc lập (Ví dụ: foreign key constraints, triggers, views, và stored procedures).
- Tổ chức của bạn cần có nguồn lực đủ mạnh về con người, thời gian và tài chính. Vậy nên, nếu tổ chức đang chạy dự án với ngân sách tài chính hoặc con người hoặc cả hai đều eo hẹp, áp dụng microservice sẽ khiến mọi thứ trở nên rất phức tạp.
- Các service kết nối từ xa nên độ trễ bao gồm độ trễ mạng, độ trễ bảo mật, độ trễ dữ liệu sẽ là một điểm cần được cân nhắc khi áp dụng microservice.Â











Leave a Reply