Cloud và trung tâm dữ liệu

API Gateway là gì và dùng để làm gì

API Gateway là gì và dùng để làm gì
Chia sẻ

Một đội phát triển nhắn cho chúng tôi lúc 11 giờ đêm: ứng dụng di động của họ đứng hình, trong khi website vẫn chạy bình thường. Hoá ra một khách hàng viết sai vòng lặp trong script tích hợp, bắn khoảng bốn nghìn lời gọi mỗi phút vào dịch vụ đơn hàng và làm nghẽn luôn cả những dịch vụ khác dùng chung máy chủ. Không ai chặn được vì mỗi dịch vụ tự mở cổng riêng ra Internet, không có chỗ nào đứng giữa để đếm và từ chối. Đó chính xác là khoảng trống mà một API Gateway lấp vào.

Mục lục1. API Gateway là gì2. Sáu việc một API Gateway làm3. Khi nào bạn thực sự cần một API Gateway4. Ba lỗi hay gặp khi dựng5. Chạy API Gateway ở đâu6. Câu hỏi thường gặp

1. API Gateway là gì

Hình dung công ty bạn có mười dịch vụ nhỏ chạy trên các máy chủ khác nhau: một cái xử lý đơn hàng, một cái quản lý người dùng, một cái gửi thông báo. Ứng dụng di động cần gọi cả mười. Nếu để nó gọi thẳng, bạn phải công khai mười địa chỉ, cài mười bộ xác thực, và mỗi lần đổi máy chủ lại phải cập nhật ứng dụng rồi chờ duyệt lên chợ ứng dụng.

API Gateway là lớp đứng trước, nhận hết. Phía client chỉ biết một địa chỉ duy nhất. Gateway đọc đường dẫn trong yêu cầu, kiểm tra người gọi là ai, chuyển tiếp tới dịch vụ phía sau rồi trả kết quả về.

Cách so sánh quen thuộc: nó là quầy lễ tân của toà nhà. Khách không đi thẳng vào phòng ban mà dừng ở quầy, xuất trình giấy tờ, rồi được chỉ đúng chỗ cần đến. Quầy lễ tân cũng là nơi ghi lại ai vào lúc mấy giờ.

2. Sáu việc một API Gateway làm

Định tuyến. Gateway nhìn đường dẫn hoặc tên miền phụ trong yêu cầu để quyết định gửi nó tới đâu. Nhờ vậy bạn đổi địa chỉ, tách hay gộp dịch vụ phía sau mà phía client không biết và không cần sửa gì.

Xác thực và phân quyền. Thay vì mỗi dịch vụ tự viết một bộ kiểm tra khoá, gateway làm việc đó một lần ở cửa. Ví dụ bộ API đại lý của Cloudzone yêu cầu đủ bốn header là api-username, api-app, api-secret và auth-token, đồng thời chỉ nhận lời gọi từ danh sách IP đã đăng ký trước.

Giới hạn tần suất. Đây là thứ đã cứu đội phát triển trong câu chuyện đầu bài. Rate limiting đặt trần số lời gọi mỗi khoảng thời gian cho từng khoá, nên một script viết sai chỉ làm hỏng phần của chính nó. Bộ API đại lý Cloudzone đặt trần 30 lệnh ghi mỗi phút và 120 lệnh đọc mỗi phút cho mỗi đại lý, con số đủ rộng cho tích hợp bình thường và đủ hẹp để chặn vòng lặp chạy loạn.

Ghi log và đo đạc. Vì mọi lời gọi đều đi qua một chỗ, bạn có một nơi duy nhất để trả lời các câu hỏi vận hành: điểm cuối nào bị gọi nhiều, khách nào đang tăng tải, lỗi 500 bắt đầu từ lúc nào.

Chuẩn hoá phản hồi. Gateway có thể gộp kết quả từ nhiều dịch vụ, cắt bớt trường không cần, hoặc quy về một dạng phản hồi chung. Bộ API đại lý Cloudzone chọn cách trả HTTP 200 cho mọi trường hợp và để trạng thái thật trong trường error của thân phản hồi, với error = 0 là thành công.

Chặn lưu lượng xấu. Gateway là chỗ hợp lý để cắm bộ lọc IP, kiểm tra kích thước gói tin và đỡ các đợt tấn công tầng ứng dụng trước khi chúng chạm vào dịch vụ nghiệp vụ.

3. Khi nào bạn thực sự cần một API Gateway

Ba dấu hiệu rõ ràng. Thứ nhất, bạn có từ ba dịch vụ trở lên cùng phục vụ một ứng dụng, và đang phải chép đi chép lại cùng một đoạn mã xác thực. Thứ hai, bạn mở API ra cho bên thứ ba là đối tác, đại lý hay khách hàng doanh nghiệp, nghĩa là bạn không kiểm soát được chất lượng mã phía người gọi. Thứ ba, bạn cần biết ai gọi cái gì để tính tiền hoặc để dò lỗi.

Ngược lại, nếu hệ thống của bạn là một ứng dụng đơn khối với một cơ sở dữ liệu, dựng thêm gateway lúc này chỉ thêm một lớp phải vận hành. Một reverse proxy như Nginx với vài dòng cấu hình giới hạn tần suất thường là đủ.

4. Ba lỗi hay gặp khi dựng

Nhét logic nghiệp vụ vào gateway. Bắt đầu bằng một điều kiện nhỏ, sáu tháng sau gateway thành nơi chứa quy tắc tính giá và không ai dám sửa. Gateway nên chỉ biết định tuyến, xác thực, đo đếm.

Quên rằng gateway là điểm chết đơn lẻ. Mọi lời gọi đi qua nó, nên nó sập là cả hệ thống im lặng. Hãy chạy ít nhất hai bản sau một bộ cân bằng tải, và diễn tập trước tình huống một bản chết.

Xác thực ở cửa rồi bỏ hẳn kiểm tra bên trong. Nếu kẻ tấn công vào được mạng nội bộ, các dịch vụ phía sau sẽ nhận mọi lệnh mà không hỏi lại. Hãy giữ một lớp kiểm tra nhẹ giữa các dịch vụ với nhau.

5. Chạy API Gateway ở đâu

Gateway cần độ trễ thấp tới các dịch vụ phía sau, nên đặt nó chung hạ tầng với chúng là hợp lý. Một Cloud Server tại Cloudzone chạy chip Intel Xeon Platinum, RAM bus tối thiểu 2666MHz, lưu trữ 100% Enterprise SSD/NVMe, băng thông 200Mbps trong nước và 10Mbps quốc tế, uptime cam kết 99,99%. Giá khởi điểm từ 100.000đ/tháng, chưa gồm VAT.

Vì gateway là cổng duy nhất ra Internet, hai thứ nên đi kèm: dịch vụ Anti-DDoS để đỡ các đợt tấn công làm nghẽn băng thông, và Endpoint Security cho chính máy chủ chạy gateway. Nếu bạn là đối tác muốn bán lại dịch vụ Cloud và cần sẵn lớp API cùng billing, nền tảng sPortal White Label đã có phần đó dựng sẵn.

6. Câu hỏi thường gặp

API Gateway khác Load Balancer ở chỗ nào?

Load balancer chia đều lưu lượng cho nhiều bản sao của cùng một dịch vụ, làm việc chủ yếu ở tầng mạng. API Gateway đọc nội dung yêu cầu để định tuyến tới các dịch vụ khác nhau, đồng thời xác thực và đếm tần suất. Nhiều hệ thống dùng cả hai, với load balancer đứng trước gateway.

Dùng Nginx làm API Gateway được không?

Được, cho các nhu cầu cơ bản như định tuyến theo đường dẫn, giới hạn tần suất và chấm dứt TLS. Khi bạn cần quản lý khoá API theo từng khách, gói cước và cổng tự phục vụ cho lập trình viên thì nên chuyển sang phần mềm chuyên dụng như Kong hoặc APISIX.

API Gateway có làm chậm hệ thống không?

Có thêm một chặng mạng, thường vài mili giây khi gateway đặt cùng data center với dịch vụ phía sau. Phần lớn độ trễ người dùng cảm nhận được đến từ truy vấn cơ sở dữ liệu, không phải từ chặng này.

Nên đặt rate limit ở mức nào?

Hãy đo lưu lượng thật trong hai tuần, lấy mức đỉnh rồi nhân hai làm trần khởi điểm. Quan trọng hơn con số là trả về mã lỗi rõ ràng kèm thời gian chờ, để phía tích hợp biết đường lùi lại thay vì thử lại liên tục.

💬 Chat với Cloudzone

Chia sẻ

Bài viết liên quan

Hybrid Cloud: khi nào nên dùng cả hai hạ tầng

Hybrid Cloud: khi nào nên dùng cả hai hạ tầng

Một công ty thương mại điện tử liên hệ đội kỹ thuật Cloudzone trước đợt cao điểm cuối năm. Hệ thống đặt hàng của họ chạy trên cụm máy chủ riêng, hoạt động ổn định gần như cả năm. Nhưng vài ngày sale lớn thì lượng truy cập tăng đột ngột, và họ không muốn mua thêm phần cứng chỉ để dùng trong ba ngày. Câu hỏi đặt ra không phải là chọn hạ tầng riêng hay hạ tầng chung, mà là dùng cả hai thế nào cho đúng việc. Đó chính là bài toán mà hybrid cloud sinh ra để giải.

Sao lưu chéo và DR: hiểu đúng để dữ liệu doanh nghiệp không mất trắng

Sao lưu chéo và DR: hiểu đúng để dữ liệu doanh nghiệp không mất trắng

Sao lưu chéo, DR, RPO/RTO, quy tắc 3-2-1 - giải thích dễ hiểu cách bảo vệ dữ liệu doanh nghiệp khỏi mất mát và chọn giải pháp sao lưu phù hợp

Colocation, máy chủ vật lý hay Cloud: chọn mô hình nào?

Colocation, máy chủ vật lý hay Cloud: chọn mô hình nào?

Colocation, thuê máy chủ vật lý hay Cloud Server? So sánh chi phí, kiểm soát, mở rộng và gợi ý chọn mô hình hạ tầng phù hợp cho doanh nghiệp

Anti-DDoS hoạt động thế nào để bảo vệ dịch vụ?

Anti-DDoS hoạt động thế nào để bảo vệ dịch vụ?

Anti-DDoS lọc lưu lượng tấn công thế nào? Tìm hiểu các lớp phát hiện, làm sạch, giới hạn và cơ chế bảo vệ dịch vụ trước tấn công DDoS

SSD/NVMe Enterprise và HDD: khác biệt hiệu năng khi chọn máy chủ

SSD/NVMe Enterprise và HDD: khác biệt hiệu năng khi chọn máy chủ

HDD, SSD và NVMe khác nhau ra sao? Hiểu IOPS, độ trễ và ý nghĩa của chuẩn Enterprise để đọc bảng cấu hình máy chủ một cách tỉnh táo.

HCI là gì và vì sao quan trọng với Cloud Server?

HCI là gì và vì sao quan trọng với Cloud Server?

HCI là gì, khác gì hạ tầng ba tầng truyền thống, và vì sao kiến trúc này quyết định độ ổn định của dịch vụ Cloud Server bạn đang thuê?