2016-05-26 16 views
29

Ich versuche zu entscheiden, welche Option zu gehen. (oder eine andere, wenn es besser ist) Dies ist für eine Messaging-App, wo es große Anzahl von Benachrichtigungen und Datenbank-Schreibvorgänge gibt.Google App Engine vs Firebase

Option 1 - Google App Engine mit Cloud Endpoints und Cloud Datastore
Vorteile:

  • der Lage, eine API, um den Weg zu bauen Ich mag würde.
  • Scalable

Nachteile:

  • Mehr Arbeit ein Meldesystem zu implementieren. (Was wird am Ende seiner Firebase Cloud Messaging)

Option 2 - Firebase
Vorteile:

  • Lage, die Firebase-Datenbank zu verwenden, Firebase Benutzerauthentifizierung, Firebase Cloud Messaging (Mitteilungen)
  • Detaillierte Nutzungsstatistiken für alle Geräte

Nachteile:

  • Nein API

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

Antwort

49

Als erstes werfen Sie einen Blick auf das Diagramm here aus den Google-Dokumenten für einen guten Vergleich und Kontrast der verschiedenen Backend-Dienste für mobile Apps, die sie anbieten. Hier ist der Plan:

enter image description here

Meine persönliche Meinung sind (aktualisiert):

Option 1 - Google App Engine mit Cloud Endpoints und Cloud Datastore
Vorteile:

  • Sie werden viel mehr über das beruhigende Muster lernen, indem Sie Ihre eigene API schreiben. Sie werden auch gezwungen sein zu lernen, wie man erholsame Api-Anrufe (entweder mit iOS oder Android) macht und das ist eine sehr wertvolle Fähigkeit in der Industrie. Firebase macht alles für dich und du wirst dieses Zeug nie lernen.
  • Sie müssen es selbst schreiben, aber Sie können wirklich kreativ mit Ihren API-Methoden und Google Cloud Messaging und der Art der Methoden, die Sie erstellen. 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 verschiedene Leute haben unterschiedliche Bedürfnisse.

Nachteile:

  • Es braucht mehr Arbeit und Ihren Kopf um Datenspeicher Verpackung kann auf den ersten hart sein. Es ist nicht wie eine relationale Datenbank wie SQL.
  • Auch ich fühle, 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 so lange brauchen.
  • Eine Sache, die für neue Anwendungen lästig ist, ist die automatische Skalierung in GAE. Lange Rede, kurzer Sinn, wenn niemand deine API ca. 15 Minuten lang anstößt, sind alle Instanzen abgeschaltet. Sobald ein neuer Aufruf erfolgt ist, dauert es sehr lange, bis eine Instanz gesichert wird und die API-Methode ausgeführt wird. Dies kann für neue Apps störend sein, da neue Benutzer möglicherweise feststellen, dass mit der App etwas nicht stimmt und sie daher möglicherweise nicht mehr verwendet wird. Man kann zwar manuell skalieren, aber das kostet Geld, um ständig eine Instanz zu haben (ab diesem Zeitpunkt schreibe ich etwa 27 $/Monat aus meinen abgerechneten Apps). Sehen Sie meinen Beitrag hier für weitere Informationen zu diesem Thema und eine solution Ich kam mit.

Option 2 - Firebase
Vorteile:

  • Es wird einfach für Anfänger zu verwenden, und es gibt reichlich tutorials/Kurse auf Firebase die beliebtesten Dinge, die Sie tun wollen Senden Sie Push-Benachrichtigungen und synchronisieren Sie Daten.
  • Im Gegensatz zu GAE ist es schnell out of the box. Keine feuern Instanzen. Das macht es ideal für neue Apps, die mit ihren schnellen Daten die Nutzer beeindrucken wollen.
  • Sie können die komplizierten Dinge wie Adapter (Android) und Netzwerk (in mobilen Apps) lernen und sich auf die Firebase-Klassen verlassen. Vielleicht ist es ein bisschen mehr Noob freundlich? Auch hier ist die Dokumentation groß und out-of-the-box. Ich denke, es gibt weniger Chancen, sich in den Fuß zu schießen, indem ineffiziente Abfragen geschrieben werden.

Nachteile:

  • Firebase ist schwer auf den Client-Code. Wenn Sie eine Android- und eine iOS-App benötigen, müssen Sie viel Client-Code für beide schreiben. In GAE wird viel von dieser Logik in der GAE-App abstrahiert. Dies kann jedoch ein Vorteil sein, wenn Sie nicht wirklich Datenbankadministratoren in Ihrer App benötigen 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 geht ... Wo Facebook angekündigt hat, dass sie es nicht mehr unterstützen werden. Das wäre echt scheiße! Sie wären bei Firebase eingesperrt und hätten keine Programmierkenntnisse darüber entwickelt, wie Sie eine erholsame API erstellen können. Aufgrund der hohen Investitionen von Google in Firebase und der Aktualisierung von GCM auf Firebase Cloud Messaging ist klar, dass sie große Pläne für Firebase haben und es nirgendwo hin geht. Ich denke also nicht, dass dies ein "Betrug" ist, aber behalten Sie es im Hinterkopf?

Lesen Sie mehr in den Link für möglicherweise kombinieren sie.

+0

Vielen Dank, ich lehne mich an die Option 1, weil es so sein wird, wie ich es alles zusammen arbeiten will. – iam10k

+0

Also können wir nicht die PHP Mail API in Firebase als in GAE verfügbar verwenden? –

32

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

Hier ist der Firebase price 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 hart. Ja, diese Dienste sind natürlich nicht so allgemein wie Infrastruktur und SQL, aber sie scheinen nah genug zu sein, dass die Preise wettbewerbsfähig bleiben.

Firebase, auf der anderen Seite, ist ein Premium-Service, der mit anderen Backend-Diensten wie Parse konkurriert, und sobald Sie sich entscheiden, es zu verwenden, denke ich, wäre es sehr schwierig zu wechseln. Es ist keine Überraschung, dass Google Firebase so stark vorantreibt - sie werden wahrscheinlich eine Menge Geld damit verdienen, da sie es mit solch einer Prämie bezahlen können.

Meiner Meinung nach ist Firebase eine gute Wahl für kleine Mengen und margenstarke Dienste, aber wenn Sie vorhaben, einen typischen, verbraucherorientierten, werbeunterstützten Dienst zu erstellen, der auf große Volumen angewiesen ist Geld verdienen, dann können die Kosten von Firebase Ihren Profit zunichte machen.

2017-10 Zusatz:

ich sah wieder Firebase mit der jüngsten Version von Firestor.

Ich denke, es ist wichtig, ein anderes Problem zu kennen: Firestore für eine Android-App zu verwenden bedeutet, die Firebase-Client-Bibliothek zu verwenden, die stark von Google Play Services abhängig ist Amazon Fire Tablets und (glaube ich) den gesamten chinesischen Markt.

+2

Das ist ein toller Punkt. Obwohl das neue On-Demand-Angebot, das Firebase bietet, dem GAE besser entspricht, wird es immer noch teurer. – iam10k

+1

Sehr guter Punkt im letzten Absatz! GAE ist definitiv billiger, wenn es um große Volumen geht, insbesondere mit dem neuen Preisplan für Datenspeicher. – Micro

+0

Danke, dass du diesen Punkt erwähnt hast, du hast es perfekt ausgedrückt (Y) – SoliQuiD

1

Eine Sache, die ich kürzlich gelernt habe, während ich mich bemühe, eine Lösung dafür zu finden, ist, dass Firebase keine Arbeit um die Benachrichtigung von Gerät zu Gerät bietet; während es Server zu Gerät Push-Benachrichtigung bietet und es ist ziemlich einfach einzurichten. Aber der frühere Mangel an Funktionen ist sehr wichtig und es gibt eine Verschwörungstheorie, die darauf abzielt, Sie dazu zu bringen, andere Google-Produkte zu verwenden.

Oder vielleicht, da es zuerst nicht entwickelt wurde, behielten sie es gleich. Ich habe festgestellt, dass App-Engine eine Möglichkeit ist, die Firebase und die Geräte für diesen Zweck zu verbinden, und so würde ich in Richtung auf die Kombination von Firebase und anderen Google-Produkten in diesem Fall app engine neigen. Wenn Sie mehr Back-End-Verarbeitung wie Bildverarbeitung usw. planen, dann schauen Sie sich sicherlich app engine and compute engine an, was in Firebase integriert werden könnte, was zu einer hypothetisch leistungsfähigen Backend-Lösung führt.