AWS AppSync とは
AWS AppSync(アプリデータをリアルタイムで保存、同期)| AWS
AWS AppSync GraphQL API を使用すると、デベロッパーは、複数のソースからのデータに安全にアクセスしたり、それらのデータを操作および結合したりする柔軟な API を介して、必要なデータに正確にアクセスできます。
GraphQL とは
マネージド型 GraphQL API - Amazon AppSync - AWS
GraphQL は、API のクエリおよび操作言語です。GraphQL は、データ要件とインタラクションを記述するための柔軟で直感的な構文を提供します。これにより、デベロッパーは、必要なものを正確に求め、予測可能な結果を得ることができます。また、1 回のリクエストで多数のソースにアクセスできるため、ネットワーク呼び出しと帯域幅の要件が緩和され、アプリケーションによって消費されるバッテリー寿命や CPU サイクルを節約できます。
GraphQLはAPI用のクエリ言語である
1回のリクエストで多くのリソースを得ること も できる
GraphQLでは、単一のエンドポイントへ、欲しいリソースをHTTP POSTのbodyに明示的に記載してリクエストすることで、必要なリソースを1回のリクエストで取得し、この問題を解消しようと試みています。
- REST API だと必要なリソースを得るために複数のエンドポイントが必要
- GraphQL では単一のエンドポイントへの 1 回のリクエストで必要なリソースを取得
AppSync と API Gateway
AppSync VS APIGateway 両者の違いをスタートアップCTOが本気で考えてみた! | Ragate ブログ
AppSync の役割は?
ズバッと言いますが、AppSync は GraphQL のエンドポイントを提供します。
API Gateway は複数のAPIエンドポイントを提供しますが、AppSync はGraphQL コードを受け付ける1つのエンドポイントしか提供しません。(1つのエンドポイントへ POST を受け付けるイメージ)
- API Gateway は 1 つの API で複数のエンドポイントを提供
- AppSync は 1 つのエンドポイントへ POST を受け付けるイメージ
ユースケース
- リアルタイムスコアボードを使用したゲームアプリケーション
- カスタマーサービスのダッシュボード
- 「いいね」、メッセージング、位置や近接情報を使用したアプリケーション
- 在席表示や会話履歴機能を持つチャットアプリケーション
オフラインでも使用できて、オンラインになった時に自動的に更新をしてくれるようです。
以下の AWS 公式の漫画にも出てくるイメージが分かりやすいと思います。
AWSマンガ 第4話「リアルタイムのチャット機能を実装しろ!」(1/4) | AWS
活用事例
Cookpad
Cookpad は、レシピのアイデアや料理のこつを共有するコミュニティプラットフォームを提供しています。Cookpad では、料理のライブアプリで AWS AppSync を使用しており、シェフ、プロの料理人、有名人が配信する生の料理ショーを見ることができます。このアプリは Android、iOS、FireTV で利用できます。
「当社ではライブショー配信中の質問、コメント、いいね、スタンプ、視聴者数など、リアルタイムでのやりとりに AWS AppSync を使用しています。AWS AppSync は、ライブ料理ショーの開始時に同時に接続してショーの配信中ずっと大量のメッセージを送ってくる何千人もの視聴者をサポートし、自動的にスケーリングできます」
まとめ
今回は AWS AppSync について調べてみました。
以下がポイントでした。
- GraphQL API の開発を容易にする、完全マネージド型サービス
- GraphQL では単一のエンドポイントへの 1 回のリクエストで必要なリソースを取得
- AppSync は 1 つのエンドポイントへ POST を受け付けるイメージ
- リアルタイム処理などで使用
概要だけですが、どなたかの参考になれば幸いです。
Discussion