Trong phần trước chúng ta đã tìm hiểu sơ qua về thế nào là kiến trúc microservices. Trong phần này chúng ta sẽ tiếp tục nghiên cứu về các mẫu thiết kế cho microservices.
4. Các mẫu thiết kế của Microservices là gì?
Khi một vấn đề xảy ra khi làm việc trên một hệ thống, có một số thực tiễn cần tuân theo và trong microservices, những thực tiễn đó là các mẫu thiết kế (Design Patterns). Các mẫu thiết kế microservices là những thực tiễn khi được tuân thủ sẽ dẫn đến các mẫu kiến trúc hiệu quả, giúp vượt qua các thách thức như quản trị không hiệu quả các dịch vụ này và tối ưu hóa hiệu suất. Khi làm việc trên một ứng dụng, bạn cần biết mẫu thiết kế nào nên được sử dụng để tạo ra một ứng dụng hiệu quả.
Aggregator
Nó gọi các dịch vụ để nhận thông tin cần thiết (dữ liệu liên quan) từ các dịch vụ khác nhau, áp dụng một số logic và tạo ra kết quả. Dữ liệu thu thập được có thể được sử dụng bởi các dịch vụ tương ứng. Các bước thực hiện theo mẫu Aggregator bao gồm yêu cầu được nhận bởi dịch vụ, sau đó yêu cầu được thực hiện đến nhiều dịch vụ khác, kết hợp từng kết quả và cuối cùng phản hồi yêu cầu ban đầu.
API Gateway
API Gateway đóng vai trò như một giải pháp cho các yêu cầu đến microservices. Nó phục vụ như một điểm vào cho tất cả các microservices và tạo ra các API chi tiết cho các khách hàng khác nhau. Các yêu cầu được gửi qua API Gateway và bộ cân bằng tải giúp kiểm tra xem yêu cầu có được xử lý và gửi đến dịch vụ tương ứng hay không.
Event Sourcing
Mẫu thiết kế này tạo ra các sự kiện liên quan đến các thay đổi (dữ liệu) trong trạng thái ứng dụng. Sử dụng những sự kiện này, các nhà phát triển có thể theo dõi các bản ghi của những thay đổi đã thực hiện.
Strangler Strangler
Còn được biết đến như mẫu Vine vì nó hoạt động giống như cách cây leo strangler bao quanh cây khác. Đối với mỗi lần gọi URI (Uniform Resource Identifier), một lần gọi sẽ đi qua lại và cũng được phân chia thành các miền khác nhau. Ở đây, hai ứng dụng riêng biệt tồn tại song song trong cùng một không gian URI, và mỗi lần chỉ có một miền được xem xét. Do đó, ứng dụng được tái cấu trúc mới sẽ thay thế ứng dụng gốc.
Decomposition
Mẫu thiết kế Decomposition là việc phân tách một ứng dụng thành các microservices nhỏ hơn, có chức năng riêng. Dựa trên các yêu cầu business, bạn có thể phân tách một ứng dụng thành các thành phần phụ. Ví dụ, Amazon có các dịch vụ riêng biệt cho sản phẩm, đơn hàng, khách hàng, thanh toán, v.v
5. Các Anti-Patterns trong Microservices là gì?
Việc học các anti-patterns trong microservices là rất quan trọng để tránh các sai lầm phổ biến. Nó cung cấp những hiểu biết sâu sắc về các vấn đề tiềm ẩn có thể làm suy yếu tính khả năng mở rộng, tính độc lập và khả năng bảo trì của hệ thống. Bằng cách hiểu các anti-patterns này, các nhà phát triển có thể đưa ra các quyết định thông minh, thực hiện các thực tiễn tốt nhất và góp phần vào việc thiết kế và triển khai thành công các kiến trúc microservices mạnh mẽ.
Dưới đây là 5 anti-patterns chính trong microservices:
Data Monolith
Chia sẻ một cơ sở dữ liệu tập trung giữa các microservices, làm suy yếu tính độc lập và khả năng mở rộng.
Chatty Services
Các microservices giao tiếp quá nhiều cho các nhiệm vụ nhỏ, dẫn đến tăng chi phí mạng và độ trễ.
Overusing Microservices
Tạo ra quá nhiều microservices cho các chức năng tầm thường, gây ra sự phức tạp không cần thiết.
Inadequate Service Boundaries
Các ranh giới của microservices được xác định kém, dẫn đến sự mơ hồ và trách nhiệm không rõ ràng.
Ignoring Security
Bỏ qua các vấn đề bảo mật trong microservices, gây nguy cơ lỗ hổng và vi phạm dữ liệu
6. Ví dụ thực tế về Microservices
Hãy hiểu về Microservices bằng ví dụ thực tế của Ứng dụng Thương mại Điện tử Amazon:
Cửa hàng trực tuyến của Amazon giống như một bức tranh khổng lồ được tạo nên từ nhiều mảnh nhỏ, chuyên dụng gọi là microservices. Mỗi microservice thực hiện một công việc cụ thể để đảm bảo mọi thứ hoạt động trơn tru. Cùng nhau, những microservice này hoạt động để mang lại cho bạn trải nghiệm mua sắm tuyệt vời.
Dưới đây là các microservices liên quan trong Ứng dụng Thương mại Điện tử Amazon:
User Service: Quản lý tài khoản người dùng, xác thực và tùy chọn cá nhân. Nó xử lý việc đăng ký, đăng nhập và quản lý hồ sơ, đảm bảo trải nghiệm cá nhân hóa cho người dùng.
Search Service: Cung cấp chức năng tìm kiếm trên nền tảng, cho phép người dùng tìm sản phẩm nhanh chóng. Nó lập chỉ mục thông tin sản phẩm và cung cấp kết quả tìm kiếm liên quan dựa trên truy vấn của người dùng.
Catalog Service: Quản lý danh mục sản phẩm, bao gồm chi tiết sản phẩm, danh mục và mối quan hệ. Nó đảm bảo rằng thông tin sản phẩm chính xác, cập nhật và dễ dàng truy cập cho người dùng.
Cart Service: Quản lý giỏ hàng của người dùng, cho phép họ thêm, xóa và sửa đổi các mặt hàng trước khi thanh toán. Nó đảm bảo trải nghiệm mua sắm liền mạch bằng cách theo dõi các mặt hàng đã chọn.
Wishlist Service: Quản lý danh sách mong muốn của người dùng, cho phép họ lưu sản phẩm để mua sau. Nó cung cấp một cách tiện lợi cho người dùng theo dõi và quản lý các mặt hàng mong muốn của họ.
Order Taking Service: Chấp nhận và xử lý các đơn đặt hàng của khách hàng. Nó xác thực đơn đặt hàng, kiểm tra tình trạng sản phẩm và khởi tạo quá trình hoàn thành đơn hàng.
Order Processing Service: Quản lý quá trình xử lý và hoàn thành đơn hàng. Nó phối hợp với các dịch vụ kho, vận chuyển và thanh toán để đảm bảo việc giao hàng đúng hạn và chính xác.
Payment Service: Xử lý thanh toán cho các đơn đặt hàng. Nó xử lý các giao dịch thanh toán một cách an toàn, tích hợp với các cổng thanh toán và quản lý dữ liệu liên quan đến thanh toán.
Logistics Service: Phối hợp logistics của việc giao hàng. Nó tính toán chi phí vận chuyển, chỉ định nhà vận chuyển, theo dõi lô hàng và quản lý các tuyến đường giao hàng.
Warehouse Service: Quản lý kho hàng. Nó theo dõi mức tồn kho, cập nhật tình trạng hàng hóa và phối hợp bổ sung kho.
Notification Service: Gửi thông báo đến người dùng về đơn hàng, khuyến mãi và các thông tin liên quan khác. Nó giữ cho người dùng được thông báo về trạng thái của các tương tác của họ với nền tảng.
Recommendation Service: Cung cấp gợi ý sản phẩm cá nhân hóa cho người dùng. Nó phân tích hành vi và sở thích của người dùng để đề xuất các sản phẩm liên quan, cải thiện trải nghiệm người dùng và thúc đẩy doanh số bán hàng