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.