
So Sánh REST và gRPC: Hai Kiến Trúc API Khác Nhau
February 3, 2025Trong thế giới phát triển phần mềm hiện đại, việc lựa chọn kiến trúc API phù hợp là rất quan trọng. Bài viết trước mình có so sánh REST và GraphQL, bạn có thể tìm đọc lại tại đây: https://blog.ntechdevelopers.com/rest-api-vs-graphql-lua-chon-kien-truc-api-phu-hop-cho-du-an-cua-ban/
Ở bài biết này mình sẽ so sánh hai kiến trúc phổ biến nhất hiện nay là REST (Representational State Transfer) và gRPC (Remote Procedure Call).

1. Định Nghĩa
REST:
– Là một phong cách kiến trúc cung cấp hướng dẫn cho việc thiết kế API web.
– Sử dụng các phương thức HTTP 1.1 như GET, POST, PUT và DELETE để làm việc với tài nguyên trên máy chủ.
– Cung cấp các URL đã được định nghĩa trước mà client phải sử dụng để kết nối với server.
gRPC:
– Là một công nghệ trao đổi dữ liệu mã nguồn mở được phát triển bởi Google, sử dụng giao thức HTTP/2.
– Sử dụng định dạng nhị phân Protocol Buffers (Protobuf) cho việc trao đổi dữ liệu.
– Đặt ra các quy tắc mà nhà phát triển phải tuân theo để phát triển hoặc tiêu thụ API web.
2. Hướng Dẫn vs. Quy Tắc
REST:
– Là một tập hợp các hướng dẫn mà không ép buộc điều gì.
gRPC:
– Đặt ra các quy tắc thông qua việc định nghĩa tệp .proto mà cả client và server phải tuân theo cho việc trao đổi dữ liệu.
3. Giao Thức HTTP Cơ Bản
REST:
– Cung cấp mô hình giao tiếp yêu cầu-phản hồi dựa trên giao thức HTTP 1.1.
– Khi nhiều yêu cầu đến server, nó phải xử lý từng yêu cầu một.
gRPC:
– Theo mô hình client-phản hồi cho việc thiết kế API dựa trên HTTP/2.
– Cho phép giao tiếp streaming và phục vụ nhiều yêu cầu đồng thời.
4. Định Dạng Trao Đổi Dữ Liệu
REST:
– Thường sử dụng định dạng JSON và XML cho việc truyền dữ liệu.
gRPC:
– Dựa vào Protobuf cho việc trao đổi dữ liệu qua giao thức HTTP/2.
5. Tính Năng Phân Tích và Kiểu Dữ Liệu
REST:
– Sử dụng JSON hoặc XML, yêu cầu phải phân tích và chuyển đổi sang ngôn ngữ lập trình mục tiêu, có thể làm tăng thời gian phản hồi và khả năng xảy ra lỗi.
gRPC:
– Cung cấp các thông điệp kiểu mạnh được chuyển đổi tự động bằng định dạng Protobuf sang ngôn ngữ lập trình đã chọn.
6. Độ Trễ
REST:
– Sử dụng HTTP 1.1 yêu cầu một kết nối TCP cho mỗi yêu cầu, có thể gặp vấn đề về độ trễ.
gRPC:
– Dựa vào giao thức HTTP/2, cho phép nhiều client gửi nhiều yêu cầu đồng thời mà không cần thiết lập kết nối TCP mới cho mỗi yêu cầu.
7. Hỗ Trợ Trình Duyệt
REST:
– Có hỗ trợ trình duyệt phổ quát với HTTP 1.1.
gRPC:
– Hỗ trợ trình duyệt hạn chế, thường cần gRPC-web và một lớp proxy để chuyển đổi giữa HTTP 1.1 và HTTP/2.
8. Tính Năng Tạo Mã
REST:
– Không cung cấp tính năng tạo mã tích hợp, nhưng có thể sử dụng các công cụ bên thứ ba như Swagger hoặc Postman.
gRPC:
– Có tính năng tạo mã tích hợp thông qua trình biên dịch giao thức, tương thích với nhiều ngôn ngữ lập trình.
Tóm lại, REST và gRPC đều có những ưu điểm và nhược điểm riêng. REST rất hữu ích trong việc tích hợp các microservices và ứng dụng bên thứ ba với hệ thống cốt lõi. Trong khi đó, gRPC có thể được áp dụng trong các hệ thống IoT cần truyền tải tin nhắn nhẹ, ứng dụng di động không có hỗ trợ trình duyệt, và các ứng dụng cần các luồng đa phương tiện. Việc lựa chọn giữa hai kiến trúc này phụ thuộc vào yêu cầu cụ thể của dự án và môi trường phát triển.