it-swarm.com.de

Wann sollten Sie App Engine anstelle von Cloud-Funktionen auswählen?

Entschuldigung, wenn dies eine naive Frage ist, aber ich habe eine Reihe von Gesprächen von Google-Mitarbeitern gesehen und verstehe immer noch nicht, warum ich AE anstelle von CF verwenden sollte?

Wenn ich es richtig verstanden habe, besteht das gesamte Konzept dieser beiden Dienste darin, eine "Microservice-Architektur" aufzubauen.

  • sowohl CF als auch AE sind zustandslos
  • beide nehmen an, während eines begrenzten Zeitraums ausgeführt zu werden
  • beide können mit dbs und anderen gcp apis interagieren.

AE muss jedoch in einen eigenen Server eingebunden werden. Grundsätzlich nutzt es eine Menge Komplexität zusätzlich zu den gleichen Funktionen wie CF. Also, wann sollte ich es anstelle von CF verwenden?

37
stkvtflw

Cloud-Funktionen (CFs) und Google App Engine (GAE) sind unterschiedliche Tools für unterschiedliche Aufgaben. Die Verwendung des richtigen Werkzeugs für den Job ist normalerweise eine gute Idee.

Das Einschlagen eines Nagels mit einer Zange ist zwar möglich , jedoch nicht so bequem wie das Einschlagen eines Hammers. Ähnlich könnte das Erstellen einer komplexen App mit CFs möglich sein , aber das Erstellen mit GAE wäre definitiv praktischer.

CFs haben im Vergleich zu GAE mehrere Nachteile (natürlich im Zusammenhang mit der Erstellung komplexerer Anwendungen):

  • sie sind begrenzt auf Node.JS, Python und Go. GAE unterstützt mehrere andere gängige Programmiersprachen
  • sie sind wirklich auf geringes Gewicht ausgelegt Standalone Funktionalität, und der Versuch, komplexe Anwendungen mit solchen Komponenten zu erstellen, wird schnell "umständlich". Ja, der Inter-Relationship-Kontext für jede einzelne Anforderung muss auf GAE ebenso wiederhergestellt werden. Nur GAE profitiert von bequemeren Methoden, die auf CFs nicht verfügbar sind. Zum Beispiel die Verwaltung von Benutzersitzungen, wie in anderen Kommentaren erläutert
  • GAE-Apps haben einen App-Kontext, der über einzelne Anforderungen hinweg Bestand hat, CFs haben das nicht. Ein solcher Kontext macht den Zugriff auf bestimmte Google-Dienste für GAE-Apps effizienter/leistungsfähiger (oder sogar möglich), nicht jedoch für CFs. Zum Beispiel zwischengespeichert.
  • die Verfügbarkeit des App-Kontexts für GAE-Apps kann effizientere/leistungsfähigere Client-Bibliotheken für andere Services unterstützen, die nicht mit CFs arbeiten können. Beispielsweise kann der Zugriff auf den Datenspeicher mithilfe der Clientbibliothek ndb (nur für Standard-env GAE python apps) verfügbar) effizienter/performanter sein als mithilfe der generischen Clientbibliothek für den Datenspeicher.
  • GAE kann kostengünstiger sein, da der "Großhandelspreis" (basierend auf den Instanzenstunden, unabhängig davon, wie viele Anfragen eine bestimmte Instanz bearbeitet) im Vergleich zu den "Einzelhandelspreisen" für CFs (bei denen jeder Aufruf separat berechnet wird) liegt.
  • antwortzeiten können für GAE-Apps in der Regel kürzer sein als für CFs, da in der Regel die App-Instanz, die die Anforderung verarbeitet, bereits ausgeführt wird.
    • der GAE-App-Kontext muss nicht geladen/wiederhergestellt werden, er ist bereits verfügbar, CFs müssen ihn laden/wiederherstellen
    • der Bearbeitungscode ist (meistens) bereits geladen, der Code von CFs muss noch geladen werden. Ich bin mir nicht sicher, ob das stimmt, aber es hängt von der zugrunde liegenden Implementierung ab.
51
Dan Cornilescu

App Engine eignet sich besser für Anwendungen mit zahlreichen Funktionen, die sich auf unterschiedliche Weise (oder sogar unabhängig davon) verhalten, während Cloud-Funktionen speziell Einzweckfunktionen sind, die auf bestimmte Ereignisse reagieren und bestimmte Aktionen ausführen.

App Engine bietet zahlreiche Sprachoptionen und mehr Verwaltungsoptionen, während Cloud-Funktionen in diesen Bereichen eingeschränkt sind.

Sie könnten Cloud-Funktionen auf App Engine leicht replizieren, aber das Replizieren einer App Engine-Anwendung in großem Maßstab mit einer Reihe diskreter Could-Funktionen wäre kompliziert. Beispielsweise basiert das Backend von Spotify auf App Engine.

Dies lässt sich auch so formulieren, dass ein Start mit einem komplexeren System wie App Engine bei einer sehr großen Anwendung zu einer Codebasis führen kann, die weniger komplex oder zumindest einfacher zu verwalten oder zu verstehen ist.

Letztendlich laufen beide auf einer ähnlichen zugrunde liegenden Infrastruktur bei Google, und Sie müssen entscheiden, welche für die jeweilige Aufgabe geeignet ist. Darüber hinaus hindert Sie nichts daran, Elemente aus beiden in einem einzigen Projekt zu mischen.

13
Cameron Roberts