現在、ReactNativeフロントエンドとLambdaベースのバックエンドで構成される新しいゲームプロジェクトに取り組んでいます。アプリには、アクティブなユーザーレコード、ジオフェンシングなどのリアルタイム機能が必要です。
リアルタイムデータ同期のための本当にエレガントなソリューションのように見えるFirebaseのリアルタイムデータベースを見ていましたが、AWSにはこれに似たものはないと思います。
AWSサービスのみを使用する「サーバーレス」リアルタイムで考えられる3つのオプションは次のとおりです。
オプション1:WebSocketを介したAWSIoTメッセージング
これは非常に明白で、IoTSDKを介したマネージドWebSocket接続です。インバウンドイベントとアウトバウンドイベントに応答してLambdaをトリガーし、WebSocketをリアルタイムレイヤーとして使用して、通常どおりにアプリクライアントでカスタム処理ロジックを構築することを考えていました。
これの欠点は、少なくともFirebaseと比較して、イベントでデータを自分で処理する必要があることです。これにより、WebSocketの上に別の管理レイヤーが追加され、アプリケーションのストアのAPIデータレイヤーで標準化する必要があります。 。
長所:
- スケーラブルな双方向リアルタイム接続
短所:
- アプリが開いているときにのみ機能します
- メッセージ構造を実装する必要があります
- 管理する複数のトランスポート層
オプション2:プッシュトリガーによる再フェッチ
もう1つのオプションは、プッシュ通知をリアルタイムトリガーとして使用することですが、API Gatewayへの通常のHTTPリクエストを使用して、更新されたペイロードを実際に取得します。
このアプローチが好きなのは、アプリケーションの状態について、1つのトランスポート層と信頼できる唯一の情報源に固執するからです。これらはプッシュ通知であるため、アプリが開いていないときにも更新がトリガーされます。
欠点は、これが多くのカスタム作業であり、プッシュ通知とフェッチする必要のあるデータとの間のマッピングが難しい可能性があることです。
長所:
- アプリが閉じていてもプッシュ通知は機能します
- 信頼できる唯一の情報源、トランスポート層
短所:
- ほとんどのカスタムソリューション
- 全体としてさらに多くのHTTPリクエストが含まれます
オプション3:Cognito Sync これは私にとっては新しいものであり、サーバーから実際にインターフェースできるかどうかはわかりません。
Cognito Syncは、ユーザー状態の同期を提供します。オフラインサポートを備えたデバイス間で、とにかく使用するCognitoSDKの一部です。私が探しているもののように聞こえますが、デバイスの1つだけでなく、AWSからの更新を変更または「トリガー」できるかどうかについての決定的な証拠を見つけることができませんでした。
長所:
- 抽象化されたリアルタイムデータモデルを提供します
- CognitoユーザーレコードOOTBに接続
短所:
- Lambdasから変更または更新できるかどうかわからない
誰かがLambdaベースのアーキテクチャの一部としてAWSでリアルタイムを実行した経験があるかどうか、そして続行するための最良の方法について意見があるかどうか疑問に思います。