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

Je suis en train de travailler sur un nouveau projet de jeu, au moment qui sera composé de Réagir Natif front-end et un Lambda de base de back-end. L'application nécessite un certains temps réel des fonctionnalités telles que l'utilisateur active les dossiers, geofencing, etc.

Je regardais Firebase en temps réel de la Base de données qui ressemble à un très élégant solution en temps réel des données de synchronisation, mais je ne pense pas que AWS a rien tout à fait comme elle.

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

Option 1: AWS IoT de Messagerie sur les WebSockets

Celui-ci est tout à fait évident, géré WebSockets connexion par le biais de l'IoT SDK. Je pensais déclenchement Lambdas en réponse à entrante et sortante des événements et il suffit d'utiliser les WebSockets que le temps réel de la couche, la réalisation sur mesure de la logique de gestion sur le client d'application comme vous le feriez habituellement.

L'inconvénient à cela, au moins par rapport à Firebase, c'est que je vais avoir à gérer les données dans les événements de moi-même qui va ajouter une autre couche de gestion sur le dessus des WebSockets et devront être normalisées avec l'API de la couche de données dans l'application des magasins.

Pour:

  • Évolutive bi-directionnelle en temps réel de la connexion

Contre:

  • Fonctionne uniquement lorsque l'application est ouverte
  • Structure du Message doit être mis en œuvre
  • Plusieurs couches de transport pour être géré

Option 2: Push-déclenché re-chercher

Une autre option est d'utiliser les notifications push en temps réel déclenche mais l'utilisation régulière de la requête HTTP à la Passerelle API à réellement obtenir la mise à jour de la charge utile.

J'aime cette approche, car il colle à une seule couche de transport et une source unique de vérité pour l'état de l'application. Il sera également déclencher des mises à jour lorsque l'application n'est pas ouverte, car ce sont Notifications Push.

L'inconvénient est que c'est beaucoup de travail personnalisé avec potentiellement difficile mappages entre les notifications push pour les données doivent être récupérées.

Pour:

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

Contre:

  • Plus de solution personnalisée
  • Impliquera beaucoup plus de requêtes HTTP globale

Option 3: Cognito Sync
C'est nouvelles pour moi, et je ne sais pas si ça peut être interfacé avec le serveur.

Cognito de Synchronisation permet à l'utilisateur de l'état de synchronisation. à travers les dispositifs complète avec prise en charge hors connexion et fait partie de la Cognito SDK qui je vais être en utilisant de toute façon. Il ressemble exactement à ce que je cherche mais impossible de trouver des preuves concluantes pour déterminer si il est possible de modifier, ou "détente", les mises à jour à partir d'AWS et pas seulement de l'un des appareils.

Pour:

  • Fournit une abstraction de données en temps réel modèle
  • Connecté à Cognito enregistrements d'utilisateur OOTB

Contre:

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

Je me demandais si quelqu'un a de l'expérience en temps réel sur AWS dans le cadre d'un Lambda-architecture et si vous avez un avis sur ce qui est la meilleure façon de procéder?

  • Avez-vous envisagé de mettre en œuvre le jeu dans un Firebase web app, par exemple à l'aide de ReactFire, au lieu de la mise en œuvre de "Firebase fonctionnalités" sur AWS?
  • J'ai, mais nous sommes à l'utilisation de nombreux services AWS fournit dans le cadre de notre infrastructure et de Firebase ne résout qu'à la couche de transport, le reste est mieux géré par AWS dans ce cas, sinon ReactFire serait un excellent choix.
  • Vous ne savez pas si c'est applicable à votre cas d'utilisation, mais Elasticache Redis a PubSub service que vous pourriez utiliser. Beaucoup de logique personnalisée tho, probablement.
  • Cognito la Synchro est bonne pour l'utilisateur personnalisé stockage des données et vous pouvez utiliser AWS Lambda de déclenchement, ce qui fonctionne très bien pour votre cas d'utilisation.
  • J'ai trouvé ce google cloud article comparant AWS Mobile Hub et Firebase très utile: cloud.google.com/docs/compare/aws/mobile
InformationsquelleAutor BarakChamo | 2016-09-20