webentwicklung-frage-antwort-db.com.de

Google App Engine gegen Firebase

Ich versuche zu entscheiden, welche Option ich wählen möchte. (oder eine andere, wenn es besser ist) Dies ist für eine Messaging-App, bei der eine große Anzahl von Benachrichtigungen und Datenbankschreibvorgängen erfolgt.

Option 1 - Google App Engine verwendet Cloud-Endpunkte und Cloud-Datenspeicher
Vorteile:

  • Kann eine API nach meinen Wünschen erstellen.
  • Skalierbar

Nachteile:

  • Mehr Arbeit bei der Implementierung eines Benachrichtigungssystems. (Was am Ende Firebase Cloud Messaging sein wird)

Option 2 - Firebase
Vorteile:

  • Verwendung der Firebase-Datenbank, Firebase-Benutzerauthentifizierung, Firebase Cloud Messaging (Benachrichtigungen)
  • Detaillierte Nutzungsstatistik für alle Geräte

Nachteile:

  • Keine API

Option - Wäre es möglich, Google Cloud Endpoints und Firebase zu kombinieren?

45
iam10k

Schauen Sie sich zunächst die Tabelle hier in den Google-Dokumenten an, um einen guten Vergleich und Kontrast der verschiedenen Backend-Dienste für mobile Apps zu erhalten. Hier ist die Grafik:

enter image description here

Meine persönlichen Meinungen sind (aktualisiert):

Option 1 - Google App Engine mit Cloud-Endpunkten und Cloud-Datenspeicher
Vorteile:

  • Sie werden viel mehr über das erholsame Schreiben Ihrer eigenen API erfahren. Sie werden auch gezwungen sein zu lernen, wie man erholsame API-Anrufe tätigt (entweder mit iOS oder Android), und das ist eine sehr wertvolle Fähigkeit in der Branche. Firebase erledigt sozusagen alles für Sie und Sie werden dieses Zeug nie lernen.
  • Sie müssen es selbst schreiben, aber Sie können mit Ihren API-Methoden und Google Cloud Messaging und den von Ihnen erstellten Methoden wirklich kreativ werden. Sie können wirklich alles tun und sich mit jeder Datenbank verbinden (z. B. MySQL, SQL Server, Datastore). In Firebase müssen Sie ihre json-basierte Datenbank verwenden. Ich empfehle nicht, eine SQL-Datenbank für eine App zu verwenden, aber unterschiedliche Benutzer haben unterschiedliche Anforderungen.

Nachteile:

  • Es erfordert mehr Arbeit und es kann zunächst schwierig sein, den Kopf in den Datenspeicher zu stecken. Es ist nicht wie eine relationale Datenbank wie SQL.
  • Ich habe auch das Gefühl, dass es einige Bereiche gibt, in denen Sie sich "in den Fuß schießen" können, indem Sie Methoden und Abfragen erstellen, die sehr ineffizient sind und daher viel Zeit in Anspruch nehmen.
  • Was für neue Apps ärgerlich ist, ist die automatische Skalierung in GAE. Um es kurz zu machen: Wenn 15 Minuten lang niemand auf Ihre API zugreift, werden alle Instanzen abgeschaltet. Sobald ein neuer Aufruf erfolgt ist, dauert es erheblich, eine Instanzsicherung auszulösen und Ihre API-Methode auszuführen. Dies kann für neue Apps ärgerlich sein, da neue Benutzer möglicherweise Probleme mit der App haben und diese möglicherweise nicht mehr verwenden. Sie können manuell skalieren, aber dann kostet es Geld, immer über eine Instanz zu verfügen (derzeit werden von meinen abgerechneten Apps etwa 27 US-Dollar pro Monat berechnet). In meinem Beitrag hier finden Sie weitere Informationen zu diesem Problem und ein Lösung , das ich mir ausgedacht habe.

Option 2 - Firebase
Vorteile:

  • Es ist für Anfänger einfach zu bedienen und es gibt zahlreiche Tutorials/Kurse auf Firebase, um die gängigen Aufgaben wie Push-Benachrichtigungen senden und Daten synchronisieren zu erledigen.
  • Im Gegensatz zu GAE ist es sofort einsatzbereit. Keine Startinstanzen. Dies macht es ideal für neue Apps, die Benutzer mit ihren schnellen Daten beeindrucken wollen.
  • Sie können damit umgehen, komplizierte Dinge wie Adapter (Android) und Netzwerke (in mobilen Apps) zu lernen, und sich einfach auf die Firebase-Klassen verlassen. Vielleicht ist es ein bisschen mehr noob freundlich? Auch hier ist die Dokumentation großartig und ich denke, es gibt weniger Chancen, sich durch das Schreiben ineffizienter Abfragen in den Fuß zu schießen.

Nachteile:

  • Firebase ist sehr umfangreich im Client-Code. Wenn Sie eine Android und eine iOS-App möchten, müssen Sie für beide eine Menge Client-Code schreiben. In GAE wird ein Großteil dieser Logik in der GAE-App abstrahiert. Dies kann jedoch von Vorteil sein, wenn Sie keine Datenbankadministratoren in Ihrer App haben möchten und nur iOS + Android-Entwickler haben, die Firebase kennen. Aber für mich war das die große Abzweigung.
  • Was ist, wenn Firebase den Weg von Parse.com einschlägt? Wo Facebook ankündigte, wird es nicht mehr unterstützt. Das wäre echt scheiße! Sie wären an Firebase gebunden und hätten keine Programmierkenntnisse darüber, wie Sie eine erholsame API erstellen können. Aufgrund der hohen Investitionen von Google in Firebase und des Upgrades von GCM auf Firebase Cloud Messaging ist jedoch klar, dass sie große Pläne für Firebase haben und keine Fortschritte erzielen werden. Ich denke also nicht, dass dies als "Betrug" gilt, aber denken Sie daran?

Lesen Sie mehr im Link, um sie möglicherweise zu kombinieren.

68
Micro

Ich bin verwundert, dass viele Diskussionen über Firebase (einschließlich der obigen Frage und Antwort) nicht erwähnen, was für mich ein sehr wichtiger Unterschied ist: der Preis.

Hier ist der Firebase-Preis Zeitplan.

Hier sind die Datastore und GAE Preise.

Es kann schwierig sein, diese zu vergleichen, aber meine Interpretation ist, dass Firebase sehr teuer ist.

Und das sollte nicht überraschen. GAE und Datenspeicher müssen mit ähnlichen Diensten von Amazon, Microsoft usw. konkurrieren, und die Konkurrenz ist groß. Ja, diese Dienste sind natürlich nicht so allgemein wie Infrastruktur und SQL, aber sie scheinen nahe genug zu sein, dass die Preise wettbewerbsfähig bleiben.

Firebase hingegen ist ein Premium-Dienst, der mit anderen Back-End-Diensten wie Parse konkurriert, und wenn Sie sich einmal für die Verwendung entscheiden, ist der Wechsel meiner Meinung nach sehr schwierig. Es sollte nicht überraschen, dass Google Firebase so stark vorantreibt - sie werden wahrscheinlich eine Menge Geld damit verdienen, da sie es mit einer solchen Prämie bezahlen können.

Meiner Meinung nach ist das Ergebnis, dass Firebase eine gute Wahl für Dienste mit geringem Volumen und hohen Gewinnspannen ist. Wenn Sie jedoch vorhaben, einen typischen, verbraucherorientierten, werbefinanzierten Dienst zu erstellen, der von einem hohen Volumen abhängt, um Geld zu verdienen Die Kosten von Firebase können Ihren Profit zerstören.

2017-10 Ergänzung :

Ich habe mir Firebase mit der jüngsten Veröffentlichung von Firestore noch einmal angesehen.

Ich denke, es ist wichtig, sich eines anderen Problems bewusst zu sein: Wenn Sie Firestore für eine Android App verwenden, bedeutet dies, dass Sie die Firebase-Clientbibliothek verwenden, die stark von Google Play Services abhängt, für die Sie also keine Bereitstellung durchführen können Geräte, die nicht von Google stammen, einschließlich Amazon Fire-Tablets und (glaube ich) des gesamten chinesischen Marktes.

46
Tom

Eine Sache, die ich kürzlich erfahren habe, als ich darum kämpfe, eine Lösung dafür zu finden, ist, dass Firebase keine Umgehung der Geräte-zu-Geräte-Benachrichtigung bietet. Die Push-Benachrichtigung für Server und Geräte ist recht einfach einzurichten. Aber der frühere Mangel an Funktionen ist sehr wichtig und es gibt eine Verschwörungstheorie, die darauf zurückzuführen ist, dass sie versuchen, Sie dazu zu bewegen, auch andere Google-Produkte zu verwenden.

Oder vielleicht, weil es anfangs nicht entwickelt war, wurde es beibehalten. Ich habe herausgefunden, dass App Engine eine Möglichkeit ist, die Firebase und die Geräte für diesen Zweck zu verbinden, und daher würde ich in diesem Fall eher Firebase und andere Google-Produkte kombinieren App Engine . Wenn Sie vorhaben, mehr Back-End-Prozesse wie die Bildverarbeitung usw. durchzuführen, prüfen Sie App-Engine und Compute-Engine , welche in Firebase integriert werden können, was zu einer hypothetisch leistungsfähigen Back-End-Lösung führt.

1
TheeBen