API Gateway Là Gì? Giải Thích Cho Người Mới Học DevOps

Có một bạn mới học lập trình từng nhắn hỏi đội ngũ của chúng tôi. Bạn đọc tài liệu về kiến trúc microservices và gặp cụm “API Gateway” được nhắc đi nhắc lại. Đọc định nghĩa tiếng Anh xong, bạn vẫn không hình dung nổi nó làm việc gì. Cuối cùng bạn hỏi thẳng: “Nó có phải là cổng vào của tòa nhà không anh?” Câu hỏi ấy khá gần với bản chất của khái niệm này. Vì vậy hôm nay chúng tôi muốn cùng bạn đi chậm và rõ từng bước, để bạn hiểu API Gateway là gì mà không còn thấy nó xa lạ.

Vì sao thuật ngữ này khiến người mới học lập trình bối rối

API Gateway là thuật ngữ DevOps rất phổ biến, nhưng nhiều người mới vẫn chưa nắm rõ vai trò thật sự của nó. Lý do nằm ở cách định nghĩa. Tài liệu kỹ thuật thường viết kiểu “một lớp trung gian xử lý và định tuyến các yêu cầu API”. Đọc xong, bạn vẫn chưa biết lớp trung gian ấy đứng ở đâu, và định tuyến cụ thể là làm gì.

Theo kinh nghiệm của chúng tôi, vấn đề nằm ở chỗ thiếu ví dụ đời thường. Sách và tài liệu hay dùng sơ đồ hộp với mũi tên. Người đọc nhìn vào thấy đủ thứ nhưng chẳng có gì để liên tưởng. Kết quả là nhiều bạn học thuộc định nghĩa mà không thật sự hiểu bản chất. Do đó, chúng tôi chọn cách giải thích bằng một hình ảnh quen thuộc: quầy lễ tân.

API Gateway hoạt động như thế nào trong hệ thống

Hãy tưởng tượng một tòa nhà văn phòng lớn. Bên trong có kế toán, nhân sự, kỹ thuật và nhiều phòng ban khác. Nếu khách đến liên hệ mà phải tự đi tìm đúng phòng, tự gõ cửa từng nơi thì rất mất thời gian. Vì vậy tòa nhà nào cũng có quầy lễ tân ở sảnh chính. Khách chỉ cần nói mình cần gặp ai, lễ tân sẽ hướng dẫn hoặc nối máy đúng chỗ.

API Gateway đóng đúng vai trò của quầy lễ tân đó. Trong phần mềm hiện đại, thay vì một chương trình khổng lồ làm mọi việc, người ta thường chia nhỏ thành nhiều dịch vụ riêng. Đây chính là microservices. Một dịch vụ lo đơn hàng, một dịch vụ lo thanh toán, một dịch vụ khác lo gửi email thông báo. Mỗi bên làm một việc và làm cho tốt.

Khi ứng dụng trên điện thoại cần dùng đến các dịch vụ ấy, nó không gọi trực tiếp từng nơi. Nó chỉ gọi đến API Gateway. Gateway đọc yêu cầu, xác định nên chuyển sang dịch vụ nào rồi định tuyến đúng chỗ. Phía ứng dụng không cần biết chính xác từng dịch vụ phía sau nằm ở địa chỉ nào.

Ngoài chuyện định tuyến, Gateway còn gom các việc dùng chung về một mối. Chẳng hạn, nó kiểm tra xem người gọi đã đăng nhập và có quyền truy cập hay chưa trước khi chuyển yêu cầu đi tiếp. Nó cũng có thể giới hạn số lần gọi trong một khoảng thời gian. Nhờ vậy, một người dùng vô tình hay cố ý gửi quá nhiều yêu cầu sẽ không làm quá tải các dịch vụ phía sau.

Lợi ích khi dùng API Gateway

Lợi ích đầu tiên là quản lý nhiều dịch vụ gọn gàng hơn. Khi hệ thống có hàng chục microservices, nếu không có Gateway thì mỗi ứng dụng client phải tự quản lý kết nối tới từng dịch vụ riêng lẻ. Càng mở rộng, việc này càng rối và khó bảo trì. Có Gateway, đội phát triển chỉ cần cập nhật cấu hình định tuyến ở một nơi. Khi thêm hay thay đổi dịch vụ phía sau, ứng dụng client gần như không phải sửa gì, vì nó vẫn chỉ gọi một địa chỉ Gateway như trước.

Lợi ích thứ hai là tăng cường bảo mật. Thay vì để từng dịch vụ tự lo việc xác thực, mọi thứ được xử lý tập trung ngay tại cổng vào. Cách này giống như việc tòa nhà bảo vệ cổng chính thật kỹ, thay vì đặt bảo vệ riêng ở cửa từng phòng ban. Cách làm này đơn giản hơn để kiểm soát và ít bỏ sót hơn.

Lợi ích thứ ba là dễ theo dõi hoạt động của hệ thống. Vì mọi yêu cầu đều đi qua một điểm, bạn có thể ghi nhận log và số liệu tại đó. Khi có sự cố, việc tìm ra yêu cầu nào bị lỗi và lỗi nằm ở đâu sẽ nhanh hơn nhiều.

Nếu bạn muốn có bức tranh rộng hơn về các thuật ngữ đi kèm, hãy đọc thêm DevOps là gì và vì sao người mới học lập trình nên biết sớm. Bài đó giúp bạn đặt API Gateway đúng vị trí trong quy trình làm phần mềm. Với những ai đang học về công nghệ, hiểu cách dữ liệu đi qua Gateway cũng giúp ích cho công việc phía giao diện. Bạn có thể tham khảo thêm Front End là gì và những kỹ năng cần có để thấy rõ hơn cách hai mảng này phối hợp với nhau.

Nếu muốn một chỗ tập trung để tra cứu, bạn có thể xem thêm tổng hợp các ngôn ngữ lập trình website, để biết thêm về nền tảng phía server mà Gateway thường đứng trước.

Tham khảo thêm tài liệu chính thức về mẫu thiết kế này tại microservices.io nếu bạn muốn đọc phần định nghĩa gốc bằng tiếng Anh sau khi đã nắm ý chính.

Một vài công cụ API Gateway phổ biến

Trên thực tế, bạn không cần tự viết API Gateway từ đầu. Có nhiều công cụ sẵn có. Kong là lựa chọn mã nguồn mở khá phổ biến. Amazon API Gateway phù hợp nếu bạn đã dùng hạ tầng của AWS. Nginx cũng thường được dùng làm cổng vào nhờ tốc độ và sự ổn định. Mỗi công cụ có cách cấu hình và thế mạnh riêng, nên bạn nên thử một bản đơn giản trước khi quyết định chọn.

Kết luận

Hiểu rõ API Gateway giúp người mới học lập trình nắm được một kiến thức nền tảng của DevOps hiện đại. Lần sau gặp thuật ngữ này trong tài liệu, bạn hãy nhớ đến hình ảnh quầy lễ tân ở sảnh tòa nhà. Hình dung như vậy dễ hơn nhiều so với việc chỉ học thuộc định nghĩa khô khan. Khi đã quen với ý tưởng này, bạn có thể tiếp tục tìm hiểu sâu hơn về cách các dịch vụ được tổ chức và vận hành trong thực tế.