Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
In diesem Dokument wird erläutert, wie Sie die Dienste und zugehörigen Ressourcen Ihrer Anwendung für App Engine strukturieren.
Verzeichnisstruktur
Jede Version Ihres App Engine-Dienstes ist in einer app.yaml
-Konfigurationsdatei definiert. Zum Bereitstellen einfacher Anwendungen muss mindestens die Datei app.yaml
definiert werden. Die Datei app.yaml
dient als Deployment-Deskriptor und definiert den Skalierungstyp sowie die Laufzeit, den Handler und andere Ressourceneinstellungen für eine bestimmte Version eines Dienstes. Wenn Sie mehrere Versionen eines Dienstes bereitstellen, können Sie mehrere YAML-Dateien mit der jeweiligen Konfiguration Ihrer Versionen im selben Verzeichnis erstellen.
Für jeden Dienst können Sie separate Verzeichnisse im Stammverzeichnis Ihrer Anwendung erstellen, wenn Sie lokal arbeiten. Wird die Anwendung über ein Versionskontrollsystem (Version Control System, VCS) wie GitHub gehostet, lässt sich diese auch so strukturieren, dass separate Verzeichnisse in einem Repository oder separate Repositories für jeden Dienst verwendet werden. Jedes Verzeichnis oder Repository sollte genau einen Dienst darstellen und neben dem zugehörigen Quellcode die Datei app.yaml
dieses Dienstes enthalten.
Sie haben die Möglichkeit, für jede app.yaml
-Datei Ihres Dienstes einen eindeutigen Namen anzugeben. So können Sie eine Konfigurationsdatei nach Ihrem Dienst benennen oder für die verschiedenen Versionen dieses Dienstes eindeutige Namen wie service1.yaml
oder app.standard.yaml
verwenden.
Die anderen optionalen Konfigurationsdateien sollten sich im Stammverzeichnis oder Repository des default
-Dienstes der Anwendung befinden. In diesen optionalen Konfigurationsdateien wie dispatch.yaml
, index.yaml
und cron.yaml
werden Einstellungen festgelegt, die für die ganze Anwendung gelten und nicht nur für einen bestimmten Dienst.
Beispiele
Das folgende Beispiel zeigt, wie eine lokal entwickelte Anwendung mit drei Diensten aussehen könnte. Die optionale Datei dispatch.yaml
wurde in das Stammverzeichnis dieser Anwendung eingefügt. Außerdem befinden sich im Stammverzeichnis drei Verzeichnisse, jeweils eins für jeden Dienst der Anwendung. Das Unterverzeichnis für service1
enthält die Quell- und Konfigurationsdateien für diesen Dienst. Auch service2
und service3
befinden sich in separaten Verzeichnissen, die die Dateien für den jeweiligen Dienst enthalten, wobei service3
allerdings zwei Versionen der YAML-Konfigurationsdatei umfasst:
Eine Anwendung mit einem einzigen Dienst enthält nur den default
-Dienst. Alle Dateien können im selben Verzeichnis des Stammverzeichnisses der Anwendung gespeichert sein. Im folgenden Beispiel wird die mögliche Struktur einer Anwendung mit einem einzigen Dienst veranschaulicht. Sie enthält die optionale Konfigurationsdatei dispatch.yaml
sowie die zwei Konfigurationsdateien service1.yaml
und service2.yaml
, die verschiedene Versionen dieses Dienstes darstellen:
Designaspekte zur Instanzverfügbarkeit
Hardware- oder Softwarefehler, die zu einer vorzeitigen Beendigung oder zu häufigen Neustarts von Instanzen führen, können ohne Vorwarnung auftreten und viel Zeit für die Behebung in Anspruch nehmen. Ihre Anwendung muss mit solchen Störungen zurechtkommen.
Hier sind einige Vorgehensweisen, um Ausfallzeiten durch Instanzneustarts zu vermeiden:
- Beschleunigen Sie den Neustart vorhandener Instanzen bzw. den Start neuer Instanzen.
- Erstellen Sie bei lang laufenden Berechnungen regelmäßig Prüfpunkte, damit Sie den Vorgang beim jeweiligen Status fortsetzen können.
- Ihre Anwendung sollte "zustandslos" sein. Es darf also nichts auf der Instanz gespeichert werden.
- Führen Sie Aufgaben mithilfe von Warteschlangen asynchron aus.
- Wenn Sie Ihre Instanzen für manuelle Skalierung konfigurieren:
- Verwenden Sie ein Load-Balancing-Modul für mehrere Instanzen.
- Konfigurieren Sie mehr Instanzen, als für die Verarbeitung des normalen Traffics erforderlich sind.
- Schreiben Sie eine Fallback-Logik, die im Cache gespeicherte Ergebnisse verwendet, wenn keine manuelle Skalierungsinstanz verfügbar ist.
Weitere Informationen zu Instanzen finden Sie unter Instanzverwaltung.
default
-Dienst
Jede App Engine-Anwendung enthält einen default
-Dienst. Sie müssen die ursprüngliche Version Ihrer Anwendung zuerst für den default
-Dienst bereitstellen, bevor Sie zusätzliche Dienste für Ihre Anwendung erstellen und bereitstellen können.
Dieser Standarddienst kann optional in der Datei app.yaml
mit der Einstellung service: default
angegeben werden.
Anfragen, die mithilfe Ihres Google Cloud-Projekts an die Anwendung gesendet werden, gehen an den default
-Dienst. Beispiel: https://PROJECT_ID.REGION_ID.r.appspot.com
. Weitere Informationen zum Ansteuern anderer Dienste finden Sie unter Kommunikation zwischen Diensten.
Optionale Konfigurationsdateien
Die folgenden Konfigurationsdateien steuern optionale Features, die für alle Dienste in einer einzelnen Anwendung gelten. In den folgenden Themen finden Sie Einzelheiten zu jedem dieser optionalen Features:
dispatch.yaml
überschreibt Standardregeln für Routing, indem eingehende Anfragen anhand des Pfads oder Hostnamens in der URL an einen bestimmten Dienst gesendet werdenindex.yaml
gibt an, welche Indexe Ihre Anwendung bei Verwendung von Datastore-Abfragen benötigt.cron.yaml
konfiguriert regelmäßig geplante Aufgaben, die zu festgelegten Zeiten oder in regelmäßigen Intervallen ausgeführt werden.
Überlegungen zu Daten- und Dateispeichern
Über App Engine können Sie ganz einfach auf andere Google Cloud-Dienste wie Datastore, Cloud SQL und Cloud Storage zugreifen.
Sie können auch eine externe oder Drittanbieter-Datenbank verwenden, wenn diese Datenbank von Ihrer Sprache unterstützt wird und über Ihre App Engine-Instanz zugänglich ist.
Weitere Informationen zum Speichern von Dateien in Google Cloud oder an einem externen Ort finden Sie unter Informationen zu Daten- und Dateispeichern.Für die Bereitstellung von statischen Inhalten stehen Ihnen außerdem verschiedene Optionen zur Wahl. So lässt sich der statische Inhalt der Anwendung direkt über diese Anwendung in App Engine bereitstellen oder auf einem Google Cloud-Dienst wie Cloud Storage hosten. Außerdem können Sie dafür ein Content Delivery Network (CDN) eines Drittanbieters verwenden. Weitere Informationen zum Bereitstellen statischer Inhalte finden Sie unter Statische Dateien bereitstellen.
Nächste Schritte
Wenn Sie mit mehreren Diensten arbeiten und diese gemeinsam bereitstellen möchten, finden Sie weitere Informationen unter Mehrere Dienste bereitstellen.