・ ・ ・ AppSync GraphQL API DynamoDB 既存のサービス API App Runner Apollo Server GraphQL Shield GraphQL Mesh GraphQL共通エンドポイントの提供により ・データの取得方法・データ形式の統一 ・クライアントは必要十分なデータを取得可能に ・セキュリティリスクが集約し守るべきものがシンプルに アーキテクチャパターンの共通化により 各種工数削減が可能に! データ配信プラットフォーム開発のミッション達成 Home Entertainment & Soundの製品群が 素早く、秩序を持って、柔軟に、安全にデータを取得できる環境を提供する
GuildによるGraphQL Yoga • しかし開発時点ではYogaは成熟していなかった → Apollo Serverを採用 Server Server client database GraphQL API ・ ・ ・ GraphQL Gateway GraphQL Mesh Apollo Server
GuildによるGraphQL Shieldでデータソースごとのアクセス制御を実現 Server Server client database GraphQL API ・ ・ ・ GraphQL Gateway GraphQL Mesh Apollo Server GraphQL Shield アクセス制御
Status Codeでエラーを表現することができない • HTTP Status CodeではなくGraphQLレスポンス内に独自のエラーコードを含めることで表現する • 一方でインフラ自体に問題がある場合は従来通りHTTP Status Codeでエラーが表現される 例)大量リクエスト=429エラー、サーバダウン=503エラー、など → クライアントサイドのエラーハンドリングロジックが従来のREST APIのものとは異なり クライアント開発者の学習コストがそこそこ高くなる client GraphQL Gateway 200 OK {"errors": [{"extensions": {"code": "HOGE_ERROR"}}]} 429 Too Many Requests 503 Service Unavailable