GraphQLは、クライアントが必要なデータを正確に要求できるようにすることで、オーバーフェッチングとアンダーフェッチングを解消します。しかし、GraphQL APIは、N+1クエリ、セキュリティ問題、複雑さを避けるために慎重な設計が必要です。私たちは、柔軟で高性能、そして型安全という約束を果たすGraphQL APIを構築します。
スキーマファーストまたはコードファーストのアプローチには、Apollo Server、GraphQL Yoga、またはPothosを使用します。クエリのバッチ処理にはDataLoader、認可にはGraphQL Shield、型安全なクライアントにはGraphQL Codegenを使用します。監視にはApollo StudioまたはCustom Tracingを活用します。
クライアントが柔軟なクエリを必要とする複雑なデータ要件を持つ製品(ダッシュボード、最小限のペイロードを必要とするモバイルアプリ、多様なクライアントタイプにサービスを提供するプラットフォーム)に最適です。また、フェデレーションを介して統一されたAPIレイヤーを必要とするマイクロサービスアーキテクチャにも理想的です。
ドメイン型をモデル化し、クエリ/ミューテーションを定義し、サブスクリプション要件を計画します。
DataLoaderによるバッチ処理でリゾルバーを構築し、認可を実装し、エラーハンドリングを設定します。
GraphQL Codegenを設定し、クライアントクエリを構築し、キャッシュ戦略を実装します。
クエリ深度制限、コスト分析、永続クエリ、パフォーマンス監視を追加します。
スキーマドキュメントを生成し、開発者ガイドを作成し、監視とともにデプロイします。
GraphQLは、あなたのフロントエンドが柔軟なデータフェッチングを必要とする場合、異なるデータニーズを持つ複数のクライアントタイプ(web、mobile、IoT)がある場合、あるいはオーバーフェッチングをなくしたい場合に理想的です。MicrocosmWorksは、GraphQLがあなたのユースケースに適合するかどうかを評価するのに役立ちます。
MicrocosmWorksでのGraphQL API開発は、スキーマの複雑さ、リゾルバーロジック、リアルタイムサブスクリプションの要件、およびフェデレーションの必要性に応じて、1時間あたり$20~$50の範囲です。
はい、弊社はApollo FederationまたはSchema Stitchingを使用してフェデレーテッドGraphQLアーキテクチャを構築します。これにより、各マイクロサービスがグラフのそれぞれの部分を所有しつつ、クライアントには統合されたAPIを提示できます。
データベースクエリのバッチ処理とキャッシュのためにDataLoaderを実装し、高コストなクエリを拒否するためにクエリ複雑度分析を使用し、深度制限を設定し、柔軟なデータ取得を維持しつつ悪用を防ぐために永続クエリを構成します。
はい、弊社は graphql-ws のようなライブラリを用いた WebSockets を使用して GraphQL subscriptions を実装しています。これにより、適切な認証と接続管理の下で、ライブ通知、チャット、共同編集、ダッシュボードの更新といった real-time 機能に対応しています。