API Gateway được ví như cánh cửa kết nối và điều phối mọi giao tiếp giữa các ứng dụng trong hệ thống công nghệ hiện đại. Không chỉ đóng vai trò như một “người gác cổng” bảo mật, giải pháp này còn giúp doanh nghiệp kiểm soát truy cập, tối ưu hiệu suất và đảm bảo sự ổn định của các API trong môi trường phức tạp. Vậy thực chất API Gateway là gì, sở hữu những tính năng vượt trội nào và hoạt động ra sao? Hãy cùng Sunteco khám phá chi tiết trong bài viết dưới đây.
API Gateway là gì?
API Gateway là một thành phần quan trọng trong kiến trúc microservices, đóng vai trò như một cửa ngõ để quản lý và điều phối các yêu cầu đến các dịch vụ.
Giả sử bạn có một hệ thống triển khai bằng kiến trúc microservice. Và đây là những điều sẽ xảy ra trên thực tế khi không có API Gateway:
- Mỗi service sẽ phải tự xử lý việc xác thực (authentication), ngay cả khi yêu cầu (request) đã được xác thực trước đó. Khi yêu cầu tiếp tục gọi đến một service khác, nó vẫn phải trải qua quá trình xác thực lại.
- Các nhu cầu như log API, xử lý hành vi của API dựa trên request/response… cần implement trên mỗi service riêng lẻ. Điều này gây bất tiện khi bổ sung service mới trên những yêu cầu tập trung này.
- Mất kiểm soát giữa api internal và public api cho client, không có giải pháp limit giữa các nhóm api có quyền truy cập khác nhau.
- Lộ các địa chỉ truy cập của dịch vụ đầu cuối và kiến trúc dịch vụ bên trong (do url thường kèm tên dịch vụ hoặc các địa chỉ IP khác nhau) của hệ thống do cần cung cấp trực tiếp địa chỉ public để client kết nối. Gia tăng rủi ro bảo mật của hệ thống.
Đây mới chỉ là một số ít vấn đề được liệt kê. Mục đích chính của API Gateway là tạo ra một lớp trung gian giữa client và hệ thống microservice phía sau. API Gateway hoạt động như một endpoint duy nhất.
Các giao tiếp từ phía client trên cả hai chiều request và response sẽ hoàn toàn được kiểm soát khi đi qua API Gateway.
Trong bài viết này chúng ta sẽ tìm hiểu các tính năng của API Gateway và tại sao những ứng dụng này lại quan trọng trong hệ thống microservice.
API Gateway là gì Kiến trúc của API Gateway
Các ứng dụng của API Gateway là gì?
API Gateway không chỉ là một thành phần trung gian giúp điều phối giao tiếp giữa các microservices, mà còn đóng vai trò quan trọng trong việc tăng cường bảo mật, hiệu quả và khả năng quản lý hệ thống. Dưới đây là một số ứng dụng tiêu biểu:
Routing
Ứng dụng phổ biến nhất của API Gateway là chức năng routing. API Gateway được thiết kế nhằm đồng nhất điểm truy cập (entry point) cho hệ thống, giúp đơn giản hóa việc quản lý các kết nối từ phía client. Hoạt động như một “cửa ngõ” tập trung, API Gateway tiếp nhận mọi yêu cầu (request) từ client, sau đó định tuyến chúng đến các microservice phía sau theo các quy tắc (rule) được thiết lập sẵn.
Các yêu cầu (request) từ client thường là REST API, nhưng cũng có thể bao gồm các loại kết nối khác như WebSocket, gRPC hoặc SOAP. API gatewa nhận diện các request từ các dữ liệu bao gồm: đường dẫn url, header, body… sau đó so sánh với các rule routing được cài đặt để điều hướng request đến các target service phía sau. Target service là các microservice triển khai cùng hệ thống, các
VM hoặc bất cứ dịch vụ nào được chỉ định bằng domain hoặc địa chỉ IP.
Caching
Nhà phát triển đặt các bộ dữ liệu đệm (cache) ngay trên API Gateway để tăng cường hiệu năng hệ thống. Bằng cách kết hợp thêm với một số công vụ phục vụ lưu trữ và phân phối dữ liệu cache như Redis, dữ liệu được trả về ngay khi request tới API Gateway mà không cần request tới backend service phía sau
Rate limiting
Tính năng Rate limit giúp ngăn chặn việc lạm dụng hoặc lượng đột biến các traffic bất thường gây hại cho hệ thống. Rate Limit sẽ giúp bảo vệ tài nguyên hệ thống microservice phía sau bằng cách ngăn chặn khi có quá nhiều traffic đến.
Trong thực tế rate limit được sử dụng trong các trường hợp:
- Ngăn chặn brutal force
- Giảm nguy cơ bị DDoS
- Ngăn chặn các hành vi crawler data
- Cân bằng lượng sử dụng giữa các người dùng trong trường hợp một số khách hàng phát sinh quá nhiều request.
API Gateway sẽ giới hạn tần suất truy cập của các API trên các resource khác nhau. Ngoài việc chỉ định pattern của request nào sẽ bị giới hạn, điều kiện giới hạn các request sẽ dựa trên những thông số đặc trưng cho một native request như địa chỉ IP hoặc các thông tin về authentication nằm trong header hoặc cookie.
API composition và aggregation
Request aggregation là một pattern cho phép kết hợp dữ liệu nằm phân tán trên các service khác nhau trong một response duy nhất. Việc gọi api cross qua nhiều service sẽ làm giảm hiệu năng chung, do các request phải xử lý tuần tự, thêm vào việc quản lý các request cũng trở lên khó khăn khi debug. Request aggregation sẽ tổng hợp các request trên, fetching data và trả về trong một lần xử lý.
Logging và monitoring
API Gateway collect metrics và logs từ các request, cung cấp cái nhìn thực tế về lượng sử dụng và performance của hệ thống. Việc collect log bao gồm phương thức đơn giản như log dữ liệu ra console, gửi tới các queue để tổng hợp hay áp dụng các giải pháp thu thập log enterprise như Fluentd kết hợp với ELK, EFK.
Authentication và Authorization
Khi hệ thống microservice không có API Gateway, mỗi service phải thực hiện quá trình xác thực (authentication) trên chính nó. Cho dù việc authentication được ủy quyền cho một service riêng biệt. Khi một request cần gọi qua nhiều service, việc authentication sẽ thực hiện lại khi một service gọi tới một service khác. Điều này là không cần thiết và lãng phí thêm một số round chip trên mỗi request.
Thiết kế đúng sẽ thực hiện Authentication và Authorization tập trung tại API Gateway. Lúc này, các request được thực hiện xác thực một lần duy nhất tại API Gateway, thông tin xác thực của tài khoản sẽ đi cùng với request vào các service backend bên trong mà không cần thực hiện xác thực lại.
Giới hạn điểm truy cập
Trong hệ thống microservice, số lượng các dịch vụ có thể lên tới hàng chục, hàng trăm service. Việc quản lý các endpoint cho các mục đích khác nhau sẽ trở nên khó khăn. Sẽ có những API public internet phục vụ cho phía client web, một số cho mobile, một số lại phục vụ cho external rest API hoặc callback cho người dùng tích hợp, một số khác lại chỉ dành cho nội bộ giữa các service… Việc public toàn bộ các API của hệ thống ra internet là rất rủi ro cho hệ thống.
Sự đa dạng mục đích các endpoint này đòi hỏi các phương thức log, authentication và authorization khác nhau. API Gateway sẽ tập trung các công cụ và giải pháp thực hiện quản lý truy cập tại một điểm nút duy nhất, giúp dễ dàng trong quản lý các kết nối một cách hiệu quả.
Lựa chọn API Gateway
Lựa chọn giải pháp API Gateway phù hợp rất quan trọng với việc phát triển và mở rộng hệ thống về sau. Các nhu cầu về ứng dụng của API Gateway chưa xuất hiện ngay khi hệ thống mới phát triển, chính vì vậy nên nếu nhà phát triển lựa chọn một giải pháp không phù hợp trong giai đoạn đầu, họ có thể phải thay thế giải pháp đó trong giai đoạn sau của hệ thống.
Nhà phát triển lựa chọn một trong các framework opensource có sẵn để cài đặt API Gateway, hoặc tự xây dựng một API Gateway cho riêng hệ thống với bằng cách custom hoặc kết hợp với một số thư viện sẵn có.
Sử dụng Framework opensource
Có khá nhiều các API Gateway framework nổi tiếng trên thị trường. Những framework này có cộng đồng sử dụng rất lớn. Bạn đã từng nghe đến KONG API Gateway hoặc NGINX trong các hệ thống microservice. Chúng ta cùng xem xét qua một số Framework phổ biến và điểm mạnh của chúng.
Framework |
Language |
Key Feature |
Best For |
Kong |
Lua |
Many plugins |
Large deployments |
NGINX |
C |
Speed |
High-traffic sites |
Tyk |
Go |
User-friendly dashboard |
Easy management |
Express Gateway |
JavaScript |
Node.js compatible |
JS dev teams |
KrakenD |
Go |
No database required |
Microservices |
Apache APISIX |
Lua |
Cloud-native |
Kubernetes setups |
Các framework này có ưu điểm là có performance cao hơn nhiều so với việc tự xây dựng API Gateway, ngoài ra interface sử dụng cũng được building sẵn, dễ dàng sử dụng và cài đặt. Hầu hết các framework này sử dụng các file cấu hình để thực hiện cài đặt cấu hình chức năng, ít đòi hỏi việc custom code. Việc mở rộng hoặc custom các tính năng đòi hỏi cài thêm các plugin hoặc người dùng cần implement theo interface của plugin mà Framework yêu cầu.
Danh sách các tiêu chí lựa chọn API Gateway
Tuy việc sử dụng API Gateway framework khá tiện lợi nhưng bạn cũng cần cân nhắc các yếu tố khác trước khi tích hợp nó vào hệ thống.
- Team stack: Đôi khi nhà phát triển sẽ cần mở rộng tính năng của Framework sẵn có tích hợp với một thành phần sẵn có của hệ thống. Lúc này việc custom plugin hoặc đọc hiểu để chỉnh sửa các cấu hình của framework để đáp ứng nhu cầu sẽ phụ thuộc vào ngôn ngữ mà framework có phù hợp với tech stack của team hay không. Việc học thêm Lua chỉ để custom Kong gateway sẽ không phải là một quyết định sáng suốt với một team Java
- Tính năng: Api Gateway có rất nhiều tính năng hữu ích nhưng không phải tất cả các framework đều hỗ trợ các tính năng này. Nhà phát triển cần xác định phạm vi những feature cần thiết nhất cho hệ thống của mình.
- Chi phí: API Gateway hỗ trợ tính năng ở các package khác nhau, một số chỉ có ở bản trả phí mà không có ở bản community hay opensource.
- Khả năng mở rộng, tích hợp: API Gateway cần có khả năng mở rộng, custom và tích hợp. Sẽ ra sao nếu như API Gateway bạn chọn chỉ hỗ trợ authentication bằng JWT nhưng lại không hỗ trợ phương thức basic authentication hoặc api-key và lại không có phương án nào custom, mở rộng.
- Khả năng scale/Performance: Nếu như hệ thống phải chịu tải tới hàng triệu request trong một thời gian ngắn thì lúc này hiệu năng của API Gateway lại cần được đặt lên hàng đầu. Ví dụ như NGINX rất nhẹ, chiếm ít tài nguyên xử lý nhưng lại có thể xử lý gấp 2.6 lần số request khi so với Kong API Gateway với các response 1Kb
- Khả năng Triển khai, cài đặt: Khả năng dễ dàng triển khai hoặc cài đặt bằng các file cấu hình hoặc deploy trên VM hoặc trên container. Điều này sẽ quyết định framework sẽ triển khai đồng bộ với hệ thống phần mềm, tiết kiệm effort cho việc maintain.
Tự xây dựng API Gateway
Một giải pháp khác cho API Gateway là việc tự xây dựng một API Gateway hoặc sử dụng kết hợp cả giải pháp custom với framework. Tự xây dựng API Gateway có ưu điểm là dễ triển khai, gần với techstack của team, dễ dàng tích hợp với các giải pháp về authentication và authorization sẵn có của hệ thống. Các thành phần khác của hệ thống cũng dễ dàng được tích hợp và tái sử dụng cùng với gateway mà không cần tuân theo bản mẫu của framework. Nhưng ngược lại, việc tự xây dựng API Gateway có thể gặp các rủi ro về bảo mật và hiệu năng kém hơn so với sử dụng framework.
Nguyên lý cơ bản của Tự xây dựng API Gateway sẽ dựa trên nền tảng một proxy server, request đến sẽ được bóc tách ra thành các thành phần, từ đó sử dụng logic code để áp dụng các chức năng của API Gateway như routing, authentication, logging…
Kết
Hy vọng những thông tin trong bài viết đã giúp bạn có cái nhìn toàn diện về API Gateway là gì? Với vai trò là cửa ngõ của cả hệ thống phần mềm/dịch vụ, vai trò và chức năng của API Gateway rất quan trọng đối với toàn bộ hệ thống. Việc lựa chọn một giải pháp API Gateway không phù hợp khiến nhà phát triển gặp khó khăn cho các giải pháp quản lý tập trung request về sau. Nhìn nhận trong kiến trúc hệ thống microservice, với đặc tính phân tán, API Gateway là một trong số ít các thành phần mang tính tập trung, giúp người dùng quản lý tập trung được toàn bộ các dịch vụ phía sau. Tổ chức tốt các thành phần API Gateway sẽ giúp nhà phát triển có một hệ thống ổn định và an toàn.