AWS AppSync とは
AWS 公式
AWS AppSync(アプリデータをリアルタイムで保存、同期)| AWS
AWS AppSync は、GraphQL API の開発を容易にする、完全マネージド型サービスです。このサービスは、AWS DynamoDB や Lambda、その他のデータソースとの安全な接続に必要な、面倒な作業を自動的に処理します。
GraphQL
GraphQLはAPI用のクエリ言語である
1回のリクエストで多くのリソースを得ること も できる
GraphQLでは、単一のエンドポイントへ、欲しいリソースをHTTP POSTのbodyに明示的に記載してリクエストすることで、必要なリソースを1回のリクエストで取得し、この問題を解消しようと試みています。
Q:GraphQL とは何ですか?
GraphQL は、サーバーからのデータに対して、クライアントによるフェッチ、変更、サブスクライブを可能にするデータ言語です。GraphQL クエリでは、サーバーから返されたデータをどのように構造化するかをクライアントが指定します。これによって、クライアントは必要なデータのみを必要なフォーマットでクエリできます。
- 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