Kong Gateway là gì? Cách thiết lập và sử dụng Kong Gateway
Kong Gateway hiện đang là giải pháp API Gateway mã nguồn mở phổ biến nhất hiện nay. Nó giúp chúng ta có thể nhanh chóng, thuận tiện và bảo mật trong việc triển khai kiến trúc Microservices; cũng như cung cấp thêm các dịch vụ mở rộng khác. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem Kong Gateway là gì cùng một số hướng dẫn thiết lập để sử dụng API Gateway này nhé.
API Gateway là gì?
Trong một hệ thống Microservices, nếu như client giao tiếp trực tiếp với các services thì sẽ tạo ra một sơ đồ kết nối rất rối rắm và cực kỳ khó quản lý, cùng với đó thì các vấn đề sau có thể phát sinh:
- Code phía client trở nên phức tạp vì phải tracking nhiều endpoint
- Khó maintain phía client và refactor các service
- Mỗi service phải handle nhiều vấn đề chung như Authentication, SSL, client rate limiting.
Giải pháp được đưa ra cho vấn đề trên là API Gateway – một cổng trung gian giữa client và hệ thống services đằng sau.
Nhiệm vụ của API Gateway là định tuyến các yêu cầu từ client gửi đến, kết hợp và chuyển đổi các giao thức. Tất cả các request từ client sẽ gửi tới API Gateway, sau đó nhờ nó định tuyến các yêu cầu đến với đúng service phù hợp. Lợi ích của việc sử dụng API Gateway:
- Che dấu được cấu trúc của hệ thống Microservices với bên ngoài
- Việc xử lý kết nối ở client sẽ trở nên đơn giản, gọn gàng hơn
- Dễ dàng theo dõi lượt truy cập, traffic chung của toàn hệ thống
- Có thể cài đặt các phương án bảo mật chung cho hệ thống trên API Gateway
- Có thể sử dụng thay thế cho Authentication service
- Có khả năng caching các request và xử lý cân bằng tải trên API Gateway
Kong Gateway là gì?
Kong Gateway là một nền tảng (platform) mã nguồn mở, đóng vai trò là phần mềm trung gian (middleware) và có thể mở rộng bằng cách sử dụng plugins. Kong được viết bằng ngôn ngữ Lua và xây dựng trên NGINX. Kong thường được các nhà phát triển lựa chọn làm giải pháp triển khai API Gateway, quản lý và điều chỉnh để mở rộng quy mô.
Khi hoạt động, mọi request được gửi tới sẽ phải qua Kong trước tiên, sau đó nó sẽ được định tuyến và ủy quyền sang cho các service cụ thể trên server. Ở giữa các request và response, Kong sẽ thực thi các plugins được cài đặt.
Các thành phần trong Kong Gateway bao gồm:
- Service: là id dùng để tham chiếu đến các API và microservice mà nó quản lý
- Routes: điều hướng cách request gửi tới Services. 1 Service có thể có nhiều Routes
- Consumers: đại diện cho end users của API làm nhiệm vụ control xem ai được access vào API
- Plugins: các plugins được tích hợp vào Kong
- Konga: công cụ quản lý GUI mã nguồn mở cho Kong.
Ưu điểm của Kong Gateway:
- Scalable – Khả năng mở rộng dễ dàng
- Hỗ trợ 1 trong 2 loại Databases: Postgres và Cassandra
- Hiệu năng cao với khả năng xử lý một lượng request rất lớn
- Hỗ trợ rất nhiều plugins tùy vào chức năng
- Kong có 2 phiên bản Community và Enterprise. Với nhu cầu sử dụng bình thường thì bản Community hoàn toàn đầy đủ chức năng và miễn phí.
Xem thêm tuyển dụng Design Pattern hấp dẫn trên TopDev
Thiết lập và sử dụng Kong Gateway
1. Thêm một service
Để kết nối với server API thì chúng ta cần thêm một service trong Kong, lưu ý 1 số params như dưới đây:
- name: tên service
- protocol: http protocol
- host: tên của upstream
- port: port của server, mặc định là port 80
- path: đường dẫn tới service trên upstream
- retries: số lần thử khi Kong không gọi được tới upstream
2. Thêm route cho service
Routes là tập hợp các quy tắc để Kong match request tới đúng API trên services mà nó cần tới. Sau khi tạo service, chúng ta sẽ thêm các routes để điều hướng các request tới chính xác các API trong service này. Bạn có thể thêm tương ứng mỗi route cho một API hoặc config route match với đường dẫn của các API trong service. Lưu ý các params trong route:
- name: tên của route
- protocols: http protocol
- paths: danh sách các path được match với route, có thể sử dụng regex trong field này
- methods: danh sách http methods
- strip_path: xóa phần prefix của paths khi tới upstream server
3. Cấu hình plugins
Kong cung cấp cho chúng ta một số các plugins có sẵn gồm cả miễn phí và trả phí. Plugins có thể áp dụng cho toàn bộ API hoặc có thể chỉ cho cụ thể từng API thông qua name hoặc id của chúng. Một số plugins nổi bật mà Kong cung cấp:
- Authentication: xác thực dịch vụ
- Traffic Control: quản lý lưu lượng request đầu vào và đầu ra
- Analytics: hỗ trợ giám sát, thống kê
- Transformations: chuyển đổi trực tiếp dữ liệu request và response
- Logging: ghi nhật ký
Kết bài
Như vậy chúng ta đã cùng nhau tìm hiểu về Kong Gateway cũng như các thiết lập và sử dụng nó để triển khai một API Gateway dành cho hệ thống Microservices. Hy vọng bài viết giúp bạn hiểu được lý do cần phải triển khai một API Gateway và sẵn sàng thử triển khai Kong trên hệ thống server của bạn. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.
Tác giả: Phạm Minh Khoa
Xem thêm:
- CQRS pattern là gì? Ví dụ dễ hiểu về CQRS Pattern
- Thông não Java Design Pattern – Dependency Injection
- Top 5 API thú vị dành cho các New Developers
Tin tuyển dụng IT mọi cấp độ trên TopDev đang chờ bạn ứng tuyển!
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS
- C Compiler là gì? Công việc cụ thể của một trình biên dịch