現在、ReactネイティブフロントエンドとLambdaベースのバックエンドで構成される新しいゲームプロジェクトに取り組んでいます。アプリには、アクティブなユーザーレコード、ジオフェンシングなどのリアルタイム機能が必要です。
FirebaseのRealtime Databaseを見ていましたが、これはリアルタイムデータ同期のための非常にエレガントなソリューションのように見えますが、AWSにそれと同じようなものはないと思います。
AWSサービスのみを使用する「サーバーレス」リアルタイムで考えられる3つのオプションは次のとおりです。
オプション1:WebSocket経由のAWS IoTメッセージング
これは、IoT SDKを介した管理されたWebSocket接続です。インバウンドおよびアウトバウンドイベントに応答してLambdaをトリガーし、WebSocketをリアルタイムレイヤーとして使用して、通常どおりアプリクライアントでカスタム処理ロジックを構築することを考えていました。
これの欠点は、少なくともFirebaseと比較して、イベントのデータを自分で処理する必要があることです。これにより、WebSocketの上に別の管理層が追加され、アプリケーションのストアのAPIデータ層で標準化する必要があります。
長所:
短所:
オプション2:プッシュトリガー再フェッチ
別のオプションは、プッシュ通知をリアルタイムトリガーとして使用しますが、API Gatewayへの通常のHTTP要求を使用して、更新されたペイロードを実際に取得します。
このアプローチが好きなのは、アプリケーション状態の1つのトランスポート層と単一の真実のソースのみに固執するからです。これらはプッシュ通知であるため、アプリが開いていないときにも更新をトリガーします。
欠点は、プッシュ通知と取得する必要のあるデータとの間のマッピングが潜在的に困難な多くのカスタム作業であるということです。
長所:
短所:
オプション3:Cognito Syncこれは私にとって新しいものであり、サーバーから実際にインターフェイスできるかどうかはわかりません。
Cognito Syncはユーザー状態の同期を提供します。オフラインサポートを備えたデバイス全体で、とにかく使用するCognito SDKの一部です。私が探しているもののように聞こえますが、デバイスの1つだけでなくAWSからの更新を変更または「トリガー」できるかどうかについての決定的な証拠を見つけることができませんでした。
長所:
短所:
Lambdaベースのアーキテクチャの一部として、AWSでリアルタイムを実行した経験がある人がいるのか、そしてどのように進めるのが最善かについて意見がありますか?
AWSサポートに同様の質問をしたところ、これが彼らの回答でした。
彼らへの私の質問:
同じブラウザ内でリアルタイムDBaaSをFirebaseのように感じるためのAWSサービスのグループ(可能な場合)とは何ですか?
AWS Cognitoはユーザーアカウントに最適のようです。 WebSockets /リアルタイムDB部分に類似したものはありますか?
彼らの反応:
あなたの質問に、FirebaseはAWSサービスAWS MobileHubに最も近いです。以下のリンクからmobilehubに関する詳細を確認できます。
https://aws.Amazon.com/mobile/details/https://aws.Amazon.com/mobile/getting-started/
「AWS Cognitoはユーザーアカウントに最適のようです。WebSockets/リアルタイムDBの部分に似たものはありますか?」
Amazon Dynamodbは、あらゆる規模で一貫した1桁のミリ秒のレイテンシを必要とするすべてのアプリケーション向けの高速で柔軟なNoSQLデータベースサービスです。これは完全に管理されたクラウドデータベースであり、ドキュメントモデルとキーバリューストアモデルの両方をサポートしています。柔軟なデータモデル、信頼性の高いパフォーマンス、スループットキャパシティの自動スケーリングにより、モバイル、Web、ゲーム、アドテク、IoT、および他の多くのアプリケーションに最適です。
Amazon Dynamodbは、Amazon DynamoDBの応答時間を1秒あたり数百万の場合でもミリ秒からマイクロ秒に短縮できる、完全に管理された高可用性のメモリ内キャッシュであるAmazon DynamoDB Accelerator(DAX)でさらに最適化できます。
詳細については、以下のドキュメントを参照してください。
https://aws.Amazon.com/dynamodb/getting-started/https://aws.Amazon.com/dynamodb/dax/
さらに質問がある場合は、遠慮なく私に知らせてください。
ありがとう。
宜しくお願いします、
Tayo O.アマゾンウェブサービス
AWSサービスに関するお客様の質問に答える記事とビデオのナレッジベースであるAWSサポートナレッジセンターをご覧ください。 https://aws.Amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category
また、この答えを調べている間に、私もこれを見つけましたが、面白そうです:
その記事へのコメントも興味深いものです。
Jacob Wakeem:このアプローチがaws iotを使用するよりも優れている点は何ですか? iotは、1行のコードを記述することなく、サーバーレスアーキテクチャでこれらすべての機能を備えているようです。
Sam Dengler:AWS IoTサービスのマネージドPubSub機能は、記事で示したようなメッセージベースのアプリケーションへの優れたアプローチでもあります。 Elasticache(Redis)を使用する場合、Pub/Subを使用する顧客は通常、キャッシュ、リーダーボードなどの他のユースケースのデータストアとしてRedisも使用します。これにより、AWS IoTサービスでElastiCache(Redis)を使用することもできますAWS IoTルールエンジンを介してAWS Lambda関数をトリガーします。メッセージベースのアプリケーションの設計方法とデータの活用方法によっては、1つのソリューションが他のソリューションよりも適している場合があります。
データベースの検索や計算など、さまざまなデータソースを使用したこれらのリアルタイムおよびオフライン機能の一部については、AWS AppSyncをご覧ください。
AWS Serverlessのようなサウンドが最適な代替手段です。
また疑問に思う: AWS vs Firebase-それは公正な戦いでもありますか?