Cách Facebook Tạo Ra Ngôn Ngữ Mã Nguồn Mở Toàn Cầu Cho Web

Mã nguồn điều hành trang web là một hỗn hợp của nhiều ngôn ngữ lập trình và công nghệ. JavaScript, ngôn ngữ phổ biến nhất trên web, là tiêu chuẩn để viết mã nguồn chạy trên trình duyệt của bạn. Nhưng phía máy chủ có sự đa dạng lớn hơn. Java (không liên quan đến JavaScript) vẫn phổ biến, cũng như PHP, Python và Ruby. Những nhà phát triển ứng dụng di động, trong khi đó, có những ngôn ngữ ưa thích riêng, như Kotlin để viết ứng dụng Android hoặc Swift của Apple cho iOS.
The diversity of languages creates a need for a lingua franca that applications can use to talk to one another, regardless of the language used to create them. For example, the mobile version of a travel app might need to extract a flight schedule or upload changes to your profile on a server running software written in a different programming language. Meanwhile, application developers increasingly outsource parts of their software to cloud services that handle tasks such as sending text messages; the companies offering those services need to make them compatible with multiple programming languages.
Lịch sử, ngôn ngữ chung đó đã là cái gọi là REST, viết tắt của "trạng thái biểu diễn," một cách tiếp cận đơn giản nhưng đôi khi làm cồng kềnh trong việc chia sẻ thông tin giữa ứng dụng và máy chủ. Nhưng một lựa chọn linh hoạt hơn có tên là Ngôn Ngữ Truy Vấn Đồ Thị, được phát triển bởi Facebook, đang lan rộ nhanh chóng và đã chiếm được sự ủng hộ của các công ty từ GitHub đến Audi.
GraphQL mang nhiều sự ảnh hưởng mạnh mẽ từ một ngôn ngữ khác được gọi là Ngôn Ngữ Truy Vấn Facebook, nguồn cảm hứng lại đến từ Ngôn Ngữ Truy Vấn Cấu Trúc, ngôn ngữ phổ biến trong phần mềm cơ sở dữ liệu được hỗ trợ bởi Oracle, Microsoft và các nhà sản xuất cơ sở dữ liệu khác. Điều này khiến cấu trúc và cú pháp của GraphQL trở nên quen thuộc với nhiều nhà phát triển.
Theo dữ liệu được tổng hợp bởi NPM, công cụ quản lý mã nguồn JavaScript, GraphQL đã trải qua sự tăng trưởng nổ lực trong số những nhà phát triển JavaScript trong hai năm qua. Cuộc khảo sát thường niên về tình hình JavaScript do một nhóm nhà phát triển khác thực hiện, với 20,000 nhà phát triển JavaScript tham gia, cho thấy hơn 20% đã sử dụng GraphQL và 62,5% khác muốn học nó, tăng lên từ 5% so với năm 2016.
Adam Neary, một trưởng nhóm công nghệ tại Airbnb, cho biết công ty chọn sử dụng GraphQL do những hạn chế của REST.
Với REST, bạn chỉ có thể tải xuống các bó dữ liệu đã được định nghĩa trước. Nếu bạn chỉ muốn một phần của bó đó, bạn vẫn cần tải xuống toàn bộ bó và loại bỏ những phần bạn không cần. Nếu bạn cần một ít thông tin từ mỗi bó, bạn phải tải xuống tất cả các bó và sau đó tự sắp xếp lại nó.
Ví dụ, giả sử bạn là một nhà phát triển di động tại Airbnb và bạn muốn thêm một tính năng vào ứng dụng iOS hiển thị các tài sản có sẵn trong một mã zip cụ thể. Trong một hệ thống REST, bạn sẽ yêu cầu danh sách tài sản theo tính sẵn có và vị trí, có lẽ với sự giúp đỡ của một nhà phát triển "backend". Nhưng điều đó có thể thu hoạch nhiều thông tin hơn bạn cần, như số phòng ngủ và phòng tắm, mô tả, danh sách tiện nghi, tên chủ nhà và ảnh.
Nếu bạn muốn ứng dụng của mình chỉ hiển thị một phần nhỏ thông tin này, chẳng hạn như tiêu đề và số phòng ngủ và phòng tắm, thì bạn entweder cần lọc ra thông tin bạn không cần, hoặc có được những nhà phát triển backend giúp bạn yêu cầu một bó khác. Nếu bạn muốn thay đổi, chẳng hạn như thêm tên chủ nhà, điều đó sẽ có nghĩa là bạn lại phải yêu cầu những nhà phát triển backend một lần nữa để thực hiện thay đổi. Nhưng việc tải xuống thông tin không cần thiết sẽ làm cho ứng dụng của bạn trở nên chậm hơn và ít phản hồi hơn.
"Lượng thông tin chúng tôi đang tải lên vượt quá mức kinh khủng," Neary nói.
GraphQL giải quyết những vấn đề này bằng cách cho phép những nhà phát triển "front-end" viết mã cho ứng dụng di động hoặc trình duyệt web yêu cầu thông tin cụ thể, mà không cần những nhà phát triển backend phải dự đoán và xác định bó trước. Thay vì gửi một lệnh đến máy chủ nói cơ bản như "cho tôi tất cả các danh sách tài sản hiện có ngay bây giờ ở 90210" và sau đó lọc ra thông tin không cần thiết, bạn có thể gửi một lệnh nói "cho tôi tiêu đề và số phòng ngủ và phòng tắm cho các tài sản có sẵn ở 90210." Nếu sau này bạn muốn thêm tên chủ nhà, bạn có thể làm điều đó mà không làm phiền những kỹ sư backend và mà không làm thay đổi gì đó sẽ làm hỏng các phiên bản cũ của ứng dụng.
GraphQL cũng mang lại những lợi ích khác. Nó cho phép xác định loại dữ liệu bạn mong đợi nhận được trong phản hồi của một yêu cầu cụ thể. Nói cách khác, nếu bạn nghĩ rằng bạn đang yêu cầu một mã zip, bạn có thể đảm bảo rằng bạn đang nhận được số thay vì từ, và nếu bạn muốn một ảnh tài sản, bạn nhận được một tệp hình ảnh thay vì văn bản.
Facebook không bắt đầu với việc tạo ra một ngôn ngữ chung cho các công ty khác sử dụng, giải thích Lee Byron, người đồng tạo ra GraphQL và cựu kỹ sư Facebook. Nguyên gốc của GraphQL trở lại năm 2012, Byron nói, "khi Facebook bắt đầu thực sự chú ý đến di động." Lúc đó, ông nói, những nhà phát triển di động của Facebook đối mặt với vấn đề truy xuất các phần khác nhau của luồng hoạt động của người dùng.
Facebook không công bố GraphQL cho công chúng cho đến năm 2015. "Ban đầu, chúng tôi không chắc rằng các công ty khác sẽ gặp cùng loại vấn đề như chúng tôi," Byron nói. Nhưng khi ông và những nhà phát triển GraphQL khác nói chuyện với đồng nghiệp ở những nơi khác, họ nhận ra rằng người khác đối mặt với những vấn đề giống nhau và đã thử nghiệm những giải pháp tương tự. "Khi chúng tôi giới thiệu GraphQL cho họ, ánh sáng trong mắt họ sáng lên," Byron nói. "Họ nói 'điều này nghe có vẻ tốt hơn cái chúng tôi đang có, chúng tôi muốn sử dụng nó.'"
Như thường xuyên xảy ra với phần mềm mã nguồn mở, một công ty đã nổi lên để cung cấp hỗ trợ thương mại cho GraphQL. Apollo, một sản phẩm tách ra từ một công ty khởi nghiệp có tên là Meteor vào năm 2016, tạo ra một sản phẩm được thiết kế để giúp nhà phát triển xây dựng và duy trì dịch vụ hỗ trợ GraphQL, cùng với các tính năng được thiết kế để tăng cường hiệu suất.
Tháng trước, Facebook thông báo rằng họ sẽ thành lập một tổ chức độc lập dưới sự bảo vệ của Linux Foundation để sở hữu và quản lý GraphQL. Byron ghi công quyết định này đến sự gia tăng số người, ông bao gồm, ngoài Facebook không chỉ sử dụng GraphQL mà còn phát triển nó. Bằng cách thành lập một tổ chức độc lập sở hữu dự án, tất cả các bên trong hệ sinh thái GraphQL có thể đảm bảo rằng họ có thể trò chuyện với nhau.
- This Australian law could impact global privacy
- Tumblr's displaced porn bloggers test their new platforms
- A SpaceX delivery capsule may be contaminating the ISS
- How to use Apple Watch's new heart rate features
- An eye-scanning lie detector is forging a dystopian future
- 👀 Looking for the latest gadgets? Check out our picks, gift guides, and best deals all year round
- 📩 Get even more of our inside scoops with our weekly Backchannel newsletter
