こんにちは。サーバーワークスの阿部です。
私事ですが、先日やっと「AWS Certified Solutions Architect - Professional」に
合格することができました。
試験勉強をする中で個人的にどうしても覚えにくかったサービスがあり、 その備忘録として本記事で紹介させて頂きます。
はじめに
本記事で説明するのはAWS AppSyncというサービスです。
同じ「App」から始まるAWSサービスとして、「AWS App Runner」というサービスがあるのですが、 資格勉強をしていた当時の私は、名前が似ているというだけでそれぞれの違いについて覚えるのに苦労しました。
今回はAWS AppSyncについて「試験で出題された場合に他の選択肢と比較できる」レベルを目安に、 サービスの特徴について記載します。
AWS AppSync
AWS AppSyncとは?
AWS AppSync は、リアルタイムのデータ同期機能とオフラインプログラミング機能を備えた、エンタープライズレベルのフルマネージド型の GraphQL サービスです。
公式ドキュメントより参照
https://docs.aws.amazon.com/ja_jp/appsync/?id=docs_gateway
この文言だと、初学者の方はイメージが湧きにくいと思います。
一言で表すと「サーバーレスでスケーラブルなGraphQL APIを、AWS上で簡単に利用できるサービス」です。
そもそもGraphQLって何?
AWS AppSyncを説明するうえで避けて通れないのが「GraphQL」の存在です。 Facebookが開発したオープンソースのAPI用クエリ言語で、 クライアントとサーバーの間で効率的にデータをやり取りするための言語になります。
例えば、データベースから情報を取得する際、従来は複数のリクエストを何回か実行しないと欲しいデータが受け取れないため、あまり効率的ではありませんでした。
GraphQLでは、クライアント側が欲しいデータの項目を指定して1回のリクエストを送るだけで、必要なデータを取得できます。
GraphQLに関する詳細な説明はこちらをご確認ください。
AWS AppSyncの特徴
特徴として、ここでは以下3つを紹介します。
- シンプルなGraphQLベースの実装
- 豊富なチャット向け機能
- 複数のデータソースを選択可能
シンプルなGraphQLベースの実装
GraphQLの特徴として、クライアントが必要なデータを明示的にリクエストすることが可能です。 具体的にはデータのどの部分を取得するかを正確に指定できたり、データの更新をリアルタイムで クライアントに通知することもできます。
例えば、チャットアプリで新しいメッセージが届くと、自動的に最新のメッセージを表示する、ということが可能になります。
豊富なチャット向け機能
AWS AppSyncでは、アプリがインターネットに接続されていない時でもデータを使えるようにする仕組みを持っています。 これは、チャットアプリでユーザーがオフライン状態でも、過去のメッセージを見たりできる機能のことです。
また、オフライン時でもデータへアクセスできるようにローカルにデータを保存する機能や、アプリがオフラインからオンライン に戻った時に、最新のデータをサーバーから取得してローカルデータを更新する機能があります。
複数のデータソースを選択可能
AWS AppSyncではAWS Lambda、Amazon DynamoDB、Amazon OpenSearch Service、Amazon Aurora Serverlessなどがサポートされており、 異なるデータソースからデータをまとめて提供するAPIを作成することができます。
例えばユーザー情報、ユーザーアイコン、チャットがそれぞれ別のデータソースに保存されているような場合、 AWS AppSyncでは、1つのAPIを通じて、ユーザー情報、ユーザーアイコン、チャットなどのデータを一度にまとめて取得できるようになります。
ユースケース
例えば、「AWS Amplify※」というサービスと組み合わせて、アプリケーションにリアルタイムのチャット機能を実装したい場合などによく利用されます。
※アプリの開発を迅速化するためのフルスタックの開発プラットフォーム
おまけ
私が混同していた「AWS App Runner」との比較を表にまとめてみました。
このようにAWS App Syncはリアルタイム更新に強みを持ち、AWS App Runnerはアプリケーションのデプロイに特化しています。 APIを効率的に構築することが目的か、アプリのデプロイが目的かで利用場面が変わりますね。
最後に
いかがだったでしょうか? 今回はAWS AppSyncについて、試験対策という観点で書いてみました。 名前の似ているサービスAWS App Runnerと比較することで両者の違いを 改めて理解することができたと思います。
本記事が誰かのお役に立てれば幸いです。
阿部伊織(執筆記事の一覧)
インフラエンジニアからクラウドエンジニアへ転職。