web-dev-qa-db-fra.com

Quel serait l'équivalent AWS de la base de données en temps réel Firebase?

Je travaille actuellement sur un nouveau projet de jeu qui consistera en un front-end natif React) et un back-end basé sur Lambda. L'application nécessite des fonctionnalités en temps réel telles que enregistrements utilisateur, geofencing, etc.

Je cherchais la base de données en temps réel de Firebase, qui ressemble à une solution vraiment élégante pour la synchronisation de données en temps réel, mais je ne pense pas qu'AWS ait quelque chose de semblable.

Les 3 options auxquelles je pouvais penser pour un temps réel "sans serveur" utilisant uniquement les services AWS sont:

Option 1: messagerie AWS IoT via WebSockets

Celle-ci est assez évidente, une connexion WebSockets gérée via le SDK IoT. Je pensais déclencher Lambdas en réponse aux événements entrants et sortants et utiliser simplement WebSockets comme couche en temps réel, en créant une logique de gestion personnalisée sur le client d'application, comme vous le feriez normalement.

L'inconvénient, au moins par rapport à Firebase, c'est que je devrai gérer moi-même les données des événements, ce qui ajoutera une couche de gestion supplémentaire au-dessus de WebSockets et devra être normalisé avec la couche de données API dans les magasins de l'application. .

Avantages:

  • Connexion bidirectionnelle en temps réel évolutive

Les inconvénients:

  • Ne fonctionne que lorsque l'application est ouverte
  • La structure du message doit être implémentée
  • Plusieurs couches de transport à gérer

Option 2: relecture à la demande

Une autre option consiste à utiliser les notifications Push en tant que déclencheurs en temps réel, mais à utiliser une requête HTTP régulière à API Gateway pour obtenir le contenu mis à jour.

J'aime cette approche car elle ne colle qu'à une couche de transport et à une seule source de vérité pour l'état de l'application. Il déclenchera également des mises à jour lorsque l'application n'est pas ouverte puisqu'il s'agit de notifications push.

L'inconvénient est qu'il s'agit d'un travail très personnalisé comportant des mappages potentiellement difficiles entre les notifications Push et les données à récupérer.

Avantages:

  • Les notifications push fonctionnent même lorsque l'application est fermée
  • Source unique de vérité, couche de transport

Les inconvénients:

  • La plupart des solutions personnalisées
  • Impliquera beaucoup plus de demandes HTTP globales

Option 3: Cognito Sync C'est plus récent pour moi et je ne suis pas sûr qu'il puisse être interfacé avec le serveur.

Cognito Sync offre une synchronisation de l'état de l'utilisateur. sur plusieurs appareils avec une prise en charge hors ligne et fait partie du SDK Cognito que je vais utiliser de toute façon. Cela ressemble à ce que je cherche, mais je n’ai trouvé aucune preuve concluante quant à la possibilité de modifier ou de "déclencher" les mises à jour à partir d’AWS, et pas seulement à partir de l’un des périphériques.

Avantages:

  • Fournit un modèle de données en temps réel abstrait
  • Connecté aux enregistrements utilisateur Cognito OOTB

Les inconvénients:

  • Pas sûr si peut être modifié ou mis à jour à partir de Lambdas


Je me demande si quelqu'un a déjà utilisé AWS en temps réel dans le cadre d'une architecture basée sur Lambda et si vous avez un avis sur la meilleure façon de procéder.

62
BarakChamo

J'ai posé une question similaire au support AWS, et c'était leur réponse.

Ma question à eux:

Quel est le groupe de services AWS (s'il est possible) de donner à ce même DBaaS en temps réel dans le navigateur une impression de Firebase?

AWS Cognito semble être idéal pour les comptes d'utilisateurs. Existe-t-il quelque chose de similaire pour la partie WebSockets/DB en temps réel?

Leur réponse:

Pour répondre à votre question, Firebase est le plus proche du service AWS AWS MobileHub. Vous pouvez consulter plus de détails ci-dessous sur mobilehub à partir du lien ci-dessous.

https://aws.Amazon.com/mobile/details/https://aws.Amazon.com/mobile/getting-started/

"AWS Cognito semble être idéal pour les comptes d'utilisateurs. Existe-t-il quelque chose de similaire pour la partie WebSockets/DB en temps réel?"

Amazon Dynamodb est un service de base de données NoSQL rapide et flexible destiné à toutes les applications nécessitant une latence en millisecondes cohérente, à un chiffre, à toute échelle. Il s'agit d'une base de données cloud entièrement gérée, qui prend en charge les modèles de magasin de documents et de magasins à valeur clé. Son modèle de données flexible, ses performances fiables et sa capacité de débit évolutive automatiquement en font un choix idéal pour les applications mobiles, Web, de jeu, publicitaires, IoT et bien d'autres.

Amazon Dynamodb peut encore être optimisé avec Amazon DynamoDB Accelerator (DAX), un cache en mémoire entièrement géré et hautement disponible, capable de réduire les temps de réponse Amazon DynamoDB de quelques millisecondes à quelques microsecondes, même à des millions de demandes par seconde.

Pour plus d'informations, veuillez consulter la documentation ci-dessous.

https://aws.Amazon.com/dynamodb/getting-started/https://aws.Amazon.com/dynamodb/dax/

Si vous avez d'autres questions, n'hésitez pas à me le faire savoir.

Merci.

Meilleures salutations,

Services Web Tayo O. Amazon

Consultez le Centre de connaissance du support AWS, une base de connaissances d'articles et de vidéos qui répondent aux questions des clients sur les services AWS: https://aws.Amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Aussi, tout en recherchant cette réponse, j’ai également trouvé ceci intéressant:

https://aws.Amazon.com/blogs/database/how-to-build-a-chat-application-with-Amazon-elasticache-for-redis/

Les commentaires sur cet article sont également intéressants.

Jacob Wakeem: Quel avantage cette approche a-t-elle sur l'utilisation de aws iot? Il semble que iot ait toutes ces fonctionnalités sans écrire une seule ligne de code et avec une architecture sans serveur.

Sam Dengler: La fonctionnalité PubSub gérée du service AWS IoT constitue également une bonne approche pour les applications basées sur un message, comme celle présentée dans l'article. Avec Elasticache (Redis), les clients qui utilisent Pub/Sub utilisent généralement également Redis en tant que magasin de données pour d'autres cas d'utilisation tels que la mise en cache, les classements, etc. Cela dit, vous pouvez également utiliser ElastiCache (Redis) avec le service AWS IoT. en déclenchant une fonction AWS Lambda via le moteur de règles AWS IoT. En fonction de l'architecture de l'application à base de messages et de l'utilisation des données, une solution peut être plus adaptée que l'autre.

36
Quang Van

Découvrez AWS AppSync pour certaines de ces fonctionnalités temps réel et hors connexion à l'aide de différentes sources de données, y compris la recherche et le calcul de bases de données.

12
Richard

On dirait qu'AWS Serverless est l'alternative la plus adaptée.

Je me demandais aussi: AWS vs Firebase - est-ce même un combat loyal?

2
gandra404