リアルタイム処理の構築を容易にするAWS AppSync

はじめに

本記事で度々登場するGraphQLは、サーバーからのデータに対して、クライアントによるフェッチ、変更、サブスクライブを可能にする、Facebookが開発したオープンソースのAPI用クエリ言語です。

AWS AppSyncとは

AWS AppSyncは、複数のデバイスやユーザーが使用するモバイルアプリケーションのデータを、開発者がリアルタイムで管理及び同期できるようにするサービスです。モバイルデバイスがオフライン状態でも、データへのアクセスや変更が可能です。

また、AWS AppSync ではGraphQLを使用します。変更発生時に各ユーザーのデバイスでどのデータを自動的に同期するかを選択することで、開発者はユーザーエクスペリエンスを最適化し、ストレージと帯域幅の要件を最小限に抑えることができます。

これらの機能を活用すると、ブラウザ、Alexaスキル、ネットワーク接続が失われた場合でも使用できるIoTデバイスなどを含む、リアルタイムのコラボレーション環境を短時間で構築することができます。

※AWS AppSyncの開始にあたり、GraphQLの知識は必須ではありません。

AWS AppSyncの利点

無理なく始めて、ビジネスに合わせたスケーリング

AWS AppSync管理コンソールを使用すると、好みのIDE(Xcode、Android Studio、VS Codeなど)から直接、始めることができます。もしくは、AWS Amplify CLIを使用し、APIとクライアント側のプログラムを自動生成できます。

AWS AppSyncは、Amazon DynamoDB、Amazon Aurora、Amazon Elasticsearch、AWS Lambdaおよびその他のAWSのサービスと統合し、無制限のスループットとビジネスニーズに合わせて拡張縮小するストレージを持った、非常に高度なアプリケーションを開発することができます。

リアルタイムサブスクリプションとオフラインアクセス

Aws AppSyncによって、以下のことが可能となります。

数百万台のデバイスとの間のリアルタイムサブスクリプション

Aws AppSyncでは、GraphQLサブスクリプションを使用して、データのどの分をリアルタイムで利用可能にするかを指定できます。GraphQLサブスクリプションはアプリケーションコードに含まれるシンプルなステートメントで、サービスに対してどのデータをリアルタイムで更新するかを指示します。

アプリデータへのオフラインアクセス

Amplify DataStoreは、ウェブ、モバイル、IoT開発者向けのクエリ可能なデバイス上のDataStoreをローカルファーストの使い慣れたプログラミングモデルで提供します。これにより、オンラインやオフライン関係なく、データをシームレスにやり取りできます。

Aws AppSyncとAmplify DataStoreを組み合わせると、Amplify DataStoreはクラウドのアドバンストバージョン管理、競合検出、解決を活用して、さまざまなクライアントからのデータを自動的にマージするだけでなく、データの一貫性と整合性を提供できます。そのため、データ競合の解決などに関して、ユーザーの対応は必要ありません。

分散データへの一元的かつ安全なアクセス

GraphQLを使用して、単一のネットワークコールで複数のデータソースにわたって複雑なクエリと集計を実行します。Aws AppSyncを使用すると、次のことができます。

  • 複数の同時認証モードを使用してアプリデータを簡単に保護する
  • GraphQLスキーマから直接データ定義レベルでセキュリティと、きめ細かいアクセス制御を定義する

AWS AppSyncでは、アプリケーションのニーズに応じて、データのアクセスと許可にいくつかのレベルを設定できます。AWS IAMを使うと、アクセス許可をさらに制限できます。

AWS AppSyncは、メールとパスワードの機能についてAmazon Cognitoのユーザープールと統合されており、ソーシャルプロバイダー(Facebook、Google+、Login with Amazon)や、SAMLによるエンタープライズフェデレーションとも統合されています。そのため、次の機能を利用できます。

  • ユーザーとロールを論理的に組織化するためのグループ機能
  • アプリケーションへのアクセスのためのOAuth機能

AWS AppSyncの特徴

(GraphQL)シンプルになったデータアクセスとクエリ

AWS AppSyncでは、次のものが使用されます。

  • サーバーにあるデータのフェッチ、変更
  • サブスクライブをクライアントアプリケーションから実行できるデータ言語
  • GraphQL

GraphQLクエリでは、サーバーから返されたデータの構造化の方法をクライアントが指定します。これにより、クライアントは必要なデータのみを必要なフォーマットでクエリできます。

また、GraphQLには、「自己観察」という機能があり、バックエンドの知識がない開発者でも利用可能なデータを見つけることができます。

アプリ内でのデータのクエリ、フィルタリング、および検索

AWS AppSyncを使用することで、クライアントアプリケーションはデータ要件をGraphQLによって指定することができます。そのため、必要なデータのみがフェッチされ、サーバー側とクライアント側両方でのフィルタリングが可能です。

AWS AppSyncでは、前述のようにAmazon DynamoDBなどがサポートされています。そのため、GraphQLの操作として、簡単な検索、複雑なクエリやマッピング、テキストの全文検索、あいまい検索、キーワード検索、位置情報検索などが挙げられます。

キャッシング

AWS AppSyncのサーバー側のデータキャッシング機能は、データを高速インメモリ管理キャッシュできるようにし、低レイテンシーでデータを配信することで、データソースに直接アクセスする必要性を減らします。これは完全マネージド型のため、キャッシュクラスターを管理する運用上のオーバーヘッドがなくなります。

また、有効期限がカスタマイズ可能なGraphQLスキーマで定義したデータフィールドと操作を選択的にキャッシュする柔軟性を提供しているので、開発者はビジネスニーズに最適なパフォーマンスを設定できるようになります。

ユースケース

リアルタイムの共同開発

データのブロードキャスト

AWS AppSyncを使用し、以下のいずれかの方法によってスケーラブルなリアルタイムの共同開発ユースケースを実現することができます。

  • 接続しているクライアントすべてにバックエンドからデータをブロードキャストする
  • クライアント間で相互にデータをブロードキャストする

(利用例)

同一のデータをすべてのクライアントにブロードキャストし、ユーザーがスクリーン上のデータについて投票したり意見を述べたりし、リアルタイムで応答できるセカンドスクリーンのシナリオを作成する

チャットアプリケーション

Aws AppSyncを使用して、共同作業向けの対話型のアプリケーションを実現することができます。

(利用例)

複数のプライベートチャットルームをサポートし、会話履歴にアクセスでき、デバイスがオフラインの場合でも送信メッセージをキューに挿入できるような、モバイルおよびウェブアプリケーションを構築する

IoT

AWS AppSyncを使用して、AWS IoTに送信されたIoTデバイスデータにアクセスできます。

(利用例)

モバイルまたはウェブアプリケーションにリアルタイムのダッシュボードを構築し、コネクテッドカーでテレメトリを視覚的に確認する

データレイヤー

マイクロサービスのアクセスレイヤー

マイクロサービスが、それぞれ異なる環境下で動作している場合でも、Aws AppSyncを単一のインターフェイスとして使用してアクセスし、複数のマイクロサービスのデータをユーザーのアプリケーションで組み合わせることができます。

数か国語でのバックエンドデータのアクセス

単一のコールで複数のデータソース

(Amazon Aurora ServerlessのSQLデータベース、Amazon DynamoDBのNoSQLテーブル、Amazon Elasticsearch Serviceの検索データ、Amazon API GatewayのRESTエンドポイント、AWS Lambdaのサーバーレスバックエンド)からデータを取得または変更することができます。この他に次のことができます。

  • GraphQLコネクションを使用して、クエリを行ったり、データソース間の関係を作ったりする
  • ウェブおよびモバイルのクライアントに、リアルタイムおよびオフラインの機能を提供する

さいごに

本記事では、AWS AppSyncの利点や特徴、ユースケースについて解説しました。

AWS AppSyncの利用料金は、以下のように使用した分に対してのみ支払いが発生し、最低料金やサービス使用義務はありません。ただし、AWS AppSync GraphQL API専用のキャッシュをオプションでプロビジョニングする際、選択するインスタンスタイプに応じて課金されます。

  • 4.00USD/クエリとデータ変更操作100万回
  • 2.00USD/リアルタイムアップデート100万回
  • 0.08USD/AWS AppSyncサービスへの接続100万回

AWS AppSyncは、ワークロードの種類に関わらず透明性と低価格が実現されており、リアルタイム処理の構築や自動更新フィード、通知機能実装も容易にしてくれるサービスです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

Amazon Neptune とは

次の記事

AWS RoboMakerサービスについて