AWS AppSync:AppSyncとは? 長所と短所とその使い方
API(Application Programming Interface)用の最も一般的に使用されているクエリ言語であるGraphQLは、複数のインターフェースデータソースから明確で理解しやすい解決策を提供し、単一のリクエストに同時に結果を返すよう開発者を支援します。GraphQLクエリーを送信することで、アプリケーション開発者はインスタンスで欲しい情報を正確に得られるだけでなく、他の開発ツールの実装でAPIに変更を加えるプロセスにも介入しやすくなるでしょう。
GraphQLクエリ言語を最も効率的に使用するために、開発者はAWS AppSyncへの道を見出すべきです。本記事では、AppSyncとは一体何か、なぜそのように人気があるのか、そしていつ使うべきなのかについて説明します。
1.AWS AppSyncとは?
AppSyncの定義
AWS AppSync は、Amazon Web Services(AWS)が提供するマネージドサービスであり、GraphQL APIの開発プロセスを簡素化します。つまり、データベースや他のHTTPエンドポイント、あるいはAWSクラウドサービス(Amazon DyaDB、AWS Lambdaなど)、さまざまなソースからデータにアクセスし修正するための効果的かつ柔軟で拡張性の高いGraphQLインターフェースをフロントエンド開発者に提供するものです。また、AppSyncは、リアルタイムのデータ更新やオフラインでのデータアクセスなどの機能を提供し、最新のモバイルおよびWebアプリケーションに適した選択肢となっています。
AppSyncの機能
サーバーレスなGraphQL APIとして活躍するAppSyncのAWSサービスでは、データベースや他のサービス、アプリのプログラミングインターフェースなど様々なデータソースからのクエリを、たった一つのエンドポイントから行うことができます。AppSyncでPub/Sub APIを作成する場合、開発者はWebsocketと呼ばれるサーバーレス接続を通じて、アプリユーザーにリアルタイムにデータを公開できるようになります。
さらに、AppSyncはGraphQL APIのクイックテストをデプロイし、データソース上で再度繰り返すことも可能です。
2.AWS AppSyncの長所と短所
AppSyncの長所
ここでは、AWS AppSyncが提供する、GraphQL APIを管理する際の最初の選択肢となる有益な機能を紹介します。
①拡張性
アクセス、トラフィック量、ユーザー数に応じて、AppSyncはシームレスなユーザーエクスペリエンスを実現するために自らスケーリングします。つまり、ユーザーフレンドリーで効果的なAPIを最短で構築・開発することにつながります。
②リアルタイム練習
AppSyncで行われたデータの変更は、即座に更新され、すべてのデバイス、ユーザーに表示されます。さらに、GraphQL サブスクリプションを設定することで、開発者はリアルタイムプラクティスで使用するデータの種類やセクションを指定することができます。
インスタントアプリケーションは、データ変更のビューを広く変更するサブスクリプションフィルタや、AppSync内部で作成される Pub/Sub APIで表示することもでき、単一のチャネルでアプリの購読者にメッセージを公開および送信することが可能です。これは、GraphQLの知識がない場合に有効です。
③リソース最適化
AppSync AWSサービスにより、複雑なバックエンドのタスクがほぼカバーされるため、開発者は、最高のユーザー体験を提供するアプリやウェブサイトのフロントエンドの構築に専念できる可能性が高くなります。
④オフライン同期機能
AppSyncの最も大きな特徴の1つは、Web、モバイル、または他のIoTデバイスのいずれかからのリクエストやクエリのデータを、インターネット以外のコンテキストで同期させる機能です。その結果、ユーザーのデバイスが無線LANに再接続したときに、このAWSのサービスによってデータの競合が検出され、アプリケーションインターフェースに変更が表示されるようになります。
⑤統一データ
AWS AppSyncの統一データベースは、GraphQLとキャッシュで構築されており、開発者はフロントエンドからデータへの高速なアクセスを可能になります。さらに、キャッシュはデータクエリ管理タスクのパフォーマンス向上にも寄与し、クラスタでのキャッシュ管理により柔軟性を高めています。その結果、AppSyncは事例企業のニーズを満たすのに適していることが実証されています。
⑥データアクセス制御
AWS AppSyncを使用する場合、データアクセス許可のレベルを制御する権限は、開発者に与えられます。AWS Identity and Access Management、Amazon Cognito User Poolsなど、AWSが提供する信頼性の高いセキュリティサービスにより、すべてのデータは安全に保護され、同期の準備が整います。
⑦効果的なコスト
このサービスには、まだ無料トライアルはありません。しかし、AWS AppSyncの価格設定は従量課金モデルであるため、月単位で実行されたリクエストの分だけユーザーに課金されます。言い換えれば、すべての料金は使用量に基づいて支払えばよいということです。
⑧他のAWSサービスとの互換性
データセットはAmazon Web Services(AWS)内に格納されるため、AWS AppSyncはアプリで利用できるAmazonの多くのサービスをユーザーに提供することができます。AppSync RDS、AWS Lambda、Amazon EC2など、実装に利用できる人気のAWSサービスです。
- AWS Lambda:GraphQLリゾルバでフロントエンドの関数コードの実行とテストを支援します。
- Amazon EC2:GraphQLのクエリ用データベースソースとしてElasticsearchドメインを提供します。
- AWS RDS: AppSyncのデータソースとして、SQL、およびテーブルメトリクス形式のNoSQL Relational Databaseをサポートします。
AppSyncの短所
ここでは、AppSyncの短所をご紹介します。
①バックエンドにおけるリミットコントロール
特にバックエンドのコードは、すべてAWS AppSyncで処理されているため、デバッグが困難な場合があります。
②長い学習時間
AppSync on AWSを使いこなすには、AWS Cognito、AWS Lambda、Amazon EC2、RDSなどのAmazon Web Servicesのパックと、追加ツールの習得が必要です。さらに、クエリ言語であるGraphQLに関する専門的な知識も必須となります。結論から言うと、AppSyncの恩恵を受けるために上記のものを全て学ぶとなると、かなりの時間がかかると思われます。
③AWSロックイン
AWS AppSyncが公開する結果やクエリはシステムのプロパティとみなされるため、AWSの外に移行することは難しいでしょう。そのため、移行する場合は開発者が独自に対応サービスを作成するために多大な労力を費やす必要があります。
3.ユースケース
AWS AppSyncの使用例としてよく挙げられるのは、以下の4つです。
- 様々なデータソースを収集し、変更を加えるという需要
IoT、AWSマイクロサービス、HTTPなどを単一のAPIとアクションだけで管理し、対話する必要があります。
- デバイスオフライン時においても同期を必要とする
AppSyncとAWS Amplify DataStoreにより、インターネット接続の有無にかかわらず、デバイス、モバイル/Webアプリケーション、クラウドなどの間でデータ同期の自動化が可能です。
- リアルタイムの体験の構築
会話型モバイル/ウェブアプリケーションを構築し、バックエンドからクライアントにデータをブロードキャストします。
- IoTデータの管理
AWS IoTサービスに送信されたデバイスデータを取得することで、モバイルやWebアプリケーション用のリアルタイムダッシュボードを構築することができます。
まとめ
AWS AppSyncとは何か、導入するメリットとデメリットを理解していただけましたでしょうか。、企業は利点に加えて、欠点のいくつかに対処するためにITO(ITアウトソーシングサービス)を選択する必要があります。専門家にアウトソーシングすることで、AppSyncと統合可能なAWSの機能とサービスの恩恵を最大限に受けることができます。
AWSサービスのコンサルティングやプロビジョニングを行うベンダーとして、CMC Japanを選択肢のひとつとして検討してみてはいかがでしょうか。CMC Japanは、30年余りの実績と2200人以上のIT専門家をもって、AWSコンサルティングパートナーとしてお客様のプロジェクトをお手伝いさせていただきます。お気軽にご相談ください。