Top 10 công cụ trong hệ sinh thái GraphQL (Tập 2)

Ở tập trước, mình đã giới thiệu đến các bạn một vài công cụ khá là phổ biến trong hệ sinh thái GraphQL. Để có cái nhìn trọn vẹn nhất của cả 2 tập blog, các bạn hãy ủng hộ mình qua tập đầu tiên của bài blog này nhé.

Top 10 công cụ trong hệ sinh thái GraphQL (Tập 1)
Trong bài viết hôm nay, mình sẽ đem đến cho các bạn 10 công cụ rất phổ biến trong hệ sinh thái của GraphQL mà các bạn nên biết đến để cải thiện hiệu suất cũng như tính linh hoạt khi làm việc với công nghệ này nhé.

Còn bây giờ thì, hãy cũng mình tiếp tục với 5 công cụ hữu ích còn lại trong top 10 công cụ trong hệ sinh thái GraphQL nhé.


6. GraphQL Code Generator (> 6.8k 🌟)

Github: https://github.com/dotansimha/graphql-code-generator

GraphQL Code Generator (hay GraphQL Codegen) là một trong các công cụ rất phổ biến trong khâu kiến trúc Graph API song song với các tính năng của Typescript. Lợi thế khi áp dụng Typescript vào kiến trúc GraphQL là hệ thống Type chặt chẽ cùng với tính minh bạch khi khai báo các GraphQL Resolver.

Tuy nhiên, trong một GraphQL Schema, bao gồm rất rất nhiều các kiểu dữ liệu cũng như phương thức khác nhau mà nhà phát triển không thể nào bao quát được hết. Lúc này, GraphQL Codegen sẽ giải quyết vấn đề này. Chỉ cần thông qua hai file GraphQL Schema và GraphQL Operation, chỉ với một hàm duy nhất được gọi, code sẽ được khởi tạo ngay tức khắc.

GraphQL Code Generator | GraphQL Code Generator
Các bạn có thể truy cập link demo này để hiểu cách GraphQL Codegen hoạt động

7. GraphQL SOFA (> 700 🌟)

Github: https://github.com/Urigo/SOFA

Khi nghe đến GraphQL SOFA, bạn sẽ nghĩ đến thứ gì đầu tiên? Nếu không nói GraphQL thì sẽ là chiếc ghế Sofa êm ái. Trong ngữ cảnh chiếc ghế sofa, thường có một cụm từ đi kèm là "Rest on sofa". Đúng vậy, Rest ở đây là RESTful API.

Mục đích của GraphQL SOFA được tạo ra nhằm chuyển đổi các Graph API thành REST API. Mặc dù GraphQL khá là phổ biến và trong các dự án cá nhân, việc sử dụng GraphQL SOFA không đem lại nhiều hiệu quả. Tuy nhiên, với các dự án yêu cầu nhiều nhân lực thì không phải tất cả mọi người đều thành thục với Graph API. Vậy nên, việc chuyển đổi Graph API sang RESTful API sẽ tiết kiệm được thời gian thích nghi với hệ sinh thái GraphQL của các thành viên khác trong team.

Chuyển đổi từ Graph API sang RESTful API

Mặc dù lý thuyết là như vậy nhưng trong thực tế, khi chuyển đổi Graph API sang RESTful API, có rất nhiều vấn đề xảy ra. Thậm chí nó đi ngược lại với lợi thế của GraphQL là một endpoint duy nhất.

8. GraphQL Tools (> 4.1k 🌟)

Github: https://github.com/ardatan/graphql-tools

GraphQL Tools có thể được gọi là một trong các thư viện thiết yếu nhất khi làm việc với GraphQL. Vấn đề chính khi thao tác kiến trúc GraphQL Server đó là khai báo các schema, kiểu dữ liệu và các resolver. GraphQL Tools ra đời để giải quyết các vấn đề ấy. Không cần biết bạn có nhiều schema đến đâu, GraphQL Tools sẽ có các API hữu ích có thể khâu các schema ấy lại thành một schema duy nhất.

Sử dụng GraphQL Tools với Express GraphQL

Sự đa dụng của GraphQL Tools đó là thư viện này có thể tương thích với hầu hết các thư viện máy chủ GraphQL như express-graphql. Khi bạn làm việt với TypeGraphQL, Apollo Server hay GraphQL Yoga, GraphQL Tools sẽ đóng vai trò là một "sidekick" không thể thiếu như Batman với Robin vậy.

9. GraphQL Request (> 3.5k 🌟)

Github: https://github.com/prisma-labs/graphql-request

Hầu hết ở các công cụ mà mình nêu trên đa phần được sử dụng trong khâu kiến trúc hệ thống. Vậy nếu bạn muốn chạy thử các Graph API mà mình đã phát triển thì phải làm như thế nào? GraphQL Request sẽ giúp bạn làm điều đó.

Truy vấn Graph API chỉ với một dòng code

Giống như tên gọi của công cụ này, GraphQL Request sẽ cung cấp API cho nhà phát triển để gửi yêu cầu đến máy chủ GraphQL từ phía máy chủ thay vì là máy khách như thông thường. Bạn có thể hiểu GraphQL Request giống với thư viện axios trong Javascript hay dio trong Dart. Thực chất, bạn vẫn có thể sử dụng trực tiếp axios để gọi đến máy chủ GraphQL, nhưng mình không khuyến khích điều này vì sự phức tạp trong cú pháp.

Sử dụng GraphQL Client để gọi request

Ngoài ra, GraphQL Request cũng cung cấp GraphQL Client ngay trên backend để các bạn có thể thực hiện unit testing hoặc integration testing một cách tối ưu nhất.

10. GraphQL Subscription (> 1.4k 🌟)

Github: https://github.com/apollographql/graphql-subscriptions

Nhắc đến GraphQL thì không thể không nhắc đến một tính năng cực kì nổi bật của công nghệ này là Subscription. Khi Facebook công bố ra mắt công nghệ GraphQL, bên cạnh các đặc điểm như một endpoint duy nhất hay dữ liệu đầu ra linh hoạt thì truyền tải dữ liệu trong thời gian thực bằng Subscription cũng nhận được rất nhiều sự chú ý.

GraphQL Subscription hoạt động theo cơ chế Pub/Sub và thư viện graphql-subscription từ apollographql giải quyết vấn đề kiến trúc hệ thống Pub/Sub nhằm cho mục địch sử dụng với các công nghệ khác như redis, kafka, rabbitmq hay mqtt trong việc gửi/nhận dữ liệu.

Cơ chế Publish sự kiện đến Topic được đăng ký của GraphQL Subscription

Và đó là 10 công cụ mà mình đánh giá là rất hữu ích khi các bạn làm việc với GraphQL. Tuy nhiên, vì đây chỉ là đánh giá khách quan và theo phiên diện cá nhân nên mình không thể bao quát hết tất cả các công cụ được. Vậy nên, nếu mình còn thiếu sót công cụ nào thiết yếu khi kiến trúc Graph API thì các bạn hay đóng góp để mình học hỏi thêm nhé. 😙

Góc Của Chung

Góc Của Chung