GraphQL-アーキテクチャ
GraphQLは、GraphQLサーバーの動作を説明する仕様です。これは、サポートされているプロトコル、サーバーが受け入れることができるデータの形式、サーバーから返される応答の形式などのように、要求と応答を処理する方法に関する一連のガイドラインです。クライアントからGraphQLへの要求サーバーはクエリと呼ばれます。GraphQLのもう1つの重要な概念は、トランスポート層にとらわれないことです。TCP、WebSocket、その他のトランスポート層プロトコルなど、利用可能なネットワークプロトコルで使用できます。また、データベースに対して中立であるため、リレーショナルデータベースまたはNoSQLデータベースで使用できます。
GraphQL Serverは、以下の3つの方法のいずれかを使用してデプロイできます-
- データベースが接続されたGraphQLサーバー
- 既存のシステムを統合するGraphQLサーバー
- ハイブリッドアプローチ
接続されたデータベースを備えたGraphQLサーバー
このアーキテクチャには、統合データベースを備えたGraphQLサーバーがあり、多くの場合、新しいプロジェクトで使用できます。クエリを受信すると、サーバーはリクエストペイロードを読み取り、データベースからデータをフェッチします。これは、クエリの解決と呼ばれます。クライアントに返される応答は、公式のGraphQL仕様で指定された形式に準拠しています。
上の図では、GraphQLサーバーとデータベースが単一のノードに統合されています。クライアント(デスクトップ/モバイル)は、HTTPを介してGraphQLサーバーと通信します。サーバーはリクエストを処理し、データベースからデータをフェッチしてクライアントに返します。
既存のシステムを統合するGraphQLサーバー
このアプローチは、レガシーインフラストラクチャとさまざまなAPIを使用している企業に役立ちます。GraphQLを使用して、マイクロサービス、レガシーインフラストラクチャ、およびサードパーティのAPIを既存のシステムに統合できます。
上の図では、GraphQLAPIはクライアントと既存のシステム間のインターフェースとして機能します。クライアントアプリケーションはGraphQLサーバーと通信し、GraphQLサーバーはクエリを解決します。
ハイブリッドアプローチ
最後に、上記の2つのアプローチを組み合わせて、GraphQLサーバーを構築できます。このアーキテクチャでは、GraphQLサーバーは受信したすべてのリクエストを解決します。接続されたデータベースまたは統合APIからデータを取得します。これは下の図に表されています-