{keywords}

Khi chọn xây dựng ứng dụng dưới dạng một microservice, chúng ta sẽ cần quyết định các client của ứng dụng sẽ tương tác với các microservices đó như thế nào. Với một ứng dụng monolithic, chỉ có một tập hợp các endpoint (thường sẽ được replicated, load balancing). Tuy nhiên, trong kiến trúc microservices, mỗi microservice lại có một tập hợp các endpoint chi tiết. Cùng tìm hiểu điều này ảnh hưởng như thế nào đến việc giao tiếp giữa client và ứng dụng và API Gateway sẽ góp phần giúp giải quyết bài toán ra sao.

Lấy ví dụ bạn đang phát triển một client cho một ứng dụng mua sắm trên mobile. Bạn có thể cần triển khai trang sản phẩm chi tiết để hiển thị thông tin về tất cả các sản phẩm cụ thể mà dịch vụ cung cấp.

Tuy là một ứng dụng dành cho mobile nhưng trang chi tiết sản phẩm lại hiển thị rất nhiều thông tin. Ví dụ: Không chỉ có thông tin cơ bản về sản phẩm (như tên, mô tả và giá) mà trang còn hiển thị: Số lượng mặt hàng trong giỏ hàng; lịch sử đơn hàng; phản hồi của khách hàng; cảnh báo hàng tồn kho thấp; tùy chọn vận chuyển.

Các đề xuất sản phẩm thay thế

Khi sử dụng kiến trúc microservices, dữ liệu hiển thị trên trang sản phẩm nằm trong nhiều microservices khác nhau. Một số microservice sở hữu dữ liệu được hiển thị trên trang sản phẩm trong ví dụ có thể phân thành như sau: Service Giỏ hàng - Số lượng mặt hàng trong giỏ; Service Order - Lịch sử đặt hàng; Service Danh mục - Thông tin cơ bản về sản phẩm như tên, hình ảnh và giá; Service Review - Đánh giá của khách hàng; Service Hàng tồn kho - Cảnh báo hàng tồn kho thấp; Service shipping - Các tùy chọn, thời gian và chi phí vận chuyển được tách riêng từ API của nhà cung cấp dịch vụ vận chuyển; Service Đề xuất - Các mặt hàng được đề xuất.

Chúng ta cần quyết định các client truy cập các dịch vụ này như thế nào.

{keywords}

Nếu giao tiếp trực tiếp Client‑to‑Microservice

Trên lý thuyết, một client có thể đưa request trực tiếp cho từng microservice. Mỗi microservice sẽ có một public endpoint. Để lấy thông tin chi tiết về sản phẩm, client gọi trực tiếp đến từng service được liệt kê ở trên qua public endpoint. Nhưng, cách làm này có nhiều thách thức và hạn chế. Đầu tiên là nhu cầu của client và các API của mỗi microservice có thể không khớp với nhau. Client trong ví dụ này phải đưa 7 request riêng biệt. Trong các ứng dụng phức tạp hơn, có thể phải gọi nhiều hơn nữa.

Một vấn đề khác khi client gọi trực tiếp đến các microservice là một số service có thể sử dụng các giao thức không thân thiện với web. Các giao thức như HTTP và WebSocket thường được khuyến nghị sử dụng.

Bên cạnh đó, việc việc tái cấu trúc các microservices, ví dụ như gộp 2 service thành 1 hay tách 1 service thành 2 sẽ cực kỳ khó khăn.

Các thách thức còn đến từ việc lập trình viên sẽ phải phát triển riêng phần Authentication, Authorization cho từng service gây tốn thời gian, gặp nhiều khó khăn, hay chưa có hệ thống monitor, logging cho từng service (latency, tỉ lệ timeout, log truy cập của từng service).

Để phân tích rõ hơn về những khó khăn này, đồng thời đưa ra giải pháp giải quyết hiệu quả hơn từ API Gateway, độc giả hãy tham gia cùng Bizfly Cloud trong buổi Bizfly Expert Talk #36 với chủ đề: ‘’API Gateway trong kiến trúc microservice” diễn ra vào ngày 09/03 tới đây.

{keywords}

Tham gia ngay để nhận ngay voucher dùng thử trị giá 500K khi truy cập: https://bit.ly/3MlV1G7

API Gateway được xem là phương pháp có thể giải quyết toàn bộ những khó khăn được đề cập phía trên. API Gateway là một servers (nhóm server) đóng vai trò như là một lối vào/ra duy nhất để truy cập các service. Ngoài nhiệm vụ định tuyến API phù hợp cho từng client, API Gateway có các chức năng như xác thực, giám sát, load balancing, rate limiting, health checks, logging và security.

Cung cấp giải pháp API Gateway được đóng gói sẵn đầu tiên tại Việt Nam, developer sẽ dễ dàng và thuận tiện hơn rất nhiều trong công việc phát triển của mình, doanh nghiệp tiết kiệm được rất nhiều chi phí, rất nhiều giờ công sức cho triển khai, vận hành. Tất cả sẽ được hé lộ trong buổi Talk bổ ích, hấp dẫn từ Bizfly Cloud. 

Giới thiệu diễn giả:
Anh Phạm Văn Khanh - Product Owner Bizfly API Gateway
Anh đã có nhiều kinh nghiệm trong việc triển khai và vận hành hệ thống API Gateway nội bộ cho mạng quảng cáo Admicro và mạng xã hội Lotus. Có thời điểm hệ thống này phục vụ lượng request lên tới 90,000 request/s.
Bizfly Cloud - vận hành bởi VCCorp - hiện đang là đơn vị tiên phong cung cấp các giải pháp, dịch vụ hạ tầng kỹ thuật, điện toán đám mây hoàn chỉnh cho các doanh nghiệp trên toàn quốc với các khách hàng lớn như VTV, Vingroup, Đất Xanh Miền Bắc, Ahamove, SSI, Sapo, VNDirect.

Phương Dung