Kong API Gateway là gì?

Đây là bài nằm trong tập hợp những bài viết về Kong API Gateway. Tham khảo các bài biết khác theo đường dẫn dưới đây

Series bài viết về Kong API Gateway
Bài 1: Kong API Gateway là gì? (Bài viết hiện tại)
Bài 2: Hướng dẫn cách cài đặt Kong API Gateway
Bài 3: Cấu hình Kong quản lý các APIs từ các backend servers
Bài 4: Cấu hình bảo mật cho Kong API Gateway
Bài 5: Cấu hình các tính năng nâng cao khác của Kong

API Gateway là gì?

Một hệ thống microservices trung bình sẽ có một vài cho tới hàng trăm services khác nhau, nếu như client giao tiếp trực tiếp với các services này thì sơ đồ việc kết nối sẽ rất rối và cực kỳ khó quản lý. Việc giao tiếp trực tiếp này sẽ dẫn đến một số vấn đề rắc rối với client
- Phần code phía client sẽ trở nên phức tạp vì phải tracking nhiều endpoint
- Sẽ tạo sự kết nối giữa client và backend. Client cần biết được các services đó đc phân chia như thế nào. Rất khó cho việc maitain của client và refactor service.
- Mỗi một service sẽ phải handle nhiều vấn đề liên quan như authentiaction, SSL hay client rate limiting
Giải pháp được đưa ra để giải quyết vấn đề này là sử dụng API Gateway



API Gateway làm nhiệm vụ định tuyến các yêu cầu, kết hợp và chuyển đổi các giao thức. Tất cả yêu cầu từ Client đều đi qua cổng kết nối API. Sau đó cổng kết nối API định tuyến các yêu cầu này tới microservices phù hợp. Cổng kết nối API Gateway sẽ xử lý một yêu cầu người dùng bằng cách gọi đến một loạt microservices rồi tổng hợp các kết quả. Nó có thể chuyển đổi giữa các giao thức web như HTTP, WebSocket và các giao thức nội bộ không thân thiện với web.

Một số tính năng ưu điểm nổi bật của API Gateway

- Tối ưu đầu cuối : Khi một request của Client tới dịch vụ yêu cầu thông tin của nhiều thành phần trong hệ thống, ví dụ: Customer, Order, Invoices... API Gateway sẽ thực hiện request đồng thời tới các thành phần, lấy về các thông tin từ từng thành phần, ghép lại và phản hồi lại kết quả mong muốn cho Client.
- Ngắt kết nối API: Khi mỗi thành phần trong hệ thống dừng hoạt động, hoặc trả về số lượng lớn lỗi đạt đến ngưỡng đã được quy định, API Gateway có thể tự động thực hiện dừng gửi request tới thành phần gặp lỗi. Việc này sẽ cho đội vận hành có thời gian để phân tích log, xử lý lỗi và update lại thành phần
- Thuận tiện nâng cấp các thành phần: Khi các thành phần trong dịch vụ được nâng cấp, phát triển thêm tính năng API Gateway có các hình thức để có thể điều phối tỉ lệ các request giữa phiên bản hiện tại và phiên bản mới
- Kết nối tập trung: Client sử dụng API sẽ kết nối tập trung qua API Gateway, API Gateway sẽ thực hiện các việc xác thực request của client, log các request, giám sát các Microservices, báo cáo/phân tích log...
- Cân bằng tải: API Gateway có thể phối hợp cùng Service-discovery tool để thực hiện cân bằng tải, phân phối request tới các cụm API.
Nhưng bên cạnh đó, nhược điểm lớn nhất của mô hình sử dụng API Gateway là nó sẽ trở thành nút thắt cổ chai khi phát triển hệ thống vì mọi request đều đi qua nó vì vậy độ trễ của mỗi request sẽ tăng lên. Thêm kinh phí, thời gian để quản lý Gateway này.

Kong API Gateway là gì?

Kong là giải pháp API Gateway mã nguồn mở phổ biến nhất hiện nay. Kong sẽ đứng trước hệ thống API của bạn, giúp bạn nhanh chóng, thuận tiện và bảo mật trong triển khai mô hình Microservices, cũng như quản lý và triển khai các giải pháp API. Với các plugins, Kong sẽ cung cấp thêm nhiều chức năng và dịch vụ mở rộng dựa trên nền tảng lõi.





Kong được xây dựng trên Nginx và hoạt động thông qua các RESTful API đơn giản, dễ sử dụng.
Một số tính năng nổi bật của Kong phải kể đến như
Authentication: Bảo vệ các dịch vụ của bạn qua tầng xác thực.
Traffic Control: Quản lý, điều chỉnh và chặn các lưu lượng API vào ra.
Analytics: Trình diễn, kiểm tra và giám sát các lưu lượng vào API
Transformations: Chuyển đổi trực tiếp các yêu cầu và phản hồi API trong khi xử lý.
Logging: Bắt luồng yêu cầu và phản hồi dữ liệu vào hệ thống ghi log.
Serverless: Thực hiện các chức năng serverless qua các API.
Một số ưu điểm khi sử dụng Kong
Scalable: Kong có thể dễ dang mở rộng theo chiều ngang bằng cách thêm nhiều nodes mới. Kong có thể xử lý một lượng lớn requests với độ trễ thấp.
Modular: Bổ sung thêm các tính năng vào Kong thông qua việc cài đặt các plugins và cấu hình dễ dàng thông qua RESTful Admin API
Hoạt động trên mọi hạ tầng: Có thể dễ dàng triển khai Kong trên môi trường Cloud, On-premises, hoặc Hybrid.

Các thành phần cơ bản khi triển khai hệ thống API Gateway dùng Kong


Một hệ thống API Gateway dùng Kong cơ bản sẽ gồm các thành phần sau
- Hệ thống database dùng để lưu các cấu hình cài đặt cho Kong
- Thông tin về các API services cần giám sát bởi Kong
- Các giao diện Dashboard giúp cho việc cấu hình Kong được dễ dàng hơn
- Kong Gateway

Các khái niệm cần nắm khi làm việc với Kong



- Upstreams: Một virtual hostname chứa một nùi các config giúp chúng ta khai báo, quản lý, cân bằng tải và monitoring các servers chứa services. Trong một upstream có chứa một hoặc nhiều các targets.
- Targets:  Chính là đích mà các cái Upstream của ta hướng tới, bản chất nó chính là địa chỉ của các server chứa services. Mỗi target sẽ mang một trọng số weight nhất định giúp phân tải các request.
- Services : Chính là các services mà ta muốn cung cấp ra bên ngoài cho các clients. Có thể cấu hình host của mỗi service tới các upstream hoặc có thể cấu hình trực tiếp. Mỗi một service sẽ bao gồm một hoặc nhiều routes
- Routes: Tập hợp các quy tắc để Kong match request tới đúng cái API trên services mà nó cần tới.
- Plugins: Trong Kong để cấu hình và cài đặt các tính năng (Authentication, Security, Analytics, Monitoring, ...) thì sẽ cài đặt thông qua các plugin.
- Consumers: Cấu hình thông tin liên quan đến các clients có thể truy xuất và sử dụng kết nối tới Kong

Bài này mang tính chất giới thiệu cơ bản sơ lược về Kong API Gateway. Các thông tin liên quan đến việc cài đặt và cấu hình sử dụng Kong vui lòng tham khảo các bài viết khác trong series bài viết về Kong ở đầu bài viết này.


Tham khảo thêm
https://github.com/Kong/kong


Tiếp tục cập nhật ...