Dieses Dokument bietet eine Unterstützung bei der Planung und beim Design der Bereitstellungsphase für die Migration zu Google Cloud. Nachdem Sie Ihre aktuelle Umgebung geprüft, die Migration zu Google Cloud geplant und Ihre Google Cloud-Basis erstellt haben, können Sie Ihre Arbeitslasten bereitstellen.
Dieses Dokument ist Teil der folgenden mehrteiligen Reihe zur Migration zu Google Cloud:
- Zu Google Cloud migrieren: Erste Schritte
- Zu Google Cloud migrieren: Arbeitslasten bewerten und erkennen
- Migrate to Google Cloud: Grundlage planen und erstellen
- Zu Google Cloud migrieren: Große Datasets übertragen
- Zu Google Cloud migrieren: Arbeitslasten bereitstellen (dieses Dokument)
- Zu Google Cloud migrieren: Von manuellen zu automatisierten Containerbereitstellungen migrieren
- Zu Google Cloud migrieren: Umgebung optimieren
- Zu Google Cloud migrieren: Best Practices zur Validierung eines Migrationsplans
- Zu Google Cloud migrieren: Kosten minimieren
Diese Grafik veranschaulicht den Migrationsprozess:
Die Bereitstellungsphase ist die dritte Phase der Migration zu Google Cloud, in der Sie einen Bereitstellungsvorgang für die Arbeitslasten definieren.
Dieses Dokument bietet nützliche Informationen, wenn Sie von einer lokalen Umgebung, einer privaten Hosting-Umgebung oder einem anderen Cloud-Anbieter eine Migration zu Google Cloud vornehmen oder die Möglichkeit einer Migration prüfen und untersuchen möchten, wie diese aussehen könnte.
In diesem Dokument lernen Sie die verschiedenen Arten von Bereitstellungsprozessen in der Reihenfolge ihrer Flexibilität, Automatisierung und Komplexität kennen und erfahren, anhand welcher Kriterien Sie einen für Ihren Anwendungsfall geeigneten Ansatz auswählen:
- Manuell bereitstellen
- Mit Tools zur Konfigurationsverwaltung (Configuration Management, CM) bereitstellen
- Mit Tools zur Containerorchestrierung bereitstellen
- Automatisch bereitstellen
Planen und entwerfen Sie die Bereitstellungsphase, bevor Sie die Arbeitslasten bereitstellen. Zuerst sollten Sie die verschiedenen Arten von Bereitstellungsprozessen kennenlernen, die Sie für die Arbeitslasten implementieren. Wenn Sie sich die Arten von Bereitstellungsprozessen angesehen haben, können Sie sich überlegen, ob Sie mit einem einfachen Prozess beginnen möchten und später zu einem komplexeren Prozess wechseln möchten. Dieser Ansatz kann schnellere Ergebnisse liefern. Er kann aber auch zu Beeinträchtigungen führen, wenn Sie zu einem erweiterten Prozess übergehen, da Sie sich des technisches Rückstaus annehmen müssen, der aus der Verwendung des einfacheren Prozesses resultiert. Wenn Sie beispielsweise von vollständig manuellen Bereitstellungen zu einer automatisierten Lösung wechseln, müssen Sie möglicherweise für Ihre Bereitstellungspipeline und Anwendungen Upgrades verwalten.
Es ist zwar möglich, entsprechend den Anforderungen der Arbeitslasten verschiedene Arten von Bereitstellungsprozessen zu implementieren, dieser Ansatz kann die Bereitstellungsphase jedoch ebenfalls komplexer machen. Wenn Sie verschiedene Arten von Bereitstellungsprozessen implementieren, können Sie von der zusätzlichen Flexibilität profitieren. Möglicherweise benötigen Sie jedoch auf die einzelnen Prozesse zugeschnittenes Fachwissen bzw. zugeschnittene Tools und Ressourcen, was mehr Aufwand für Sie bedeutet.
Manuell bereitstellen
Eine vollständig manuelle Bereitstellung stützt sich auf einen Bereitstellungs- und Konfigurationsprozess, der in keiner Weise automatisiert ist. Es existieren zwar möglicherweise Spezifikationen und Checklisten für jeden Schritt des Prozesses, aber diese Spezifikationen werden weder automatisch überprüft noch erzwungen. Da ein manueller Prozess von einer Person ausgeführt wird, ist er fehleranfällig, nicht wiederholbar und auch hinsichtlich der Leistung beschränkt.
Vollständig manuelle Bereitstellungsprozesse können beispielsweise dann sinnvoll sein, wenn Sie einen Test schnell in einer Sandbox-Umgebung instrumentieren müssen. Wenn Sie dagegen für einen minutenlangen Test einen strukturierten, automatisierten Prozess einrichten, kann das insbesondere in den frühen Phasen der Migration sehr zeitaufwendig sein, da Sie möglicherweise nicht die erforderlichen Kenntnisse der Tools und Praktiken haben, mit denen Sie einen automatisierten Prozess erstellen können.
Diese Einschränkung gilt nicht für Google Cloud. Bei Bare-Metal-Umgebungen, in denen die erforderlichen Management APIs fehlen, sind vollständig manuelle Bereitstellungen aber die einzige Möglichkeit. In diesem Fall können Sie keinen automatisierten Prozess implementieren, da die erforderlichen Schnittstellen fehlen. Wenn Sie eine virtualisierte Legacy-Infrastruktur haben, die keine Automatisierung unterstützt, müssen Sie möglicherweise ebenfalls einen vollständig manuellen Prozess implementieren.
Wir empfehlen, dass Sie eine vollständig manuelle Bereitstellung nur dann verwenden, wenn Sie keine andere Wahl haben.
Sie können einen vollständig manuellen Bereitstellungs- und Konfigurationsprozess mithilfe von Tools wie der Google Cloud Console, mit Cloud Shell, den Cloud APIs und dem Google Cloud CLI implementieren.
Mit Tools zur Konfigurationsverwaltung (Configuration Management, CM) bereitstellen
Mit CM-Tools können Sie eine Umgebung wiederholbar und kontrolliert konfigurieren. Diese Tools enthalten eine Reihe von Plug-ins und Modulen, die gängige Konfigurationsvorgänge für Sie implementieren. Mit diesen Tools können Sie sich auf den Endzustand konzentrieren, den Sie für die Umgebung erreichen möchten, anstatt die dafür erforderliche Logik zu implementieren. Für den Fall, dass die enthaltenen Vorgänge nicht ausreichen, haben CM-Tools häufig ein Erweiterungssystem, mit dem Sie eigene Module entwickeln können. Wenn möglich, sollten Sie jedoch versuchen, die vordefinierten Module und Plug-ins zu verwenden, um sich zusätzlichen Entwicklungs- und Wartungsaufwand zu ersparen.
CM-Tools bieten sich an, wenn Umgebungen konfiguriert werden müssen. Sie können sie aber auch zum Bereitstellen von Infrastruktur und zum Implementieren eines Bereitstellungsprozesses für die Arbeitslasten verwenden. Ein Prozess mit CM-Tools ist besser als ein vollständig manueller Konfigurations- und Bereitstellungsprozess, da er wiederholbar, kontrolliert und überprüfbar ist. Es gibt jedoch einige Nachteile, da CM-Tools nicht für Bereitstellungsaufgaben vorgesehen sind. In der Regel bieten sie keine integrierten Features, um eine komplexe Bereitstellungslogik zu implementieren, z. B. zum Erkennen und Verwalten von Unterschieden zwischen dem tatsächlichen und dem gewünschten Zustand der Infrastruktur oder für umfangreiche Bereitstellungsprozesse, z. B. Bereitstellungen ohne Ausfallzeiten oder Blau/Grün-Bereitstellungen. Sie können die fehlenden Features mithilfe der zuvor genannten Erweiterungspunkte implementieren. Diese Erweiterungen können zusätzlichen Aufwand verursachen und die Gesamtkomplexität des Bereitstellungsprozesses erhöhen, da Sie zum Entwerfen, Entwickeln und Warten einer benutzerdefinierten Bereitstellungslösung das erforderliche Fachwissen benötigen.
Sie können diese Art von Bereitstellungs- und Konfigurationsprozess mithilfe von Tools wie Ansible, Chef, Puppet und SaltStack implementieren.
Mit Tools zur Containerorchestrierung bereitstellen
Wenn Sie bereits in die Containerisierung Ihrer Arbeitslasten investiert haben oder dies planen, können Sie die Arbeitslasten mit einem Tool zur Containerorchestrierung bereitstellen.
Ein Tool zur Containerorchestrierung verwaltet die Infrastruktur Ihrer Umgebung und unterstützt viele Bereitstellungsvorgänge und Bausteine zum Implementieren der Bereitstellungslogik, die Sie verwenden können, wenn die integrierten Vorgänge und Bausteine nicht ausreichen. Mit diesen Tools können Sie sich darauf konzentrieren, mithilfe der bereitgestellten Mechanismen die eigentliche Bereitstellungslogik zu erstellen, anstatt sie implementieren zu müssen.
Tools zur Containerorchestrierung stellen auch Abstraktionen bereit, mit denen Sie Ihre Bereitstellungsprozesse so verallgemeinern können, dass sie für verschiedene zugrunde liegende Umgebungen verwendet werden können und Sie nicht für jede Umgebung mehrere Prozesse entwerfen und implementieren müssen. Zum Beispiel enthalten diese Tools normalerweise die Logik zum Skalieren und Upgraden von Bereitstellungen, sodass Sie diese nicht selbst implementieren müssen. Sie können diese Tools sogar verwenden, um die Bereitstellungsprozesse in Ihrer aktuellen Umgebung zu implementieren, und Sie können diese Prozesse dann in die Zielumgebung übertragen, da die Implementierung von Grund auf weitgehend gleich ist. Wenn Sie diese Tools frühzeitig einsetzen, gewinnen Sie Erfahrung im Verwalten von containerisierten Umgebungen. Das erleichtert Ihnen die Migration zur Google Cloud.
Sie setzen ein Tool zur Containerorchestrierung dann ein, wenn Ihre Arbeitslasten bereits containerisiert sind oder Sie diese in Zukunft containerisieren können und planen, in solche Initiativen zu investieren. Im letzteren Fall sollten Sie eine gründliche Analyse der einzelnen Arbeitslasten durchführen, um über Folgendes Klarheit zu gewinnen:
- Prüfen Sie, ob eine Containerisierung der Arbeitslast möglich ist.
- Schätzen Sie den potenziellen Nutzen ab, den Sie aus der Containerisierung der Arbeitslast ziehen können.
Wenn die möglichen Schwierigkeiten gegenüber den Vorteilen der Containerisierung überwiegen, sollten Sie nur dann ein Tool zur Containerorchestrierung verwenden, wenn sich Ihre Teams bereits auf dessen Einsatz festgelegt haben und Sie keine heterogenen Umgebungen verwalten möchten.
Beispielsweise werden Data Warehouse-Lösungen normalerweise nicht mithilfe von Tools zur Containerorchestrierung bereitgestellt, da sie nicht auf die Ausführung in flüchtigen Containern ausgelegt sind.
Sie können diesen Bereitstellungsprozess mit Google Kubernetes Engine (GKE) in Google Cloud implementieren. Wenn Sie in einer serverlosen Umgebung arbeiten möchten, können Sie Tools wie Cloud Run verwenden.
Automatisch bereitstellen
Unabhängig davon, welche Tools Sie in Ihrer Umgebung für die Bereitstellung, Konfiguration und Orchestrierung verwenden, können Sie vollständig automatisierte Bereitstellungsprozesse implementieren, um menschliche Fehler zu minimieren und die Prozesse in Ihrer Organisation zusammenzuführen, zu rationalisieren und zu standardisieren. Sie können bei Bedarf auch manuelle Genehmigungsschritte in den Bereitstellungsprozess einfügen. Jeder Prozessschritt ist jedoch automatisiert.
Die Schritte einer typischen End-to-End-Bereitstellungspipeline sind folgende:
- Codeüberprüfung
- Kontinuierliche Integration (Continuous Integration, CI)
- Artefakterstellung
- Kontinuierliche Bereitstellung (Continuous Deployment, CD) mit manuellen Genehmigungen am Ende
Sie können jeden dieser Schritte unabhängig von den anderen automatisieren. Somit können Sie Ihre aktuellen Bereitstellungsprozesse schrittweise auf eine automatisierte Lösung umstellen oder direkt in der Zielumgebung einen neuen Prozess implementieren. Damit dieser Prozess effektiv ist, sind in jedem Schritt der Pipeline Test- und Validierungsverfahren erforderlich, nicht nur während des Codeüberprüfungs- oder des CI-Schritts.
Für jede Änderung an Ihrer Codebasis sollten Sie eine gründliche Überprüfung vornehmen, um die Qualität der Änderung zu beurteilen. Die meisten Tools zur Quellcodeverwaltung bieten für Codeüberprüfungen erstklassigen Support. Sie unterstützen häufig auch das automatische Erstellen und Initialisieren von Überprüfungen, indem der Quellcodebereich gesichtet wird, der geändert wurde. Dies setzt allerdings voraus, dass Sie für jeden Bereich der Codebasis die zuständigen Teams konfiguriert haben. Bei jeder Überprüfung können Sie auch automatisierte Prüfungen am Quellcode ausführen lassen, z. B. mit Lint-Tools und statischen Analysen, um für die gesamte Codebasis Konsistenz- und Qualitätsstandards zu erzwingen.
Nachdem Sie eine Änderung an der Codebasis überprüft und diese eingebunden haben, kann das CI-Tool automatisch Tests ausführen, die Ergebnisse auswerten und Sie über sämtliche Probleme mit dem aktuellen Build informieren. Sie können diesen Schritt aufwerten, indem Sie sich an einen testbasierten Entwicklungsprozess halten, um eine vollständige Testabdeckung der Features der einzelnen Arbeitslasten zu erreichen.
Sie können für jeden erfolgreichen Build das Erstellen von Bereitstellungsartefakten automatisieren. Solche Artefakte stellen eine zum Bereitstellen geeignete Version der Arbeitslasten mit den neuesten Änderungen dar. Sie können den Schritt zum Erstellen von Artefakten auch um eine automatisierte Validierung der Artefakte an sich erweitern. Beispielsweise könnten Sie für bekannte Probleme einen Scan auf Sicherheitslücken durchführen und das Artefakt nur für die Bereitstellung freigeben, wenn keine Sicherheitslücken gefunden werden.
Schließlich können Sie dann das Bereitstellen jedes freigegebenen Artefakts in der Zielumgebung automatisieren. Wenn Sie mehrere Laufzeitumgebungen haben, können Sie auch für jede eine einzigartige Bereitstellungslogik implementieren und bei Bedarf sogar manuelle Genehmigungsschritte einfügen. Sie können beispielsweise automatisch neue Versionen der Arbeitslasten in der Entwicklungs-, Qualitätssicherungs- und Vorproduktionsumgebung bereitstellen lassen und dennoch eine manuelle Überprüfung und Genehmigung durch das Produktionsteam erforderlich machen, damit sie in der Produktionsumgebung bereitgestellt werden können.
Ein vollständig automatisierter End-to-End-Prozess ist dann eine der besten Optionen, wenn Sie einen automatisierten, strukturierten, rationalisierten und überprüfbaren Prozess benötigen. Die Implementierung dieses Prozesses ist jedoch keine leichte Aufgabe. Bevor Sie sich für einen solchen Prozess entscheiden, sollten Sie einen guten Überblick über die erwarteten Vorteile, die mit der Implementierung verbundenen Kosten und darüber haben, ob das Wissen und die Fachkenntnis Ihres Teams ausreichen, um einen vollständig automatisierten Bereitstellungsprozess zu implementieren.
Sie können vollständig automatisierte Bereitstellungsprozesse mit Cloud Deploy implementieren.
Nächste Schritte
- Bereitstellungsprozesse migrieren.
- Hilfe für Migrationen erhalten
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center