App Engine-Umgebung auswählen

Sie können Ihre Anwendungen in App Engine in der flexiblen Umgebung oder der Standardumgebung ausführen. Sie haben außerdem die Möglichkeit, beide Umgebungen gleichzeitig für Ihre Anwendung zu verwenden, damit Ihre Dienste von den Vorteilen beider Umgebungen profitieren.

App Engine-Umgebungen

App Engine eignet sich gut für Anwendungen, die mit einer Mikrodienstarchitektur entworfen wurden, insbesondere, wenn Sie sich für die Verwendung beider Umgebungen entscheiden. In den folgenden Abschnitten erfahren Sie, welche Umgebung den Anforderungen Ihrer Anwendung am besten entspricht.

Kriterien für die Auswahl der Standardumgebung

Anwendungsinstanzen werden in einer Sandbox unter Verwendung der Laufzeitumgebung einer unten aufgeführten unterstützten Sprache ausgeführt.

Anwendungen, die eine schnelle Skalierung meistern müssen.

Die Standardumgebung ist optimal für Anwendungen mit folgenden Eigenschaften geeignet:

  • Der Quellcode wurde in einer bestimmten Version der unterstützten Programmiersprachen geschrieben:
    • Python 2.7, Python 3.7, Python 3.8
    • Java 8, Java 11
    • Node.js 8, Node.js 10 und Node.js 12
    • PHP 5.5, PHP 7.2, PHP 7.3 und PHP 7.4 (Beta)
    • Ruby 2.5, Ruby 2.6 (Beta) und Ruby 2.7 (Beta)
    • Go 1.11, Go 1.12, Go 1.13 und Go 1.14
  • Die Anwendung soll kostenlos oder mit sehr niedrigen Kosten ausgeführt werden, wobei Sie nur für die tatsächliche Nutzung bezahlen. Beispielsweise kann Ihre Anwendung auf 0 Instanzen skalieren, wenn kein Traffic vorhanden ist.
  • Es treten plötzliche und extreme Trafficspitzen auf, die eine sofortige Skalierung erfordern.

Kriterien für die Auswahl der flexiblen Umgebung

Anwendungsinstanzen werden in Docker-Containern auf virtuellen Maschinen (VMs) von Compute Engine ausgeführt.

Anwendungen, die konsistenten Traffic empfangen, regelmäßige Trafficschwankungen verzeichnen oder die Parameter für eine schrittweise Hoch- und Herunterskalierung erfüllen.

Die flexible Umgebung ist optimal für Anwendungen mit folgenden Eigenschaften geeignet:

  • Quellcode, der in einer der unterstützten Programmiersprachen geschrieben ist:
    Python, Java, Node.js, Go, Ruby, PHP oder .NET
  • Wird in einem Docker-Container ausgeführt, der eine benutzerdefinierte Laufzeit oder Quellcode enthält, der in anderen Programmiersprachen geschrieben wurde
  • Verwendet Frameworks, die nativen Code enthalten, oder hängt von diesen ab
  • Greift auf die Ressourcen oder Dienste Ihres Google Cloud-Projekts zu, die sich im Compute Engine-Netzwerk befinden.

Grundlegende Merkmale im Vergleich

In der folgenden Tabelle werden die Unterschiede zwischen den beiden Umgebungen zusammengefasst:

Option Standardumgebung Flexible Umgebung
Startzeit von Instanzen Sekunden Minuten
Maximales Zeitlimit für Anfragen Hängt von der Laufzeit und Art der Skalierung ab. 60 Minuten
Hintergrundthreads Ja, mit Einschränkungen Ja
Hintergrundprozesse Nein Ja
SSH-Fehlerbehebung Nein Ja
Skalierung Manuell, einfach, automatisch Manuell, automatisch
Skalierung auf null Ja Nein, mindestens eine Instanz
Auf lokales Laufwerk schreiben
  • Java 8, Java 11, Node.js, Python 3, PHP 7, Ruby, Go 1.11 und Go 1.12 oder höher haben Lese- und Schreibzugriff auf das Verzeichnis /tmp.
  • Python 2.7 und PHP 5.5 haben keinen Schreibzugriff auf das Laufwerk.
Ja, ephemerisch (Laufwerk wird bei jedem VM-Start initialisiert)
Laufzeitänderung Nein Ja (über Dockerfile)
Bereitstellungszeit Sekunden Minuten
Automatische direkte Sicherheitspatches Ja Ja (ohne Container-Image-Laufzeit)
Zugriff auf Google Cloud APIs und Google-Dienste wie Cloud Storage, Cloud SQL, Memorystore Aufgaben und andere. Ja Ja
WebSockets Nein.
Java 8, Python 2 und PHP 5 bieten eine proprietäre Sockets API (Beta), diese ist in neueren Standardlaufzeiten jedoch nicht verfügbar.
Ja
Unterstützung der Installation von Drittanbieter-Binärdateien
  • Ja für Java 8, Java 11, Node.js, Python 3, PHP 7, Ruby 2.5 (Beta), Go 1.11 und Go 1.12+.
  • Nein für Python 2.7 und PHP 5.5.
Ja
Ort Nordamerika, asiatisch-pazifischer Raum oder Europa Nordamerika, asiatisch-pazifischer Raum oder Europa
Preis Beruht auf Instanzstunden Beruht auf der Nutzung von vCPU, Arbeitsspeicher und nichtflüchtigen Speichern

Einen ausführlichen Vergleich der Umgebungen finden Sie in der Anleitung für Ihre Sprache: Python, Java, Go oder PHP.

Flexible Umgebung und Compute Engine im Vergleich

In der flexiblen App Engine-Umgebung gibt es folgende Unterschiede zu Compute Engine:

  • VM-Instanzen der flexiblen Umgebung werden wöchentlich neu gestartet. Dabei werden alle erforderlichen Betriebssystem- und Sicherheitsupdates durch die Verwaltungsdienste von Google angewendet.

  • Sie haben immer Root-Zugriff auf die VM-Instanzen in Compute Engine. Standardmäßig ist der SSH-Zugriff auf die VM-Instanzen in der flexiblen Umgebung deaktiviert. Wenn Sie möchten, können Sie den Root-Zugriff auf die VM-Instanzen Ihrer Anwendung aktivieren.

  • Codebereitstellungen können länger dauern, da Container-Images mithilfe des Cloud Build-Diensts erstellt werden.

  • Die geografische Region einer VM-Instanz der flexiblen Umgebung wird durch den Standort bestimmt, den Sie für die App Engine-Anwendung Ihres Cloudprojekts angeben. Die Verwaltungsdienste von Google sorgen dafür, dass die VM-Instanzen für eine optimale Leistung den gleichen Standort haben.

Von der Standardumgebung zur flexiblen Umgebung migrieren

Wenn Sie eine Anwendung in der Standardumgebung haben, ist es unter Umständen empfehlenswert, einige Dienste in die flexible Umgebung zu verschieben. Informationen hierzu finden Sie in den Empfehlungen für Python, Java, Go und PHP.

Wie Sie bestimmte Dienste migrieren ist den Anleitungen für Python, Java, Go und PHP.