Tổng quan API Gateway

Một phần của tài liệu Phát triển api gateway Đảm bảo an toàn hệ thống microservices (Trang 20 - 24)

CHƯƠNG I TỔNG QUAN API GATEWAY

1.3. Tổng quan API Gateway

1.3.1. Định nghĩa API

API ( Application Programming Interface ) là một giao diện của ứng dụng giúp một ứng dụng dễ dàng tiếp nhận các yêu cầu hoặc dữ liệu từ một ứng dụng khác. Bằng cách xác định các điểm vào uy tín, đơn giản và được phơi ra, API cho phép các nhà phát triển dễ dàng truy cập và tái sử dụng logic ứng dụng được xây dựng bởi các nhà phát triển khác.

Ứng dụng API:

 Web API: là hệ thống API được sử dụng trong các hệ thống website. Hầu hết các website đều ứng dụng đến Web API cho phép bạn kết nối, lấy dữ liệu hoặc cập nhật cơ sở dữ liệu. Ví dụ: Bạn thiết kế chức nằng login thông Google, Facebook, Twitter, Github… Điều này có nghĩa là bạn đang gọi đến API của. Hoặc như các ứng dụng di động đều lấy dữ liệu thông qua API.

 API trên hệ điều hành: Windows hay Linux có rất nhiều API, họ cung cấp các tài liệu API là đặc tả các hàm, phương thức cũng như các giao thức kết nối. Nó giúp lập trình viên có thể tạo ra các phần mềm ứng dụng có thể tương tác trực tiếp với hệ điều hành.

 API của thư viện phần mềm hay framework: API mô tả và quy định các hành động mong muốn mà các thư viện cung cấp. Một API có thể có nhiều cách triển khai khác nhau và nó cũng giúp cho một chương trình viết bằng ngôn ngữ này có thể sử dụng thư viện được viết bằng ngôn ngữ khác. Ví dụ bạn có thể dùng Php để yêu cầu một thư viện tạo file PDF được viết bằng C++.

Đối với Web API hiện nay đều tuân thủ theo tiêu chuẩn REST và HTTP, tạo

sự thân thiện dễ sử dụng với nhà phát triển. Giúp người dùng dễ dàng truy

cập, dễ hiểu hơn. Web API hiện đại dùng cho các đối tượng cụ thể, chẳng hạn như mobile developer với document, version khác nhau.

Ví dụ:

Bảng dưới đây mô tả ví dụ về REST API trả ra thông tin của một cuốn sách

Thông tin Giá trị Mô tả

URL https://www.mybooksapi.com/books/

info

Đường dẫn tới nguồn trả lại nội dung cuốn sách

HTTP Method GET Sự dụng

phương thức GET để gọi API

Query param Id = ‘0385504217’ Id của cuốn

sách Response data {

"title" : "book_title", "author" : "author_name", "published" : "publish_date"

}

JSON Object chứa thông tin của cuốn sách

Response code 200 ( Status code )

yêu cầu thành công

Sử dụng thông tin này, bạn có thể thực hiện yêu cầu cURL sau cho API này

để nhận thông tin về một cuốn sách:

curl -X GET https://www.mybooksapi.com/books/info?id=0385504217

1.3.2. API Gateway hoạt động

API Gateway nằm giữa người dùng bên ngoài và hệ thống microservices bên trong. Nó là một services đóng vai trò như một lối vào duy nhất để truy cập vào các dịch vụ. API Gateway sẽ thực hiện 2 công việc chính

 Điều hướng các request từ client đến service tương ứng

 Thực hiện điều hướng request đến một tập các service

API Gateway sẽ quản lý các endpoint của toàn bộ services, thay thế client để nói chuyện với các services. Đối với client, API Gateway và toàn bộ hệ thống microservices phía sau trở thành một khối

Các tính năng cơ bản cần có của API Gateway:

 Routing : Quản lý các dịch vụ và phân phối request từ client đến dịch

vụ tương ứng.

 Offloading : Cung cấp khả năng giảm tải thông qua cung cấp các cross- cutting function sử dung chung bởi các microservices.

 Authentication and authorization (Xác thực và phân quyền): Xác thực rằng một dịch vụ dùng cụ thể có quyền truy cập API. Mục đích của xác thực API là từ chối quyền truy cập vào dịch vụ tiêu dùng không kiểm tra xác thực.

 Service discovery integration ( Tích hợp tìm kiếm dịch vụ): Để gửi yêu cầu API đến dịch vụ, khách hàng hoặc API Gateway phải biết vị trí của dịch vụ mà nó đang giải quyết. Nó chính là đặc trưng của tính năng routing

 Response caching (Bộ nhớ đệm phản hồi): Lưu cache các luật và phản hồi mà API Gateway hay được nhận yêu cầu

 Rate limiting and throttling: Cấu hình ( điều chỉnh và hạn ngạch ) cho API của mình để giúp bảo vệ chúng khỏi bị choáng ngợp bởi quá nhiều yêu cầu

 Load balancing ( cân bằng tải)

 Logging, tracing ( nhật ký và truy tìm ): Ghi nhật ký để phục vụ tìm kiếm lỗi

 IP Blacklist: Danh sách IP cần phải chặn không được truy cập

 API Composition / Aggregration: Khả năng có thể tổng hợp yêu cầu từ nhiều service để cho ra kết quả mong muốn của client.

 Protocol translation : giải quyết bài toán về sự đa dạng của

communication protocol (gRPC, REST, SOAP, … )

Có thể nhận thấy API gateway là một traffic bottle neck (nghẽn cổ chai)

và single point of failure (một điểm thất bại gây lỗi cả hệ thống) nên nếu API Gateway bị quá tải hoặc không khả dụng thì sẽ là một thảm hoạ. Chính vì vậy trong thiết kế thực tế, API Gateway thường hiếm khi được host bởi 1 instance

mà thường là được host bởi nhiều instance với endpoint được attach vào load balancer của chính API Gateway từ đó cũng cấp khả năng high-availabilty cho API gateway.

1.3.3. Đánh giá API Gateway

 Lợi ích

 Đóng gói cấu trúc bên trong của ứng dụng, giảm sự phụ thuộc giữa client và ứng dụng

 Client chỉ cần nói chuyện với gateway thay vì các services

 Giảm thiểu trao đổi qua lại giữa client và ứng dụng từ đó đơn giản hoá client code

 Các cross-cutting function được cung cấp để giảm tải cho services.

 Security : nếu không có API Gateway thì toàn bộ services sẽ cần được exposed ra thế giới bên ngoài và tạo ra nguy cơ về an ninh

 Điểm hạn chế

 Khi xây dựng API Gateway vô tình chúng ta đã gắn chặt nó với

internal microservices.

 API Gateway là single point of failure

 API Gateway có thể làm tăng response time thông qua việc tiến hành thêm các cuộc gọi network tuy ảnh hưởng đó không thực sự lớn so với roud trip của việc không thực hiện sử dung API Gateway

 Nếu không scale tốt thì API Gateway sẽ là một bottleneck

 API Gateway sẽ yêu cầu cần thêm chi phí phát triển và bảo trì trong tương lai khi mà nó chứa cả các custom logic và data aggregation.

 Developer sẽ cần update API Gateway để expose từng microservice’s endpoints.

 Thêm vào đó việc thay đổi internal microservice có thể dẫn đến sự thay đổi ở tầng API Gateway.

Một phần của tài liệu Phát triển api gateway Đảm bảo an toàn hệ thống microservices (Trang 20 - 24)

Tải bản đầy đủ (DOCX)

(86 trang)
w