Api Gateway là gì? Những lợi ích quan trọng của việc dùng API Gateway 

Một hệ thống microservices trung bình sẽ có một vài hoặc hàng trăm những service khác nhau, nếu client giao tiếp trực tiếp với những service này thì sẽ rất là rắc rối và lằng nhằng. Chính vì thế, để có thể giải quyết vấn đề trên thì API Gateway đã ra đời. Vậy API Gateway là gì? Lợi ích mà nó đem lại là gì? Những chia sẻ sau đâu của chúng tôi sẽ giúp bạn hiểu rõ hơn về API Gateway.

API Gateway là gì?

API Gateway đóng vai trò là một cổng trung gian giữa client và hệ thống microservices ở đằng sau. Đây là cổng duy nhất để tới hệ thống microservices, API Gateway sẽ nhận các requests từ phía client, nó sẽ chỉnh sửa, xác thực và điều hướng đến các API cụ thể trên service ở phía sau. 

Đây là sơ đồ của hệ thống API Gateway

Đây là sơ đồ của hệ thống API Gateway

Bên cạnh nhiệm vụ chính là proxy request thì hệ thống API Gateway thường sẽ đảm nhận luôn một số vai trò khác như là: Bảo mật API, monitoring, analytics số lượng requests, cũng như tình trạng của hệ thống ở phía sau.

Bạn đọc tham khảo thêm: Socket.io Là Gì– Những Thông Tin Đầy Đủ & Chi Tiết Nhất

Lợi ích của API Gateway là gì?

Những lợi ích quan trọng của việc dùng API Gateway:

Che dấu được cấu trúc của hệ thống microservices với bên ngoài

Clients sẽ tương tác với hệ thống thông qua API Gateway chứ không phải gọi trực tiếp tới một services cụ thể nào đó. Các endpoints của các service sẽ được gọi nội bộ, có nghĩa là gọi giữa các service với nhau hoặc nó được gọi từ API Gateway.

Lúc này, người dùng sẽ được gọi các API này thông qua các public endpoints từ API Gateway. Vì thế, phía client không cần và cũng không thể biết được các service từ phía backend được phân chia ra sao. Việc refactor code frontend cũng sẽ trở nên dễ dàng hơn đối với các developer.

Phần code phía frontend sẽ trở nên gọn gàng hơn

Vì không cần phải tracking nhiều endpoints, tất cả chỉ việc gọi đến API Gateway nên phần code frontend sẽ trở nên gọn gàng hơn so với việc phải tracking hàng tá endpoints trên từng service một, nhất là khi hệ thống ngày một trở nên phình to ra.

Dễ dàng theo dõi và quản lý được traffic

Hầu hết những hệ thống API Gateway được phổ biến rộng rãi đều sẽ đi kèm những tính năng theo dõi và quản lý được lượng traffic bằng GUI. Hoặc nó thông qua các API của hệ thống Gateway. Ví dụ như với Kong – bản EE.

Kong Enterprise bản EE

Kong Enterprise bản EE

Requests caching – cân bằng tải

API Gateway sẽ kiêm luôn cả vai trò load balancer của hệ thống. Requests sẽ không được gửi trực tiếp đến backend nên nó sẽ giảm thiểu được những rủi ro mà hệ thống sẽ bị quá tải.

Thêm một lớp bảo mật nữa cho hệ thống

API Gateway sẽ giúp ngăn chặn những cuộc tấn công bằng cách sẽ thêm một lớp để bảo vệ các loại tấn công như ddos, slq injections,…

Thay thế authentication services

API Gateway thường sẽ cung cấp nhiều cơ chế xác thực, có thể sử dụng nó để xác thực người dùng. Nó giúp tiết kiệm được thời gian và làm hệ thống của chúng ta trở nên đơn giản hơn. 

Ví dụ như một vài cơ chế xác thực để hỗ trợ bởi Kong API Gateway

Ví dụ như một vài cơ chế xác thực để hỗ trợ bởi Kong API Gateway

Nhược điểm khi sử dụng API Gateway là gì?

Ngoài những lợi ích  tuyệt vời trên của API Gateway thì nó cũng có những nhược điểm phải kể đến đó là:

Tăng thời gian response

Vì phải đi qua server trung gian nên việc response sẽ bị trễ hơn so với việc gọi trực tiếp đến hệ thống.

Thêm tác nhân gây lỗi

Để có thể sử dụng API Gateway thì chúng ta sẽ phải config, sau đó chỉnh sửa code, quản lý server gateway,… Nó sẽ khiến cho chúng ta thêm việc phải lo. Nếu chẳng may gateway có lỗi thì các requests sẽ không thể tới được phía server.

Có thể gây tắc nghẽn cổ chai

Nếu như không được scale hay config một cách hợp lý thì gateway sẽ có thể bị quá tải và khiến hệ thống của chúng ta bị chậm.

Triển khai API Gateway cho Microservice với Kong

Triển khai API Gateway cho Microservice với Kong

Tốn thêm tiền

Tiền server, tiền điện, tiền quản lý hệ thống API Gateway, với các hệ thống lớn thì sẽ cần đến những tính năng hữu ích và tốt nhất nên sẽ cần phải tốn thêm tiền để mua bản Enterprise của các API Gateway. Nếu tính ra thì chi phí không hề rẻ một chút nào.

Bạn đọc tham khảo thêm: RSA là gì? Cơ chế hoạt động của RSA ra sao?

Hướng dẫn bạn cách triển khai API Gateway

Dưới đây là một số khía cạnh trong việc triển khai và sử dụng API Gateway, trước tiên bạn cần xem xét các design issues dưới đây:

Hiệu suất và khả năng mở rộng:

Chỉ có một số ít những công ty hoạt động theo quy mô của Netflix và cần xử lý hàng tỷ request mỗi ngày. Nhưng đối với các ứng dụng, hiệu năng và khả năng mở rộng của API Gateway cũng rất trọng. Vì thế, để xây dựng API Gateway trên một nền tảng hỗ trợ I/O bất đồng, nonblocking với nhiều công nghệ khác nhau.

Trên JVM, bạn cũng có thể sử dụng một trong các frameworks NIO-based như Netty, Vertx, Spring Reactor hoặc JBoss Undertow. Một số tùy chọn non-JVM phổ biến là Node.JS. Đây là một nền tảng được xây dựng trên JavaScript engine của chrome. Ngoài ra bạn cũng có thể sử dụng NGINX Plus.

Sử dụng Reactive Programming Model

API Gateway xử lý một số request bằng cách đó là định tuyến chúng tới một số dịch vụ thích hợp. Nó sẽ xử lý các request bằng cách gọi nhiều dịch vụ và tổng hợp các kết quả. Để có thể giảm thiểu thời gian phục hồi thì API Gateway cần thực hiện đồng thời các request độc lập. Nhưng đôi khi nó còn phải phụ thuộc giữa các request.

API Gateway trước tiên cần phải xác nhận request bằng cách gọi một authentication service trước khi định tuyến request đến một dịch vụ cụ thể. Tương tự, để fetch thông tin về các sản phẩm có trong wishlist của khách hàng. Đầu tiên API Gateway cần phải truy xuất hồ sơ của khách hàng chứa thông tin đó và sau đó sẽ lấy thông tin cho từng sản phẩm.

Viết API Gateway bằng cách đó là sử dụng phương pháp asynchronous callback sẽ gây ra callback hell. Code sẽ bị rối và khó hiểu và rất dễ bị lỗi. Một cách tiếp cận tốt hơn đó là viết API Gateway theo kiểu khai báo bằng cách sử dụng phương thức phản ứng.

Service Invocation

Một ứng dụng dựa trên microservices chính là một hệ thống phân tán và phải sử dụng cơ chế inter-process communication. Có 2 kiểu giao tiếp giữa các process đó là: Sử dụng cơ chế đó là dựa trên asynchronous messaging – based đã sử dụng các message broker như JMS hoặc AMQP. Một số khác đó là, chẳng hạn Zeromq, không dùng broker mà các services giao tiếp trực tiếp với nhau.

Một cách giao tiếp khác giữa các process khác là cơ chế synchronous như HTTP hoặc Thrift. Một hệ thống thông thường sẽ sử dụng cả kiểu asynchronous và synchronous. Vì thế API Gateway sẽ cần phải được hỗ trợ nhiều cơ chế giao tiếp khác nhau.

Service Discovery

API Gateway cần phải biết được vị trí của từng service mà nó giao tiếp. Trong một ứng dụng truyền thống, các service được cố định ở vị trí, nhưng trong một ứng dụng microservices hiện đại, dựa trên cloud, đây chính là một vấn đề rất nan giải. Các dịch vụ cơ sở hạ tầng thường sẽ có một vị trí tĩnh, nó được xác định thông qua OS environment variables. 

Nhưng việc xác định vị trí của một Application services không phải là điều dễ dàng. Application services sẽ có được vị trí gán động. Ngoài ra, nó phải tập hợp các instance của service sẽ thay đổi tự động dựa trên sự tự mở rộng và nâng cấp. Vì thế, API Gateway sẽ giống như bất kỳ ứng dụng client nào khác trong hệ thống. Nó cần phải sử dụng cơ chế service discovery.

Lời kết

Hy vọng những chia sẻ trên đã giúp bạn hiểu được API Gateway là gì? Cũng như những ưu điểm và khuyết điểm của nó. Mong rằng những thông tin trên sẽ giúp ích cho bạn trên con đường phát triển sự nghiệp của mình. 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *