最近のInfoQポッドキャストで、Apolloの創設者兼CTOであるMatt Debergalis氏が、GraphQLとApollo Data Graphプラットフォームに対するモチベーションについて議論した。議論した主要なトピックには、エンタープライズコンテキストでのデータモデリング、およびGraphQLを段階的に採用することがフロントエンドシステムとバックエンドシステムの進化を切り離すのにどのように役立つかが含まれていた。
Debergalis氏は、クライアント側に適したデータモデルの定義、保守可能で構成可能なバックエンドAPIの構築、クラウドからクライアントアプリケーションへのデータの移動という課題が、最新のソフトウェア開発を困難かつ時間のかかるものにしていると主張した。
[...]アプリで新しい画面を作成するたびに、その画面のニーズを満たすためにバックエンドで新しいAPIを作成する必要があります。そして、それはすべて定型的であり、すべて配管であり、特に再利用可能なものはありません。そうすると、バックエンドとアプリケーションが密接に絡み合うことになります。
GraphQLは、API用のオープンソースのデータクエリおよび操作言語であり、既存データでクエリを実現するためのランタイムである。GraphQLを使用すると、アプリケーション開発者は必要なデータを記述し、そのデータをユーザ向けに構築している画面に取り込むことができる。
Apollo Data Graphプラットフォームは、コアビジネスAPIをクライアント側の消費パターンから切り離す方法を提供するミドルウェアレイヤである。Apolloは、トランザクション管理などの横断的な関心事を実装できる。これにより、クライアント側アプリケーション(複数の可能性がある)でこれを実装する必要性が軽減される。
Apolloは、GraphQLの業界標準の実装です。これには、JavaScript、Android、iOSのすべての主要なプラットフォーム用のGraphQLクライアントが含まれています。Apolloには、TypeScriptに組み込まれているGraphQLサーバが含まれています。そして、一連のサービス、GraphQLスキーマのレジストリ、GraphQLレイヤをチームとして共同作業できるツールとワークフローが含まれています。
その他の関連するプラットフォームとフレームワークとしてHasuraとRelayがある。Hasuraは「データベースとマイクロサービスに接続し、本番環境に対応したGraphQLバックエンドを自動生成するオープンソースエンジン」である。Relayは、Facebookエンジニアリングチームによって構築されたReact用のGraphQLクライアントである。
Apolloを使用すると、「データグラフ」を作成できる。これは、クライアント側のアプリケーション内で使用するために組織のデータから構成される一連のグラフである。データグラフは特に大企業で価値がある。その理由は、新しいビジネス要件を満たすために既存のAPIを備えた多くの(お金を稼ぐ)システムを組み合わせる必要があるためである。
Apolloで行っていることは、データグラフと呼ばれるものを作成できるようにすることです。そして、データグラフは特に大企業で価値があります。その理由はその価値が、既存のAPIを備えた既存のシステムを持つ組織にあるためです。そのAPIは、RESTなのかSOAPなのか、あるいは、GRPCまたはThriftといった、より最新の設定であるかによりません。
Debergalis氏は、GraphQLを段階的に採用できることを提案した。彼はエンジニアに対して、グラフへの移行に必要な、最初のアプリケーション、最初の画面、最初のコンポーネントのニーズに合致する、可能な限り単純なグラフを作成することを推奨した。そして、そのグラフを、より広いコンテキストをカバーするより豊富なモデルに進化させ、必要に応じてグラフを分解し、疎結合にする必要がある。