AWS AppSync Merged API でマイクロサービスの GraphQL を統合 - チーム分散開発の実践

AppSync Merged API による複数チームの GraphQL スキーマ統合、ソース API の独立デプロイ、認証戦略の設計を解説します。

Merged API の必要性

マイクロサービスアーキテクチャで複数チームが GraphQL API を開発する場合、フロントエンドは複数のエンドポイントにリクエストを送る必要があり、クライアント側の複雑さが増します。Merged API はこの問題を解決し、複数のソース API を単一のエンドポイントに統合します。ユーザーチームの User API、注文チームの Order API、商品チームの Product API をそれぞれ独立して開発・デプロイしつつ、フロントエンドからは 1 つの GraphQL エンドポイントでアクセスできます。API Gateway のような REST ベースの API 集約と異なり、GraphQL のスキーマレベルで統合されるため、クロスサービスのクエリも単一のリクエストで実行できます。

この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

ソース API の設計と独立デプロイ

各チームはソース API として独立した AppSync API を開発します。スキーマ、リゾルバー、データソースはソース API ごとに管理され、チームは自分の API を自由にデプロイ・更新できます。ソース API の更新は自動的に Merged API に反映されます。スキーマの競合 (同名の Query フィールド、同名の型定義) はマージ時に検出され、エラーとして報告されます。競合を避けるため、チーム間でスキーマの命名規則を事前に合意し、名前空間的なプレフィックス (user_、order_) を使用するか、共通の型定義を共有スキーマとして管理する設計が推奨されます。

認証戦略

Merged API レベルでデフォルトの認証方式 (Cognito ユーザープール、IAM、API キー、Lambda オーソライザー) を設定します。ソース API ごとに追加の認証方式を設定でき、特定のフィールドに対してソース API の認証を適用できます。例えば、Merged API のデフォルト認証を Cognito に設定しつつ、管理者向けの Mutation にはソース API レベルで IAM 認証を追加する構成が可能です。@aws_auth ディレクティブでフィールドレベルの認証を制御し、特定のフィールドを特定の Cognito グループのみに公開できます。

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。

まとめ

AppSync Merged API は複数チームの GraphQL API を単一エンドポイントに統合するサービスです。各チームの独立したデプロイを維持しつつ、フロントエンドにはシンプルな単一エンドポイントを提供します。マイクロサービスアーキテクチャで GraphQL を採用する場合の標準的なパターンです。

AWS の優位点

  • 複数チームが独立して開発した GraphQL API (ソース API) を単一のエンドポイント (Merged API) に統合できる
  • 各ソース API は独立してデプロイ・更新でき、他チームの API に影響を与えずにスキーマを変更できる
  • スキーマの競合 (同名の型やフィールド) を自動検出し、マージ時にエラーとして報告する
  • Merged API レベルで統一的な認証 (Cognito、IAM、API キー) を適用しつつ、ソース API ごとに追加の認証を設定できる
  • CloudFormation と CDK でソース API の登録と Merged API の構成をコード管理できる

同じテーマの記事

AWS Amplify で始めるフルスタック Web アプリ開発 - Git 連携デプロイとバックエンド構築 Amplify Hosting による Git 連携の自動デプロイ、Amplify Backend によるバックエンドリソースの構築を解説します。 AWS AppSync で構築するリアルタイム GraphQL API - サブスクリプションとリゾルバー設計 AppSync による GraphQL API の構築、リアルタイムサブスクリプション、DynamoDB・Lambda リゾルバーの設計パターンを解説します。 フルスタック開発の加速 - Amplify によるクラウドネイティブアプリケーション構築 AWS Amplify を活用したフルスタック開発の手法を解説し、フロントエンドホスティング、バックエンド構築、認証・ストレージ統合による迅速なアプリケーション開発を紹介します。 位置情報とマッピング - Amazon Location Service と Amplify で実現する地理空間アプリケーション Amazon Location Service と AWS Amplify を活用した位置情報・マッピングアプリケーションの構築方法を解説します。 GraphQL リアルタイム API - AWS AppSync で構築するデータ駆動アプリケーション AWS AppSync を活用した GraphQL API の構築方法を解説します。 ライブ配信基盤 - Amazon IVS で低遅延ライブストリーミングを構築する Amazon Interactive Video Service (IVS) を使った低遅延ライブ配信の構築を解説。マネージドインフラ、チャット統合、リアルタイムステージ機能、MediaLive との使い分けを紹介します。 Amazon Location Service で構築する位置情報アプリケーション - 地図・ジオコーディング・トラッキング Amazon Location Service による地図表示、ジオコーディング、ルート計算、デバイストラッキングの実装パターンを解説します。 モバイルアプリテスト自動化 - AWS Device Farm で実現する実機テスト基盤 AWS Device Farm を活用したモバイルアプリケーションの実機テスト自動化手法を解説します。Amplify との統合による CI/CD パイプラインへのテスト組み込みと、多様なデバイスでの品質保証の実践方法を紹介します。