Gateway là cửa ngõ duy nhất cho client vào hệ thống, xử lý các mối quan tâm cắt ngang — thứ mọi service đều cần và không nên viết lại 10 lần.
Nên làm:
- Định tuyến request tới service phù hợp; ẩn cấu trúc nội bộ khỏi client.
- Xác thực (kiểm tra token, dừng request vô danh ngay tại cửa) — nhưng phân quyền chi tiết theo nghiệp vụ vẫn thuộc service.
- Rate limiting, chống lạm dụng, terminate TLS.
- Log truy cập, sinh correlation id, đo metric ở biên.
- Ghép vài lời gọi đơn giản (gateway aggregation) để client mobile bớt round-trip.
Không nên làm:
- Logic nghiệp vụ (tính giá, kiểm tra tồn kho, quy tắc giảm giá). Nhét vào đây thì mọi thay đổi nghiệp vụ phải deploy gateway — thành monolith mới ở tầng ngoài, và là điểm nghẽn giữa các team.
- Truy cập thẳng database của service.
- Biến đổi dữ liệu phức tạp riêng cho một client — việc đó thuộc BFF.
- Ghép hàng chục lời gọi tạo chuỗi đồng bộ dài.
Điểm cần nói thêm khi phỏng vấn: gateway là single point of failure — phải chạy nhiều instance sau load balancer, có health check, và phải giữ mỏng để không thành điểm nghẽn latency. Đội nào cũng phải chờ merge vào gateway để ra tính năng là dấu hiệu gateway đã ôm quá nhiều.