AWS AppSync 人気2017年〜
GraphQL API をフルマネージドで構築・運用できるリアルタイムデータ同期サービス
何ができるか
AWS AppSync は、GraphQL をベースとしたフルマネージド API サービスです。DynamoDB、Lambda、RDS、OpenSearch など複数のデータソースを統合した GraphQL API を簡単に構築でき、リアルタイムのデータ同期やオフラインアクセスにも対応しています。フロントエンドアプリケーションから単一のエンドポイントで必要なデータだけを効率的に取得でき、モバイルアプリや SPA の開発を大幅に加速します。
どのような場面で使うか
リアルタイムチャットアプリケーションのバックエンド構築、モバイルアプリのオフライン対応データ同期、複数マイクロサービスのデータを統合する BFF (Backend for Frontend) の実装、IoT ダッシュボードのリアルタイムデータ表示、ソーシャルメディアアプリのフィード更新通知など、リアルタイム性とデータ統合が求められるアプリケーション全般で活用されています。
身近な例え
レストランの注文システムに例えるとわかりやすいでしょう。従来の REST API は定食メニューのように、セットで決まった料理が出てきます。GraphQL を使う AppSync は、ビュッフェのように必要な料理 (データ) だけを自分で選んで取れる仕組みです。さらに、新しい料理が追加されたらリアルタイムで通知してくれます。
AppSync とは
AWS AppSync は、GraphQL API の構築・運用をフルマネージドで提供するサービスです。GraphQL は Facebook が開発したクエリ言語で、クライアントが必要なデータの形状を指定してリクエストできるため、REST API で発生しがちなオーバーフェッチ (不要なデータの取得) やアンダーフェッチ (データ不足による追加リクエスト) を解消します。AppSync はこの GraphQL の利点を、インフラ管理なしで活用できるようにします。
リアルタイム同期とオフライン対応
AppSync の大きな強みは、WebSocket ベースのリアルタイムサブスクリプション機能です。データの変更をクライアントに即座にプッシュ通知でき、チャットやコラボレーションツールのようなリアルタイムアプリケーションを容易に構築できます。また、Amplify DataStore と組み合わせることで、ネットワーク切断時にもローカルでデータを操作し、接続回復時に自動的にサーバーと同期するオフラインファースト設計を実現できます。 リアルタイム同期とオフライン対応をさらに深く理解するには、Amazon の解説書 も参照してみてください。
データソースの統合
AppSync は複数のデータソースをリゾルバーで統合し、単一の GraphQL エンドポイントとして公開できます。DynamoDB テーブル、Lambda 関数、RDS データベース、OpenSearch クラスター、HTTP エンドポイントなど、多様なバックエンドを組み合わせた API を構築可能です。リゾルバーは VTL (Velocity Template Language) または JavaScript で記述でき、データの変換やビジネスロジックの適用も柔軟に行えます。
注意点
- GraphQL のスキーマ設計はアプリケーションの使い勝手に直結するため、フロントエンドの要件を十分に把握してから設計すること
- リアルタイムサブスクリプションは WebSocket 接続を維持するため、大量の同時接続がある場合は接続数の上限とコストに注意が必要