Mock Dữ Liệu GraphQL Bằng LLM: Airbnb và Expedia Đi Trước, Chuẩn Spec Vẫn Tụt Lại Phía Sau

14 tháng 8, 2026·5 phút đọc

Expedia Group vừa phát hành mã nguồn mở mockql-rs, một công cụ CLI viết bằng Rust giúp tự động điền dữ liệu do LLM tạo vào các trường GraphQL được chú thích @mock. Động thái này nối tiếp giải pháp @generateMock của Airbnb ra mắt hồi tháng 4 và một RFC của GraphQL Foundation mở từ tháng 2. Cả ba đều giải quyết cùng một bài toán nhưng với kiến trúc khác nhau, trong khi hai giải pháp dùng chung tên directive nhưng lại có ngữ nghĩa không tương thích.

Expedia Group vừa chính thức phát hành mã nguồn mở mockql-rs, một công cụ CLI viết bằng Rust giúp tự động điền dữ liệu do mô hình ngôn ngữ lớn (LLM) tạo ra vào các trường GraphQL được đánh dấu bằng chỉ thị @mock ngay tại thời điểm yêu cầu (request time). Đây là bước tiến mới nhất trong nỗ lực giải quyết bài toán tạo mock data thông minh cho các API GraphQL, sau khi Airbnb giới thiệu @generateMock vào tháng 4 và GraphQL Foundation mở một RFC từ tháng 2 năm nay.

Bài toán chung: Mock data truyền thống đã lỗi thời?

Trong phát triển phần mềm hiện đại, việc tạo dữ liệu giả (mock data) cho các API luôn là một khâu tốn thời gian và dễ sai sót. Các phương pháp truyền thống thường dựa trên dữ liệu tĩnh, thư viện sinh dữ liệu ngẫu nhiên như Faker, hoặc phải viết tay từng resolver. Điều này dẫn đến tình trạng mock data không sát với thực tế, không cập nhật theo schema và gây khó khăn khi kiểm thử frontend hoặc phát triển song song giữa các nhóm.

LLM đã mở ra hướng giải quyết mới: thay vì dữ liệu tĩnh hoặc ngẫu nhiên, hãy để mô hình ngôn ngữ hiểu schema và ngữ cảnh để sinh ra dữ liệu hợp lý, gần gũi với dữ liệu production.

Ba kiến trúc, một mục tiêu

Cả ba giải pháp đều nhắm đến việc dùng LLM để tạo mock data, nhưng cách triển khai có sự khác biệt rõ rệt:

  • @generateMock của Airbnb: Được giới thiệu vào tháng 4, giải pháp này hoạt động ở tầng resolver. Khi một field được đánh dấu @generateMock, server sẽ gọi LLM để tạo dữ liệu thay vì trả về null hoặc dữ liệu cứng.
  • mockql-rs của Expedia: Đây là một Rust CLI hoạt động ở tầng proxy/CLI. Thay vì nhúng logic vào server GraphQL, công cụ này đứng giữa client và server, chặn request và tự động "lấp đầy" các field được đánh dấu @mock bằng dữ liệu do LLM sinh ra. Ưu điểm là không cần sửa đổi code server.
  • RFC của GraphQL Foundation: Mở từ tháng 2, đây là nỗ lực chuẩn hóa cú pháp và ngữ nghĩa cho việc đánh dấu mock fields. Tuy nhiên, RFC vẫn đang trong quá trình thảo luận và chưa có kết luận cuối cùng.

Vấn đề tên gọi trùng lặp, ngữ nghĩa khác nhau

Một điểm đáng chú ý là Airbnb và Expedia sử dụng chung tên directive @mock (Airbnb dùng @generateMock nhưng về mặt khái niệm cũng tương tự), tuy nhiên ngữ nghĩa lại hoàn toàn khác nhau:

Điều này tạo ra nguy cơ xung đột khi nhà phát triển sử dụng cả hai công cụ trong cùng một dự án hoặc khi cộng đồng cố gắng áp dụng một chuẩn chung. Nếu không có sự thống nhất sớm từ GraphQL Foundation, chúng ta có thể đối mặt với tình trạng "hai chuẩn, một cái tên" giống như đã từng xảy ra với nhiều công nghệ khác.

Việc thiếu một spec thống nhất đặt ra câu hỏi lớn:

  • Nhà phát triển nên chọn giải pháp nào khi có nhiều lựa chọn chưa tương thích?
  • Liệu GraphQL Foundation có thể thúc đẩy một chuẩn chung trước khi quá nhiều công cụ khác nhau được xây dựng?

Ý nghĩa đối với cộng đồng phát triển tại Việt Nam

Với sự phát triển mạnh mẽ của cộng đồng lập trình Việt Nam, đặc biệt trong lĩnh vực web và mobile, việc mock data thông minh bằng LLM có thể mang lại giá trị thiết thực:

  • Tăng tốc phát triển frontend: Các team frontend không cần chờ backend hoàn thiện API, vẫn có thể dùng mock data gần giống thật để phát triển giao diện.
  • Giảm chi phí bảo trì: Dữ liệu mock tự động cập nhật theo schema, không cần viết tay nhiều bộ dữ liệu khác nhau.
  • Phù hợp với xu hướng API-first: Nhiều công ty Việt Nam đang chuyển sang mô hình phát triển API-first, và công cụ này là một trợ thủ đắc lực.

Tuy nhiên, các nhóm phát triển cần cân nhắc:

  • Chi phí LLM: Gọi LLM cho mỗi request có thể tốn kém nếu không có cơ chế cache hoặc giới hạn tần suất.
  • Bảo mật: Dữ liệu mock có thể vô tình chứa thông tin nhạy cảm nếu LLM học từ dữ liệu huấn luyện.
  • Tính ổn định: Chưa có spec chung đồng nghĩa với việc khả năng thay đổi là rất lớn.

Tương lai: Spec sẽ bắt kịp hay bị bỏ lại?

Việc GraphQL Foundation mở RFC là tín hiệu tích cực, nhưng tốc độ phát triển của cộng đồng đang nhanh hơn nhiều so với quá trình chuẩn hóa. Thực tế cho thấy:

  • Các công ty lớn như Airbnb và Expedia có nhu cầu thực tế và đã đi trước.
  • RFC cần thời gian để thảo luận, thử nghiệm và đạt đồng thuận.
  • Trong thời gian chờ đợi, nhiều công cụ khác có thể xuất hiện.

Như đã thấy với nhiều công nghệ khác (ví dụ: REST, gRPC), thị trường thường tự tìm ra giải pháp thống nhất theo thời gian, dù có thể không phải là giải pháp "đẹp nhất" về mặt lý thuyết. Câu hỏi đặt ra là liệu GraphQL Foundation có đủ nhanh để trở thành người dẫn dắt, hay sẽ tiếp tục bị các công ty lớn "tự làm tự chịu" như trường hợp này?

Tổng kết: Expedia và Airbnb đang cho thấy một xu hướng rõ ràng — tương lai của mock data có thể sẽ được "viết" bằng LLM. Nhưng để điều này trở thành một chuẩn chung cho cộng đồng, cần sớm có sự đồng thuận về spec, tránh tình trạng mỗi nơi một kiểu gây khó khăn cho việc tích hợp và học hỏi lẫn nhau.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗