
Anh em làm Dev thì đã quá quen thuộc với khái niệm API, dùng để kết nối với hệ thống khác
để lấy dữ liệu. Ví dụ như vào mấy trang web có chức năng login bằng Google, Facebook là gọi
API của Facebook, Google. Hay mấy ứng dụng thanh toán trực tuyến bằng thẻ VISA, developer invoke Visa, Paypal API, để thực hiện giao dịch
Để thuận tiện cho user, các công ty này đề xây dựng lên Developer Portal, ví dụ như Spotify, nhà cung cấp âm nhạc trực tuyến nổi tiếng, tạo nên API portal
https://developer.spotify.com/, nơi developer có thể sử API Spotify để phát triển các ứng dụng tích hợp với Spotify, chẳng hạn như hiển thị danh sách phát, tìm kiếm bài hát, quản lý thư viện nhạc cá nhân. Hay Visa, ứng dụng thanh toán online lớn nhất thế giới, cho phép các trang thương mại điện tích hợp thanh toán bằng thẻ Visa,
https://developer.visa.com/Tóm lại là nhờ có Developer portal, dev có thể tìm hiểu đầy đủ thông tin về API mà họ cần từ input, output, authentication, chức năng…
API thì đi kèm với API Gateway, API Management, các request gọi tới backend microservice đều đi qua nó, mô hình cơ bản như ở dưới
Dev tạo vào chỉnh sửa customize GUI, code backend microservice, add, rồi expose ra API ngon bổ rẻ
Nhưng đối với những hệ thống lớn như VISA, Spotify bài toán xây dựng API Management rất phức tạp hơn nhiều, nhiều vấn đề cần phải tính toán
Khả năng Scability / High Avaibility
Thống kê của
Spotify , có 625 triệu active user,
100 million tracks và 6M+ podcasts
Spotify estimate rate limit tầm 10,000 requests/s cho mỗi clientID, clientID là application được đăng ký vào hệ thống Spotify, con số này không được public nhưng căn cứ vào số lượng user, lượng API requests per day chắc chắn rất lớn
Thực tế, một instance của API Management trong trường hợp này không đủ, đội kĩ sư phải đưa ra giải pháp multiple API management instances trên multiple-regions, nhưng vẫn chỉ có 1 developer portal duy nhất.
Zero Downtime
Backend team thường xuyên cập nhật tính năng API như thay đổi input, output abc, xyz và redeploy lại API lên API management, dẫn tới nguy cơ API bị downtime trong quá trình deployment. Ví dụ 1 API abc đang được hàng ngàn application sử dụng, nếu có bị downtime thì bad impact đến users
Deployment Process
Spotify có khoảng 9K+ developer worldwide, Visa thì tầm 2k+ năm 2023, với số lượng dev đông như vậy code commit, PR hàng ngày không phải nhỏ, nên việc deploy API lên API management cần có 1 API Life Cycle tự động, tích hợp với DevOps, gọi là APIOps
Quy trình này sử dụng CI/CD để automate quy trình deploy API từ Dev tạo PR cho đến lúc publish lên Dev Portal
Quy trình này Dev build code generate the API Spec JSON format, Spec này được deploy vào APIM
API độ vài trăm vài ngàn requests một giờ thì không phải big deal, nhưng đối với hệ thống hàng triệu users, lượng requests tới API có thể tới vài K/seconds, vài triệu/h . API gặp vấn đề performance, low latency, thời gian xử lý request quá lâu gây bad user experiences. Đòi hỏi phải nghiên cứu những giải pháp như caching. Xa hơn là cần xây dựng hệ thống monitoring để monitor khả năng visibility, metrics of API để có giải pháp thiết kế phần back end architect hợp lý
GUI Customization
Một số API Portal như Azure cung cấp sẵn GUI contoso để dev vào customize GUI theo yêu cầu. Quá trình này mất rất nhiều thời gian và phải làm bằng tay, cần có giải pháp GUI as code, cho phép tạo GUI bằng code để có thể import export GUI giữa các Developer Portal khác nhau
Authentication
Dev access vào Portal để management API đương nhiên là cần authentication. Nhiều công ty muốn tích hợp 3rd authentication như Okta, Azure AD, Keycloak
API Policy
Nhà phát triển muốn public 1 số API cho external user nhưng API khác chỉ internal use only, hoặc API chỉ avaiable cho 1 số region nhất định và setting limit rate
Ngoài ra còn nhiều nhân tố cần xem xét như Security, DR, backup recovery
Đón đọc bài tiếp theo để hiểu được họ giải quyết bài toán API management cho hệ thống lớn như thế nào
0 Nhận xét