Was wäre das AWS-Äquivalent zur Firebase-Echtzeitdatenbank?

83

Ich arbeite gerade an einem neuen Spielprojekt, das aus einem React Native-Frontend und einem Lambda-basierten Backend bestehen wird. Die App erfordert einige Echtzeitfunktionen wie aktive Benutzerdatensätze, Geofencing usw.

Ich habe mir die Echtzeitdatenbank von Firebase angesehen, die wie eine wirklich elegante Lösung für die Echtzeit-Datensynchronisierung aussieht, aber ich glaube nicht, dass AWS so etwas hat.

Die 3 Optionen, die ich mir für "serverlose" Echtzeit vorstellen könnte, wenn nur AWS-Services verwendet werden, sind:

Option 1: AWS IoT Messaging über WebSockets

Dies ist ziemlich offensichtlich, eine verwaltete WebSockets-Verbindung über das IoT SDK. Ich dachte daran, Lambdas als Reaktion auf eingehende und ausgehende Ereignisse auszulösen und einfach WebSockets als Echtzeitschicht zu verwenden, um wie gewohnt eine benutzerdefinierte Verarbeitungslogik auf dem App-Client zu erstellen.

Der Nachteil, zumindest im Vergleich zu Firebase, ist, dass ich die Daten in den Ereignissen selbst verarbeiten muss, wodurch zusätzlich zu WebSockets eine weitere Verwaltungsebene hinzugefügt und mit der API-Datenschicht in den Stores der Anwendung standardisiert werden muss .

Vorteile:

  • Skalierbare bidirektionale Echtzeitverbindung

Nachteile:

  • Funktioniert nur, wenn die App geöffnet ist
  • Die Nachrichtenstruktur muss implementiert werden
  • Mehrere zu verwaltende Transportschichten

Option 2: Push-ausgelöstes erneutes Abrufen

Eine andere Möglichkeit besteht darin, Push-Benachrichtigungen als Echtzeit-Trigger zu verwenden, aber eine reguläre HTTP-Anforderung an API Gateway zu verwenden, um die aktualisierten Nutzdaten tatsächlich abzurufen.

Ich mag diesen Ansatz, weil er nur an einer Transportschicht und einer einzigen Wahrheitsquelle für den Anwendungsstatus haftet. Es werden auch Updates ausgelöst, wenn die App nicht geöffnet ist, da es sich um Push-Benachrichtigungen handelt.

Der Nachteil ist, dass dies eine Menge benutzerdefinierter Arbeit mit möglicherweise schwierigen Zuordnungen zwischen Push-Benachrichtigungen zu den Daten ist, die abgerufen werden müssen.

Vorteile:

  • Push-Benachrichtigungen funktionieren auch dann, wenn die App geschlossen ist
  • Eine einzige Quelle der Wahrheit, Transportschicht

Nachteile:

  • Die individuellste Lösung
  • Wird insgesamt viel mehr HTTP-Anfragen beinhalten

Option 3: Cognito Sync Dies ist für mich neuer und ich bin nicht sicher, ob es tatsächlich vom Server aus angeschlossen werden kann.

Cognito Sync bietet die Synchronisierung des Benutzerstatus. Geräteübergreifend mit Offline-Unterstützung und Teil des Cognito SDK, das ich sowieso verwenden werde. Es klingt wie das, wonach ich suche, konnte aber keine schlüssigen Beweise dafür finden, ob es möglich ist, Updates von AWS und nicht nur von einem der Geräte zu ändern oder "auszulösen".

Vorteile:

  • Bietet ein abstrahiertes Echtzeitdatenmodell
  • Verbunden mit Cognito-Benutzerdatensätzen OOTB

Nachteile:

  • Nicht sicher, ob von Lambdas aus geändert oder aktualisiert werden kann


Ich frage mich, ob jemand Erfahrung mit AWS in Echtzeit als Teil einer Lambda-basierten Architektur hat und ob Sie eine Meinung dazu haben, wie Sie am besten vorgehen können.

BarakChamo
quelle
Haben Sie darüber nachgedacht, das Spiel in einer Firebase-Web-App zu implementieren , z. B. mit ReactFire , anstatt "Firebase-Funktionen" in AWS zu implementieren?
Matsev
Ich habe, aber wir verwenden viele Dienste, die AWS als Teil unserer Infrastruktur bereitstellt, und Firebase löst nur die Transportschicht. Der Rest wird in diesem Fall besser von AWS erledigt, andernfalls wäre ReactFire eine großartige Option.
BarakChamo
Sie sind sich nicht sicher, ob dies für Ihren Anwendungsfall gilt, aber Elasticache Redis verfügt über einen PubSub-Dienst, den Sie verwenden können. Wahrscheinlich eine Menge benutzerdefinierter Logik.
Adam Owczarczyk
Cognito Sync eignet sich gut zum Speichern von benutzerdefinierten Daten durch Benutzer. Sie können damit den AWS Lambda-Trigger verwenden, der für Ihren Anwendungsfall absolut einwandfrei funktioniert.
Ankit Pise
Ich fand diesen Google Cloud-Artikel zum Vergleich von AWS Mobile Hub und Firebase sehr nützlich: cloud.google.com/docs/compare/aws/mobile
MatthewThomasGB

Antworten:

43

Ich habe dem AWS-Support eine ähnliche Frage gestellt, und dies war ihre Antwort.

Meine Frage an sie:

Wie sieht die Gruppe der AWS-Services aus (wenn dies möglich ist), damit sich DBaaS in Echtzeit wie Firebase im Browser anfühlt?

AWS Cognito scheint für Benutzerkonten großartig zu sein. Gibt es etwas Ähnliches für den WebSockets / Echtzeit-DB-Teil?

Ihre Antwort:

Bei Ihrer Frage ist Firebase dem AWS-Service AWS MobileHub am nächsten. Weitere Informationen zu mobilehub finden Sie weiter unten unter dem folgenden Link.

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

"AWS Cognito scheint für Benutzerkonten großartig zu sein. Gibt es etwas Ähnliches für den WebSockets / Echtzeit-DB-Teil?"

Amazon Dynamodb ist ein schneller und flexibler NoSQL-Datenbankdienst für alle Anwendungen, die eine konsistente einstellige Millisekunden-Latenz in jeder Größenordnung benötigen. Es ist eine vollständig verwaltete Cloud-Datenbank und unterstützt sowohl Dokument- als auch Schlüsselwertspeichermodelle. Das flexible Datenmodell, die zuverlässige Leistung und die automatische Skalierung der Durchsatzkapazität eignen sich hervorragend für Mobil-, Web-, Gaming-, Ad-Tech-, IoT- und viele andere Anwendungen.

Amazon Dynamodb kann mit Amazon DynamoDB Accelerator (DAX) weiter optimiert werden. Hierbei handelt es sich um einen vollständig verwalteten, hochverfügbaren In-Memory-Cache, der die Antwortzeiten von Amazon DynamoDB von Millisekunden auf Mikrosekunden reduzieren kann, selbst bei Millionen von Anforderungen pro Sekunde.

Weitere Informationen finden Sie in der folgenden Dokumentation.

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

Sollten Sie weitere Fragen haben, zögern Sie bitte nicht, mich zu informieren.

Vielen Dank.

Freundliche Grüße,

Tayo O. Amazon Webdienste

Besuchen Sie das AWS Support Knowledge Center, eine Wissensdatenbank mit Artikeln und Videos, die Kundenfragen zu AWS-Services beantworten: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Auch als ich diese Antwort recherchierte, fand ich das auch interessant:

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

Die Kommentare zu diesem Artikel sind ebenfalls interessant.

Jacob Wakeem: Welchen Vorteil hat dieser Ansatz gegenüber der Verwendung von aws iot? Es scheint, dass iot über all diese Funktionen verfügt, ohne eine einzige Codezeile zu schreiben, und mit einer Architektur ohne Server.

Sam Dengler: Die verwaltete PubSub-Funktion im AWS IoT-Service ist auch ein guter Ansatz für nachrichtenbasierte Anwendungen, wie im Artikel gezeigt. Mit Elasticache (Redis) verwenden Kunden, die Pub / Sub verwenden, Redis normalerweise auch als Datenspeicher für andere Anwendungsfälle wie Caching, Bestenlisten usw. Sie können ElastiCache (Redis) auch mit dem AWS IoT-Dienst verwenden durch Auslösen einer AWS Lambda-Funktion über die AWS IoT Rules Engine. Abhängig davon, wie die nachrichtenbasierte Anwendung aufgebaut ist und wie die Daten genutzt werden, passt eine Lösung möglicherweise besser als die andere.

Quang Van
quelle
14

In AWS AppSync finden Sie einige dieser Echtzeit- und Offline-Funktionen unter Verwendung verschiedener Datenquellen, einschließlich Datenbanksuche und -berechnung.

Richard
quelle
6

AWS Amplify ist die moderne Antwort von AWS auf Firebase.

Der schnellste Weg, um mobile und Webanwendungen zu erstellen

AWS Amplify ist eine Entwicklungsplattform zum Erstellen sicherer, skalierbarer Mobil- und Webanwendungen. Sie können Benutzer auf einfache Weise authentifizieren, Daten und Benutzermetadaten sicher speichern, den selektiven Zugriff auf Daten autorisieren, maschinelles Lernen integrieren, Anwendungsmetriken analysieren und serverseitigen Code ausführen. Amplify deckt den gesamten Workflow für die Entwicklung mobiler Anwendungen ab, von der Versionskontrolle über das Testen von Codes bis hin zur Bereitstellung in der Produktion, und lässt sich problemlos von Tausenden von Benutzern auf zig Millionen mit Ihrem Unternehmen skalieren. Die Amplify-Bibliotheken und die CLI, die Teil des Amplify Framework sind, sind Open Source und bieten eine steckbare Oberfläche, mit der Sie Ihre eigenen Plugins anpassen und erstellen können.

Mahemoff
quelle
Ich habe es versucht. Sehr mangelhaft. Nicht empfehlen. Bleib beim Firestore. Amplify erwähnt nicht einmal die SLA (es ist pro Dienstkonto, wenn Sie keine Vereinbarung haben, sind es nur 99%, was schlecht ist) oder die maximalen Verbindungen oder wie es im Maßstab funktioniert. Arm. Außerdem gibt es kein Typescript-Plugin für serverseitige Inhalte wie firebase-admin.
Oliver Dixon
Amplify ist nicht, Amplify macht meiner Meinung nach alles kompliziert.
tim vor