私は、MicroSQLアーキテクチャでGraphQLが最も適している場所を理解しようとしています。GraphQLとマイクロサービスアーキテクチャ
APIゲートウェイとして機能するGraphQLスキーマが1つしかないと、対象となるマイクロサービスへの要求をプロキシしてその応答を強制するという議論がいくつかあります。マイクロサービスは依然としてコミュニケーション思考のためにREST/Thriftプロトコルを使用します。
もう1つのアプローチは、マイクロサービスごとに複数のGraphQLスキーマを用意することです。要求のすべての情報+ GraphQLクエリを使用して、対象のマイクロサービスに要求をルーティングする、より小さいAPIゲートウェイサーバを有する。 APIとして
第一アプローチ1 GraphQLスキーマを持つ
ゲートウェイは、あなたのmicroservice契約入力/出力を変更するたびに、我々はAPI Gatewayのサイドに応じGraphQLスキーマを変更する必要が欠点を持っています。
2アプローチ
microservicesあたり複数GraphQLスキーマを使用している場合GraphQLはスキーマ定義を適用し、そして消費者がmicroserviceから与えられた入力/出力を尊重する必要があるため、方法で意味をなします。
質問
どこGraphQLにmicroserviceアーキテクチャを設計するための右の適合を見つけるのですか?
可能なGraphQL実装でAPIゲートウェイをどのように設計しますか?
+1私は私が代わりに応答、GraphQLと経験を持っていませんでしたその私のポストに免責事項を入れている必要がありますその質問に答えるための研究中の非常に短い読み物に基づいています。私はこの答えがOPの質問をよりよく扱うと思う。 –
@helfer:これは本当に感謝します:)ありがとう。私はこの豪華な答えの上にいくつか質問があります。 - GraphQLをAPIゲートウェイとして使用する必要がありますか? - 私は** Order ** Microserviceを持っているとしましょう。これは、RESTまたはGraphQLエンドポイントのいずれかを公開します。私がそれを終了したら、メインのGraphQLスキーマを更新して、マイクロサービスが公開するデータと全く同じデータを反映させる必要があります。独立した展開が必要なマイクロサービス文化から重複して移動したり離れることはありませんか?マイクロサービスへの変更は、メインのGraphQLスキーマに反映/複製する必要がありますか? – Fabrizio
@Fabrizio GraphQLの素晴らしい点は、RESTサービスが以前に公開したデータを取得する方法がある限り、バックエンドのREST APIが変更されても、GraphQLスキーマは変わりません。より多くのデータを公開する場合、これを処理する標準的な方法は、既存のスキーマに新しいフィールド/タイプを追加することです。 GraphQLを作成したFacebookの人々は、4年間でスキーマを一変させたことはないと私に語った。彼らが行ったすべての変更は相加的でした。つまり、新しいクライアントは新しい機能を使用でき、古いクライアントは引き続き機能します。 – helfer