はじめに
開発で既に AppSync が使用されており、「AppSyncってなんだ?」となったので、そもそものリソース自体を調べたのを以下にまとめました。
本記事の対象者
- AppSync を初めて知る方
- 実装ではなく、リソース自体を知りたい方
Appsync とは
AWS AppSyncは、AWS によって開発されたフルマネージドサーバーレスの GraphQL サービスです。サーバーレスの GraphQL API を作成し、単一のエンドポイントを通じて安全にデータの照会、更新、公開を行うことができます。
クライアント側は単一の GraphQL エンドポイントから複数のデータベース、マイクロサービス、およびAPIにクエリを実行できます。
ここで、GraphQL が出てきて、GraphQL もわからないので、調べました。
GraphQL とは
GraphQLは、APIクエリ言語とサーバーサイドのランタイムの両方を指します。単一のエンドポイントを用意して、そこにクエリを投げ込むことで操作を行います。
クライアント側でクエリを単一のエンドポイントに投げて、AppSync側でスキーマを定義して、定義された各リクエストタイプにリゾルバー(リクエスト先の情報)をアタッチすることができます。
以下は、簡単なクエリ(リクエスト)になります。
query {
users {
name
}
}
個人的には、以下のメリットがあると思いました。
- 単一のエンドポイントのため、複数のAPI呼び出しをまとめられる
- スキーマで型定義できているため、クライアントとサーバー間の食い違いが発生するリスクが少なくなる
Amazon Aurora Serverless と DynamoDB との接続
Appsync は、Amazon Aurora Serverless
と DynamoDB
なら、直接連携することができます。ここでいう直接連携とは、中間サービス(Lambdaなど)を使用せず、連携できるという意味になります。リゾルバの設定は必要になります。
もしRDSと連携したいのならば、Lambda
をリゾルバとして使用し、連携する必要があります。
DynamoDBを使用している場合
フルマネージド NoSQL データベースサービスであり、シームレスなスケーラビリティを備えた高速で予測可能なパフォーマンスを提供します。
AWS公式には、上記にように記載がありました。
そのため、パフォーマンス観点でいうと、DynamoDBを使用する方がよさそうです。
普段RDSを使用している構築の場合は、Lambda等を利用して、DynamoDBにコピーするなどすれば良いかと思います。
料金体系(2023/08時点)
AppSync では使用した分に対してのみ支払いが発生します。主に以下3つに料金が発生します。
- クエリとデータ変更操作
- リアルタイム更新
- キャッシュ
具体的な料金は公式サイトをご確認ください。
最後に
AppSyncを知るために、GraphQLやDynamoDBも知る必要があり、幅広くいろんな知識を入れることができてよかったです。次は実装をメインに調査をしてみようと思います。
最後までご覧いただき、ありがとうございました。