Compute-Basis
CloudMent AI-Powered Cloud Advisor
CloudMent
Zuletzt aktualisiert am
Planen Sie den Rehost von Spring Boot und PostgreSQL nach STACKIT: Discovery, VM-Design, Landing Zone, Migrationsfreigaben, Betriebsübergabe und Optimierung.
Beginnen Sie mit dem vollständigen Migration Framework, damit das Publikum Workload-Bewertung, Rehost-Design, kontrollierte Migration, Stabilisierung und Optimierung als durchgängige Journey einordnen kann.
Erstellen Sie eine kompakte Workload-Baseline für Spring-Boot-Laufzeit, PostgreSQL-Datenpfad, Abhängigkeiten und erste Kapazitätssignale. Qualifizieren Sie damit die Migrationsabsicht, machen Sie Unbekannte sichtbar und definieren Sie, was die detaillierte Discovery vor dem Zieldesign validieren muss; behandeln Sie frühe Annahmen nicht als bestätigte Eingaben.
Rapid Discovery liefert in kurzer Zeit eine schnelle, automatisierte Ausgangsbasis über bestehende Umgebungen in On-Premises- und Cloud-Landschaften. Der Fokus liegt auf der quantitativen Erfassung des IT-Portfolios, damit frühe Migrations- und kommerzielle Entscheidungen fundiert getroffen werden können.
In dieser Phase sind Mengen und Verteilung wichtiger als die detaillierten Abhängigkeiten einzelner Anwendungen.
Rapid Discovery erstellt ein initiales Inventar von Infrastruktur- und Plattform-Assets, unter anderem:
Compute-Basis
Storage-Basis
Betriebssystem-Landschaft
Kubernetes-Basis
Datenbank-Inventar
Diese Kennzahlen bilden die erste belastbare Sicht auf den Umfang der Migration.
Die Ergebnisse aus Rapid Discovery sind eine zentrale Grundlage für:
Dadurch können sich Programm-Stakeholder frühzeitig auf eine finanzielle Richtung und eine technische Ausgangsbasis einigen.
Rapid Discovery ist bewusst keine vollständige Analyse auf Applikationsebene. Es umfasst weder tiefgehende Interviews mit allen Application Ownern noch eine vollständige Abbildung aller Laufzeitabhängigkeiten.
Diese Tiefe wird in der anschließenden Discovery-Phase erreicht: Dort werden Infrastruktur-Exporte durch gezielte Assessments und Informationen der Application Owner ergänzt, um ein vollständiges Applikationsbild zu erstellen.
Typische Eingabequellen sind Exporte wie Tabellen oder ähnliche Inventardateien aus bestehenden Umgebungen. Die Phase kann durch KI-gestützte Tools beschleunigt werden, die aus hochgeladenen Datensätzen die benötigten Baseline-Kennzahlen extrahieren.
Rapid Discovery ist damit eine wichtige Voraussetzung für eine strukturierte Kostenindikation sowie für die Entwicklung einer realistischen Strategie für die Cloud-Zielumgebung.
KI-gestützte Discovery-Assets können helfen, Workload-Beschreibungen und Daten aus Inventaren in erste Assessment- und Design-Artefakte für die fachliche Prüfung zu überführen.


Das folgende Diagramm zeigt den Kern von Rapid Discovery: Rohdaten aus Quellsystemen werden durch Tooling in eine entscheidungsreife Baseline überführt, die frühe Preisindikationen und erste Sizing-Annahmen ermöglicht.
Eine belastbare Rapid Discovery folgt typischerweise einem klaren Ablauf:
Ziel ist kein perfektes Zielbild, sondern ein verlässlicher Startpunkt mit ausreichender Genauigkeit für frühe Entscheidungen.
Die Aussagekraft der Ergebnisse hängt stark von der Datenqualität ab. Typische Herausforderungen sind Dubletten, veraltete Einträge, inkonsistente Benennungen und fehlende Leistungsdaten.
Empfehlung für diese Phase:
So bleibt die Kostenindikation nachvollziehbar und später in der Discovery-Phase gezielt verfeinerbar.
Rapid Discovery liefert die Mengengerüste für erste Kostenmodelle. Dafür werden die erfassten Bestände in STACKIT-nahe Verbrauchseinheiten überführt, zum Beispiel:
In Kombination mit Betriebsannahmen (Betriebszeiten, Verfügbarkeit, Wachstumspfad) entsteht daraus eine belastbare Preisindikation und ein erster TCO-Korridor.
Am Ende der Rapid-Discovery-Phase sollten mindestens folgende Ergebnisse vorliegen:
Konsolidierte Asset-Baseline
Mengen je Technologiebereich liegen konsolidiert vor.
Sinnvolle Segmentierung
Assets sind nach Kritikalität, Umgebung und Modernisierungsbedarf segmentiert.
Nachvollziehbare Annahmen
Annahmen und erkannte Datenlücken sind transparent dokumentiert.
Erste Kostenindikation
Eine erste Kostenbandbreite mit den wichtigsten Treibern liegt vor.
Priorisierte Kandidaten
Eine priorisierte Liste für die vertiefende Discovery-Phase ist verfügbar.
Diese Ergebnisse bilden die Arbeitsgrundlage für Architektur, Planung und Governance der nächsten Assess-Schritte.
Häufige Risiken in Rapid Discovery sind zu grobe Kategorisierung, unvollständige Quellsysteme oder eine Überschätzung der Datenreife.
Bewährte Gegenmaßnahmen:
Damit bleibt die Phase schnell, ohne an Entscheidungsqualität zu verlieren.
Der Übergang ist erreicht, wenn ein belastbarer Überblick über Mengen, Technologietypen und Kostenhebel vorliegt und die offenen Punkte klar benannt sind.
In der Discovery-Phase werden diese offenen Punkte gezielt geschlossen, unter anderem durch Interviews mit Application Ownern, vertiefende Assessments und die Analyse von Abhängigkeiten, Compliance- und Betriebsanforderungen.
Kombinieren Sie Nachweise der Application Owner mit technischen Messungen zu Abhängigkeiten, Java- und PostgreSQL-Versionen, Service-Verhalten, Datenmenge und Änderungsrate, Betriebsbedingungen, Recovery-Zielen und repräsentativer Ressourcennutzung. Bestätigen Sie Kompatibilität, Migrationsbedingungen und Kapazitäts-Baseline vor dem Design.
Discovery ist eines der ersten und wichtigsten Module in der Phase Design and Mobilize. Es verfeinert die Ergebnisse aus Rapid Discovery und liefert die notwendige Tiefe, um Entscheidungen zur Architektur und die Reihenfolge der Migration belastbar zu planen.
Das primäre Ziel ist ein realistisches, auf Fakten gestütztes Verständnis der bestehenden IT-Landschaft, der Business-Prioritäten und der organisatorischen Bereitschaft, bevor Zielbild und Migrationsplan im Detail festgelegt werden.
Vollständige Basis
Eine belastbare Sicht auf Anwendungen und Infrastruktur schaffen, die über reine Mengen hinausgeht.
Transparente Abhängigkeiten
Technische und prozessuale Abhängigkeiten identifizieren, um versteckte Migrationsblocker zu vermeiden.
Business-Abgleich
Technische Erkenntnisse mit Kritikalität, Zeitrahmen und Risikoprofil des Business verknüpfen.
Planungsreife
Eine entscheidungsreife Grundlage für Zielbild und Migrationswellen erstellen.
Inventarisierung
Vollständige Erfassung von Servern, virtuellen Maschinen, Datenbanken, Middleware und Anwendungen.
Abhängigkeitsanalyse
Abbildung von Kommunikationspfaden und Laufzeitabhängigkeiten zwischen Systemen und Anwendungen.
Ressourcennutzung
Analyse von CPU-, RAM-, Storage- und I/O-Verhalten über einen repräsentativen Zeitraum.
Betriebskontext
Erhebung von Anforderungen zu Backup, Patch, SLA, Compliance und betrieblichen Randbedingungen.
Input der Application Owner
Strukturierte Fragebögen und Interviews zur Validierung von Annahmen und zum Schließen von Datenlücken.
In der Praxis wird Discovery häufig gemeinsam mit STACKIT Partnern durchgeführt. Partner nutzen dabei meist eigene Tool-Landschaften, um technische Daten zu sammeln, zu normalisieren und in einer zentralen Sammlung zu konsolidieren.
Häufig werden aus diesen Tools heraus auch gezielte Rückfragen an Application Owner gestellt, um technische Befunde um Business und Betrieb zu ergänzen.
Dieses kombinierte Modell erhöht Geschwindigkeit und Konsistenz und verankert Stakeholder-Validierung direkt im Prozess.
Discovery kombiniert bewusst zwei sich ergänzende Evidence-Streams:
Keiner der beiden Streams ist alleine ausreichend. Technische Evidenz ohne Owner-Kontext kann kritische Workloads falsch einordnen. Human-Input ohne technische Grundlage kann Kopplungen und Kapazitätsrisiken verdecken. Die Qualität von Discovery entsteht aus der Zusammenführung beider Streams in eine belastbare Basis für Entscheidungen.
Die folgende Darstellung zeigt, wie Discovery technische und menschliche Eingaben in entscheidungsreife Ergebnisse für die nachgelagerten Module überführt.
Im Discovery werden typischerweise die folgenden Analyse-Muster angewendet:
Diese Analysen bilden die technische Grundlage. Der human-driven Stream validiert, priorisiert und ordnet diese Befunde für umsetzbare Migrationsentscheidungen ein.
KI-gestützte Discovery-Assets können Workload-Eingaben, Service-Mapping, Readiness-Befunde und R-Strategie-Signale strukturieren, bevor Architekten die Discovery-Baseline validieren.


Die Ergebnisse aus Discovery werden direkt in den nachgelagerten Modulen wiederverwendet:
Design
Nutzt Abhängigkeits-, Kapazitäts- und Risikosignale zur Ausgestaltung tragfähiger Zielarchitekturen.
Security und Compliance
Nutzt Datenklassifizierung und Control-Gaps zur Priorisierung von Sicherheitsanforderungen.
Landing Zone
Nutzt Plattform- und Governance-Restriktionen für grundlegende Setup-Entscheidungen.
Migrationsplan
Nutzt Move Groups, Kritikalität und Sequenzrestriktionen für realistische Wellenplanung.
Operating Model und Business Case
Nutzt Ownership-, Prozess- und Value/Risk-Signale für Rollenbild und Investitionspriorisierung.
Mindestens folgende Ergebnisse sollten aus Discovery vorliegen:
Diese Ergebnisse sind unverzichtbare Voraussetzungen für das nachfolgende detaillierte Design und einen realistischen Migrationsplan.
Bestätigen Sie anhand der Discovery-Nachweise, dass das Beibehalten von Spring-Boot-JAR, systemd-Service-Modell und PostgreSQL-Engine auf einer VM die Migrationsziele erfüllt; Kubernetes, Cloud Foundry oder PostgreSQL Flex wären stattdessen Replatform. Leiten Sie daraus die Delivery-Reihenfolge ab: Landing Zone, Terraform-Infrastruktur, Ansible-Konfiguration, separate PostgreSQL-Migration und geprobtes Runbook.
Rehost (lift-and-shift) migriert Workloads mit möglichst geringer Anwendungsänderung. Die Strategie reduziert Übergangsrisiken und beschleunigt den Umsetzungsdurchsatz.
Konkret ist Rehost anwendungs- und wellenorientiert: Für jeden Workload werden Zielabbildung, Cutover-Pfad und Runbook-Paket für eine wiederholbare Factory-Ausführung festgelegt.
Relocate und Rehost werden oft gleich verwendet, sind in diesem Framework jedoch bewusst getrennt.
Infrastruktur-Abbildung
Zielprofile für Compute, Storage und Netzwerk mit Kompatibilitätsprüfung definieren.
Daten- und Cutover-Pfad
Transferfenster, Konsistenzchecks und Rollback-Trigger entwerfen.
Stateful-Workload-Handling
Applikations-Deployment und Datenbankmigration als getrennte, aber abgestimmte Streams sequenzieren.
Security und Compliance
Identitätskontrollen, Verschlüsselungsanforderungen und Nachweis-Checkpoints abbilden.
Operatives Handover
Runbooks für Day-1-Betrieb und Incident-Ablaufe nach der Migration sicherstellen.
In Rehost-Szenarien hängt der Datenmigrationspfad davon ab, ob der Workload zustandslos (stateless) oder zustandsbehaftet (stateful) ist:
Für zustandsbehaftete Migrationswellen empfiehlt sich eine Trennung in zwei Streams:
Landing-Zone-Anforderungen und Controls als Startpunkt der Rehost-Ausführung festlegen. Netzwerk-, Identitäts-, Backup- und Monitoring-Voraussetzungen vor der Abfolge der Migration verbindlich festlegen, damit Rehost-Wellen mit planbarer Betriebsqualität umgesetzt werden.
Automatisierten Rehost-Pfad für wiederholbaren Wellen-Durchsatz definieren. Im automatisierten Rehost-Pfad werden Infrastruktur und Anwendung als Code bereitgestellt, damit Wellen reproduzierbar und auditierbar umgesetzt werden können.
VM-Ziel über IaC bereitstellen: Netzwerk, Security-Gruppen, Compute-Instanzen und Basis-Storage mit Terraform oder OpenTofu aufbauen.
Anwendung automatisiert installieren und konfigurieren: Ansible-Playbooks für die Installation von Paketen, Service-Setup und Basiskonfiguration verwenden.
Parameter der Zielumgebung kontrolliert anwenden: Variablen im Ziel, Secret-Referenzen und Endpoint-Mappings in einem gesteuerten automatisierten Lauf einspielen.
Automatisierte Validierungs- und Cutover-Gates ausführen: Health-Checks, Migrations-Pre-Checks, Rollback-Checkpoints und Release-Freigaben vor Live-Switch durchführen.
Das Runbook-Asset beschreibt die PostgreSQL-Flags und den optionalen Dump-basierten Restore-Pfad.
Manuelle Installations-Schritte für Ausnahme-Workloads beschreiben.
Ziel-VM manuell erstellen und vorbereiten: VM über Portal oder CLI bereitstellen, erforderlichen Storage anbinden und OS-Hardening sowie Patch-Baseline anwenden.
Runtime und Abhängigkeiten manuell installieren: Benötigte Runtime-Pakete, System-Bibliotheken und Service-User/-Gruppen gemäß Anleitung zur Installation des Produkts einrichten.
Anwendung klassisch installieren: Geführte Installationsschritte (zum Beispiel Installer- oder Setup-Wizard-Ablauf) ausführen, um das Quell-Deployment-Modell auf der Ziel-VM nachzubilden.
Status der Installation validieren: Service-Start, Rechte auf Dateien, erforderliche Ports, DNS-Erreichbarkeit und ausgehende Konnektivität prüfen.
Manuelle Konfiguration der Laufzeit und Controls festlegen.
Konfiguration der Quelle für den Kontext im Ziel spiegeln: Einstellungen der Anwendung aus der Umgebung der Quelle nachbilden und auf Ziel-Endpoints, DNS, Zertifikate und Service-Integrationen anpassen.
Security- und Einstellungen für Zugriffe anwenden: Service-Credentials, Secret-Handling und Least-Privilege-Zugriffe für den Betrieb im Ziel konfigurieren.
Standards für den Betrieb ausrichten: Logging-Ziele, Metrics-Exporter, Backup-Zeitpläne und Retention-Baselines festlegen.
Konfigurationsparität validieren: Smoke-Checks ausführen, damit die Zielinstanz funktional dem Quellbaseline-Verhalten entspricht.
Manuelle Deployment-Sequenz und Release-Checks definieren.
Finales Zeitfenster für die Migration planen: Freeze-Fenster, Kommunikations-Checkpoints und Rollback-Autorität für den Wechsel in den Produktivbetrieb abstimmen.
Finale Datenmigration ausführen: Letzten Abgleich der Daten oder Restore-Schritte fahren und Konsistenzprüfungen vor Go-live bestätigen.
Live-Verkehr aktivieren: Kontrollierte Live-Schaltung auf die Zielumgebung durchführen und kritische Nutzer- sowie Integrationspfade prüfen.
Handover-Bereitschaft bestätigen: Nachweise dokumentieren, offene Risiken schließen und Ownership für Day-1-Betrieb übergeben.
Trennen Sie Infrastruktur-Lifecycle und Zielkonfiguration: Terraform oder OpenTofu erstellt und synchronisiert STACKIT Ressourcen, während Ansible das erreichbare Betriebssystem, Middleware, Anwendung und Validierungskontrollen konfiguriert.
Automatisierung stellt sicher, dass Landing-Zone-Funktionen reproduzierbar, versioniert und testbar bereitgestellt werden.
Für Migrations-Landing-Zones ist Automatisierung das Delivery-Rückgrat, das Plattform-APIs, IaC-Werkzeuge, Entwickler-Workflows und Release-Kontrollen in ein verlässliches Betriebsmodell überführt.
Terraform oder OpenTofu und Ansible lösen unterschiedliche Aufgaben innerhalb eines Delivery-Flows. Halten Sie die Grenze explizit, damit Infrastrukturänderungen prüfbar und Host-Konfigurationen wiederholbar bleiben.
Terraform / OpenTofu
Verantwortet den Infrastruktur-Lifecycle: Projekte, Netzwerke, Sicherheitskontrollen, Compute, Storage, Managed Services und die für das Konfigurationsmanagement benötigten Outputs.
Ansible
Verantwortet die Konfiguration im erreichbaren Ziel: Betriebssystempakete, Middleware, Applikationsartefakte, Service Units und die Validierung auf Workload-Ebene.
Verwischen Sie die Zuständigkeit beider Ebenen nicht durch Provisioner oder Ad-hoc-Skripte. Ansible aus Terraform anzustoßen kann eine praktische Brücke sein, aber jedes Werkzeug muss eigenständig verständlich, testbar und wiederholbar bleiben.
STACKIT
Der souveräne europäische Cloud-Anbieter hinter dem Framework, mit IaaS und PaaS aus deutschen und österreichischen Rechenzentren und voller Unabhängigkeit.
Dieses Muster bildet das validierte Ziel mit geringer Änderungstiefe für das Spring-Boot-Rehost-
Beispiel ab. Das JAR läuft weiterhin als systemd-Service, während PostgreSQL selbstverwaltet auf
derselben VM verbleibt. Die Betriebsmodelle von Laufzeit und Datenbank bleiben damit VM-zentriert.
Die Baseline umfasst bewusst nur eine VM. Sie demonstriert wiederholbare Migrationskontrollen und Betriebsbereitschaft, nicht High Availability für Anwendung oder Datenbank.
cp env.tfvars.example env.tfvarscreate_project = truetarget_project_name = "cmf-rehost-springboot"target_project_owner_email = "owner@sa.stackit.cloud"parent_container_id = "cmf-parent-container-id"service_account_key_path = "/path/to/stackit-sa-key.json"
run_ansible = truejar_local_path = "ansible/files/springboot-app.jar"availability_zone = "eu01-1"machine_type = "g2i.2"ssh_allowed_cidr = "203.0.113.10/32"app_allowed_cidr = "203.0.113.10/32"enable_observability = trueenable_node_exporter = trueenable_local_postgresql = trueenable_server_backup = trueflags.env):setup_project=truesetup_observability=truesetup_database=falsesetup_workload=truesetup_loadgen=falsesetup_dns=falseterraform initterraform apply -var-file=env.tfvarsErwartetes Ergebnis: application_url stellt die Spring-Boot-Anwendung direkt von der VM auf dem
konfigurierten Applikationsport bereit. PostgreSQL lauscht für die Anwendung auf localhost,
Observability erfasst den Node Exporter und für das Boot Volume ist ein täglicher Backup-Zeitplan aktiv.
Diese Baseline bietet kein automatisches Failover. Eine Load-Balancer- oder Multi-VM-Variante ist erst sinnvoll, nachdem Session Handling, PostgreSQL-Platzierung, Schreibkonsistenz, Health Checks, TLS und Traffic-Umschaltung gemeinsam entworfen und getestet wurden. Behandeln Sie dies als eigene Architekturentscheidung, nicht als implizite Eigenschaft dieses Rehost-Pfads.
Trennen Sie nach der Definition von Infrastruktur und Laufzeitpfad die Vorbereitung der Anwendung von PostgreSQL-Export, Übertragung, Restore und Integritätsvalidierung. Definieren Sie Write Freeze, finalen Dump, Rollback-Deadline und Aufbewahrung der Quelle vor der Ausführung.
Rehost (lift-and-shift) migriert Workloads mit möglichst geringer Anwendungsänderung. Die Strategie reduziert Übergangsrisiken und beschleunigt den Umsetzungsdurchsatz.
Konkret ist Rehost anwendungs- und wellenorientiert: Für jeden Workload werden Zielabbildung, Cutover-Pfad und Runbook-Paket für eine wiederholbare Factory-Ausführung festgelegt.
Relocate und Rehost werden oft gleich verwendet, sind in diesem Framework jedoch bewusst getrennt.
Infrastruktur-Abbildung
Zielprofile für Compute, Storage und Netzwerk mit Kompatibilitätsprüfung definieren.
Daten- und Cutover-Pfad
Transferfenster, Konsistenzchecks und Rollback-Trigger entwerfen.
Stateful-Workload-Handling
Applikations-Deployment und Datenbankmigration als getrennte, aber abgestimmte Streams sequenzieren.
Security und Compliance
Identitätskontrollen, Verschlüsselungsanforderungen und Nachweis-Checkpoints abbilden.
Operatives Handover
Runbooks für Day-1-Betrieb und Incident-Ablaufe nach der Migration sicherstellen.
In Rehost-Szenarien hängt der Datenmigrationspfad davon ab, ob der Workload zustandslos (stateless) oder zustandsbehaftet (stateful) ist:
Für zustandsbehaftete Migrationswellen empfiehlt sich eine Trennung in zwei Streams:
Landing-Zone-Anforderungen und Controls als Startpunkt der Rehost-Ausführung festlegen. Netzwerk-, Identitäts-, Backup- und Monitoring-Voraussetzungen vor der Abfolge der Migration verbindlich festlegen, damit Rehost-Wellen mit planbarer Betriebsqualität umgesetzt werden.
Automatisierten Rehost-Pfad für wiederholbaren Wellen-Durchsatz definieren. Im automatisierten Rehost-Pfad werden Infrastruktur und Anwendung als Code bereitgestellt, damit Wellen reproduzierbar und auditierbar umgesetzt werden können.
VM-Ziel über IaC bereitstellen: Netzwerk, Security-Gruppen, Compute-Instanzen und Basis-Storage mit Terraform oder OpenTofu aufbauen.
Anwendung automatisiert installieren und konfigurieren: Ansible-Playbooks für die Installation von Paketen, Service-Setup und Basiskonfiguration verwenden.
Parameter der Zielumgebung kontrolliert anwenden: Variablen im Ziel, Secret-Referenzen und Endpoint-Mappings in einem gesteuerten automatisierten Lauf einspielen.
Automatisierte Validierungs- und Cutover-Gates ausführen: Health-Checks, Migrations-Pre-Checks, Rollback-Checkpoints und Release-Freigaben vor Live-Switch durchführen.
Das Runbook-Asset beschreibt die PostgreSQL-Flags und den optionalen Dump-basierten Restore-Pfad.
Manuelle Installations-Schritte für Ausnahme-Workloads beschreiben.
Ziel-VM manuell erstellen und vorbereiten: VM über Portal oder CLI bereitstellen, erforderlichen Storage anbinden und OS-Hardening sowie Patch-Baseline anwenden.
Runtime und Abhängigkeiten manuell installieren: Benötigte Runtime-Pakete, System-Bibliotheken und Service-User/-Gruppen gemäß Anleitung zur Installation des Produkts einrichten.
Anwendung klassisch installieren: Geführte Installationsschritte (zum Beispiel Installer- oder Setup-Wizard-Ablauf) ausführen, um das Quell-Deployment-Modell auf der Ziel-VM nachzubilden.
Status der Installation validieren: Service-Start, Rechte auf Dateien, erforderliche Ports, DNS-Erreichbarkeit und ausgehende Konnektivität prüfen.
Manuelle Konfiguration der Laufzeit und Controls festlegen.
Konfiguration der Quelle für den Kontext im Ziel spiegeln: Einstellungen der Anwendung aus der Umgebung der Quelle nachbilden und auf Ziel-Endpoints, DNS, Zertifikate und Service-Integrationen anpassen.
Security- und Einstellungen für Zugriffe anwenden: Service-Credentials, Secret-Handling und Least-Privilege-Zugriffe für den Betrieb im Ziel konfigurieren.
Standards für den Betrieb ausrichten: Logging-Ziele, Metrics-Exporter, Backup-Zeitpläne und Retention-Baselines festlegen.
Konfigurationsparität validieren: Smoke-Checks ausführen, damit die Zielinstanz funktional dem Quellbaseline-Verhalten entspricht.
Manuelle Deployment-Sequenz und Release-Checks definieren.
Finales Zeitfenster für die Migration planen: Freeze-Fenster, Kommunikations-Checkpoints und Rollback-Autorität für den Wechsel in den Produktivbetrieb abstimmen.
Finale Datenmigration ausführen: Letzten Abgleich der Daten oder Restore-Schritte fahren und Konsistenzprüfungen vor Go-live bestätigen.
Live-Verkehr aktivieren: Kontrollierte Live-Schaltung auf die Zielumgebung durchführen und kritische Nutzer- sowie Integrationspfade prüfen.
Handover-Bereitschaft bestätigen: Nachweise dokumentieren, offene Risiken schließen und Ownership für Day-1-Betrieb übergeben.
Etablieren Sie die gesteuerte Cloud-Basis, bevor das Rehost-Ziel davon abhängt. Verwenden Sie die sechs Kernkomponenten als Readiness-Rahmen: Jede Kontrolle benötigt Ownership, eine freigegebene Implementierung und Nachweise, bevor Terraform das Spring-Boot-Ziel bereitstellt.
Eine Landing Zone ist die strukturierte Cloud-Grundlage, die festlegt, wie Ihre Organisation auf STACKIT von Anfang an betrieben wird. Sie verbindet Governance, Identität, Security, Netzwerkarchitektur, Kostensteuerung und Automatisierung zu einem belastbaren Rahmen.
Ohne diese Grundlage stocken Migrationswellen typischerweise durch fehlende Freigaben, inkonsistente Kontrollen und wiederkehrende Plattformentscheidungen.
Die folgende Visualisierung zeigt die zentralen Komponenten für eine belastbare Plattform-Basis.
Starten Sie den Landing-Zone-Stream so früh wie möglich parallel zum Discovery.
Bewährt hat sich ein zweigleisiges Vorgehen: Die Plattform-Basis früh etablieren und Application-Landing-Zone-Templates iterativ mit Discovery-Erkenntnissen verfeinern.
Platform Landing Zone
Unternehmensweite Grundlage für Governance, Identität, Security, Netzwerk, Kostensteuerung und Automatisierung.
Zur Platform Landing ZoneApplication Landing Zone
Workload-spezifische Umsetzungsprofile, abgeleitet aus Plattform-Basis und Discovery-Ergebnissen.
Zur Application Landing ZoneFür ein belastbares Landing-Zone-Design werden typischerweise benötigt:
Um die Umsetzung zu beschleunigen, bietet STACKIT konkrete Best Practices und wiederverwendbare Vorlagen:
Nutzen Sie den STACKIT Landing Zone Accelerator, um wiederverwendbare Organisations-Folder, Plattformprojekte, Connectivity, Management Services und die Workload-bereite Application Landing Zone zu erstellen, bevor die Rehost-Automatisierung ihre VM deployt.
Halten Sie die Grenze explizit: Der Accelerator stellt die gesteuerte Umgebung bereit; das Application Team deployt Spring Boot, PostgreSQL, Telemetrie und Backup in die freigegebene Application Landing Zone.
Beginnen Sie die Ausführung nur mit freigegebenen Designentscheidungen, einer bereiten Application Landing Zone, einer zugewiesenen Welle und einem Factory-fähigen Runbook. Führen Sie Readiness, Migration, Cutover, Validierung, Stabilisierung und Handover als einen kontrollierten Ablauf aus.
Dieses Modul setzt die eigentliche technische Migration in der Migration Factory um. Zu diesem Zeitpunkt sind Entscheidungen aus Design getroffen, Landing Zones aufgebaut und Wellen geplant.
Der Fokus liegt auf reproduzierbarer Umsetzung für:
Migrate startet erst, wenn aus der vorherigen Phase umsetzbare Ergebnisse vorliegen:
Verweise auf Module:
Runbook-Nachweise
Vollständige Runbook-Protokolle, Entscheidungsnachweise und Rollback-Checkpoints pro Workload.
Cutover-Report
Zeitlich nachvollziehbares Ergebnis mit Abnahme, Defekten und eingeleiteten Maßnahmen.
Operative Baseline
Initiales Monitoring, Alerting, Ownership und Incident-Prozesse in der Zielumgebung.
Optimize-Backlog
Priorisierte Maßnahmen für Rightsizing, Performance-Tuning und Kostenoptimierung.
Unterstützung direkt nach dem Cutover kann sich zeitlich mit Optimize überschneiden, wird aber inhaltlich in der Run-Phase behandelt.
STACKIT
Der souveräne europäische Cloud-Anbieter hinter dem Framework, mit IaaS und PaaS aus deutschen und österreichischen Rechenzentren und voller Unabhängigkeit.
Das Migration Framework definiert Strategie, Design, Landing Zone, Migration und Betriebsprinzipien für Rehost-Workloads. Dieses Asset wendet diese Prinzipien auf eine konkrete, ausführbare Spring-Boot- und PostgreSQL-Implementierung auf STACKIT an.
Das gepflegte Repository ist die Source of Truth für Terraform, Ansible, Applikationsartefakte, Migrationsskripte, Validierung und Laufzeitkonfiguration. Dieses Asset beschreibt die Nutzung der Implementierung, ohne ihren vollständigen Quellcode zu duplizieren.
STACKIT CMF Rehost Spring Boot Repository Öffnen Sie die ausführbare Terraform- und Ansible-Referenzimplementierung für den Rehost-Pfad von Spring Boot und PostgreSQL. Repository öffnenDieses Beispiel bildet einen Application-Rehost-Pfad für einen Spring-Boot-Workload ab, konkret das Spring-Music-Beispiel. Der Fokus liegt auf der Verlagerung der Laufzeit nach STACKIT:
systemd, ohne das Laufzeitmodell der Anwendung zu ändern.Die validierte Baseline enthält bewusst keinen Application Load Balancer, DNS-Switch, mehrere VMs, Kubernetes, Cloud Foundry oder PostgreSQL Flex. Ergänzen Sie diese nur als separat entworfene und getestete Erweiterungen; sie sind nicht impliziter Bestandteil dieses Rehost-Beispiels.
systemd-Service.Nutzen Sie dieses gemeinsame Flag-Modell in den Terraform-Variablen, um das Verhalten über CMF-Beispiele hinweg konsistent zu halten:
setup_project: Projektkontext erstellen oder verwenden.setup_observability: Observability-Ressourcen aktivieren oder deaktivieren.setup_database: Optionales VM-lokales PostgreSQL aktivieren oder deaktivieren.setup_workload: Workload-Installation auf der VM aktivieren oder deaktivieren.setup_loadgen: Optionale synthetische Lastgenerierung aktivieren oder deaktivieren.setup_dns: Wird vom gemeinsamen Wrapper akzeptiert, ist in dieser Baseline aber nicht unterstützt.Im aktuellen Rehost-Repository werden diese auf bestehende Schalter wie create_project,
enable_observability, enable_local_postgresql und die Flags zur Lastgenerierung abgebildet.
Das folgende Diagramm zeigt das implementierte und getestete Ziel, nicht eine zukünftige High-Availability-Variante.
Verwenden Sie ein isoliertes Linux-Labor mit Git, Terraform, Ansible, ShellCheck, SSH/SCP, curl, jq
und PostgreSQL-Server-/Client-Werkzeugen einschließlich pg_config. Die Sample-Dump-Skripte nutzen
runuser und den lokalen OS-Account postgres und benötigen Root-Rechte in diesem Labor.
Bei aktiviertem Server Backup braucht der Cutover zusätzlich eine authentifizierte STACKIT CLI.
Verwenden Sie für vorhandene gespeicherte Pläne die Terraform-Version, die sie erzeugt hat;
Plandateien sind versionsgebunden.
Beginnen Sie in einem übergeordneten Verzeichnis ohne bereits vorhandenen gleichnamigen Checkout. Dieser Stand enthält die Migrationsworkflows und die deklarative Observability-Verwaltung. Seine JAR ist gegenüber dem in der Replatform-Referenz fixierten Artefakt unverändert:
umask 077 && git clone https://github.com/stackitcloud/stackit-cmf-Rehost-springboot.git && git -C stackit-cmf-Rehost-springboot checkout --detach b9225eb35c64b9ef4761c208fadb9a2356431793 && test -f stackit-cmf-Rehost-springboot/scripts/run_cutover.sh && cd stackit-cmf-Rehost-springboot && printf '%s\n' "Workspace ready. Continue from this Rehost checkout." || { printf '%s\n' "Preparation failed. Resolve the error before continuing." >&2 false }Führen Sie die folgenden Schritte erst nach erfolgreicher Vorbereitung aus diesem Checkout aus. Bewahren Sie vorhandene Checkouts, State und Nachweise, statt sie zu ersetzen. Halten Sie Credentials, Pläne, State, Dumps, Inventory und Nachweise privat und außerhalb der Versionsverwaltung; aktivieren Sie kein Shell-Tracing.
Erstellen Sie die private Variablendatei nur, wenn sie noch nicht existiert:
umask 077test -e env.tfvars || cp env.tfvars.example env.tfvarschmod 600 env.tfvarsBearbeiten Sie die Datei vor dem Plan. Konfigurieren Sie das freigegebene bestehende Projekt oder den
Scope für die Projekterstellung, Service-Account-Key-Pfad, SSH-Schlüsselpaar, verfügbares Image,
Availability Zone, VM-Flavor und Storage. Beschränken Sie SSH- und Applikations-Ingress auf die
Quell-CIDRs, die am Zielpfad tatsächlich ankommen. Verifizieren Sie den SSH-Host-Key über einen
vertrauenswürdigen Kanal, bevor Migrationsskripte die strikte Host-Prüfung verwenden.
Setzen Sie für diese Skripte SSH_KEY und SSH_USER, falls sie von ~/.ssh/id_rsa und ubuntu
abweichen; halten Sie sie konsistent zu private_ssh_key_path und ssh_user in Terraform.
Aktivieren Sie VM-lokales PostgreSQL, Observability und Server Backup für diesen Walkthrough.
Lassen Sie für das erste Runtime-Deployment postgresql_restore_after_copy = false und den
Quelldump-Pfad leer: Provisioning darf die Quelle nicht vor Probe und Cutover-Freigabe importieren.
Übergeben Sie das Datenbankpasswort über den freigegebenen Secret-Mechanismus als
TF_VAR_postgresql_app_password und bewahren Sie es für spätere Pläne sicher auf;
schreiben Sie es nicht in Variablendatei, Shell-History oder Dokumentation.
Bestätigen Sie Berechtigungen, Quota, Kostenfreigabe und das private Terraform-Backend vor der Initialisierung. Dieser Ablauf setzt einen vorbereiteten Ausführungshost voraus und ist keine vollständige Installationsanleitung für das Labor.
Erstellen Sie einen Quelldump im Custom Format und erfassen Sie SHA-256-Prüfsumme, erwartete Datensatzanzahl und einen Workload-spezifischen deterministischen Fingerprint. Das Repository enthält ein reproduzierbares Beispiel mit acht Datensätzen:
./scripts/create_source_dump.sh./scripts/validate_source_dump.shDas Validierungsskript stellt den Dump in einem separaten lokalen PostgreSQL-Cluster wieder her, bevor er in eine Migrationsprobe eingehen darf. Die Skripte erzeugen das mitgelieferte Sample in temporären lokalen Clustern; sie exportieren weder eine laufende Anwendung noch die STACKIT VM. Verwenden Sie ein frisches Artefaktverzeichnis und überschreiben Sie keinen bereits freigegebenen Migrationsdump. Exportieren Sie eine reale Quelle unter dem vereinbarten Write Freeze und erfassen Sie gleichwertige Nachweise für Prüfsumme, Anzahl und Fingerprint.
Konfigurieren Sie ein bestehendes STACKIT Projekt oder die Projekterstellung, beschränken Sie SSH-
und Applikations-Ingress auf freigegebene Quell-CIDRs und übergeben Sie das Datenbankpasswort über
TF_VAR_postgresql_app_password statt über eine Variablendatei. Prüfen Sie vor dem Apply einen
gespeicherten Plan.
terraform init && ./scripts/check.sh && terraform plan -input=false -var-file=env.tfvars -out=tfplanStoppen Sie bei Fehlern in Initialisierung, Checks oder Plan. Prüfen Sie Ressourcenänderungen, Zielprojekt, Ingress, Kosten und den deaktivierten initialen Restore, bevor Sie den gespeicherten Plan ausdrücklich anwenden:
terraform apply tfplanTerraform führt nach dem Provisioning Ansible aus. Ein erfolgreicher Apply belegt den Abschluss dieser Orchestrierung, nicht die Abnahme migrierter Daten. Prüfen Sie die Laufzeit vor der Probe:
./scripts/validate_deployment.shFühren Sie die Probe gegen eine temporäre Datenbank auf der Ziel-VM aus:
./scripts/run_migration_rehearsal.shDie Probe prüft die Quelldaten, stellt den Dump wieder her, vergleicht Datensatzanzahl und Fingerprint
und entfernt die temporäre Datenbank, ohne die produktive springmusic-Datenbank zu verändern.
Hinterlegen Sie die erwarteten Quelldaten in env.tfvars:
enable_local_postgresql = truepostgresql_source_dump_local_path = "artifacts/source-postgresql.dump"postgresql_restore_after_copy = truepostgresql_expected_album_count = 8postgresql_expected_album_fingerprint = "<source-fingerprint>"Führen Sie anschließend das explizite Freigabe-Gate aus:
./scripts/run_cutover.sh --confirmDas Skript verlangt ein vollständig verfügbares Server Backup, das höchstens 24 Stunden alt ist. Es erzeugt einen gespeicherten Terraform-Plan, der ausschließlich die Ansible-Orchestrierungsressource ersetzt, weist andere Infrastrukturänderungen zurück, führt den Restore aus, validiert Daten und Laufzeitverhalten und verlangt abschließend einen Terraform-No-op-Plan. Wiederholungen mit demselben Quelldump-Hash bewahren den ursprünglichen Datenbank-Rollback-Punkt.
Die Validierung prüft Datensatzanzahl und Fingerprint der Quelle, Tabellen-Ownership, einen transaktional zurückgerollten Schreibvorgang als Application Role, Erreichbarkeit der Anwendung, Services und den geschützten Rollback-Dump.
./scripts/validate_migration.sh./scripts/validate_deployment.sh./scripts/verify_rollback.shWenn innerhalb des Rollback-Fensters ein freigegebener Rollback-Trigger eintritt, bewahren Sie die aktuelle Zieldatenbank und stellen den ursprünglichen Dump von vor dem Cutover wieder her:
./scripts/rollback_postgresql.sh --confirmMit enable_server_backup = true aktiviert Terraform STACKIT Server Backup und einen täglichen
Zeitplan für das Boot Volume der VM. Die Standardaufbewahrung beträgt 14 Tage. Der Cutover verlangt
ein vollständig verfügbares Backup, das höchstens 24 Stunden alt ist. Erstellung und Status des
Backups wurden am realen Ziel validiert; ein In-place-Restore mit Server Backup bleibt eine
disruptive Disaster-Recovery-Operation und muss in einer separaten Recovery-Umgebung geprobt werden.
Server Backup ergänzt den PostgreSQL-Dump von vor dem Restore. Es ersetzt weder die Datenbank-Konsistenzprüfungen noch das Application-Rollback-Verfahren.
Folgen Sie Arbeitsumgebung, privater Zielkonfiguration, Quellnachweisen und geprüftem Provisioning
in dieser Reihenfolge. Proben Sie vor dem freigegebenen Cutover und bewahren Sie anschließend die
Abnahmenachweise auf. Die Repository-Skripte rufen ausdrücklich terraform auf; ein Ausführungshost
mit ausschließlich OpenTofu benötigt eine separat geprüfte Anpassung, nicht nur ersetzte Befehle
auf dieser Seite.
Die Implementierung stellt STACKIT Observability bereit und erfasst den Node Exporter. Der Grafana-Provider
verwaltet das enthaltene Dashboard im Ordner SCF Rehost mit der vorhandenen Thanos-Datenquelle.
Er wartet auf die Bereitschaft der Instanz, statt die Dashboard-Erstellung stillschweigend zu überspringen.
Prüfen Sie über grafana_dashboard_url aktuelle VM-, Spring-Boot- und PostgreSQL-Metriken und verlangen
Sie anschließend einen No-op-Plan. Sieben Panels bilden die aktive Basis ab; das Panel für synthetische
Anfragen erscheint nur bei aktiviertem lokalem Lastgenerator. Diese Anfragen bilden nicht den gesamten
Application-Traffic ab. Die Deployment-Validierung prüft außerdem Exporter-Metriken und Service Health
nach dem Apply und nach dem Datenbank-Restore.
Die initialen Grafana-Admin-Zugangsdaten bleiben eine temporäre Authentifizierungsabhängigkeit. Schützen Sie State und gespeicherte Pläne. Benachrichtigungsempfänger, Zuständigkeit für Alarm-Routing, Application-Logs und Distributed Tracing benötigen vor Produktionseinsatz eine separate Konfiguration und Abnahme.
Dieses Beispiel kann in zwei zulässigen Setup-Modi eingesetzt werden.
create_project = false und project_id = "...", sowie die für
diesen Landing-Zone-Scope konfigurierte Service-Account-JSON.create_project = true und geben Sie über parent_container_id einen
bestehenden Folder oder Container an, in dem der Service Account ausreichende Berechtigungen hat.Hinweise zum Landing-Zone-Design finden Sie unter Application Landing Zone.
Nutzen Sie dieses Beispiel als Ausgangspunkt in env.tfvars.
create_project = truetarget_project_name = "cmf-rehost-springboot"target_project_owner_email = "owner@example.com"parent_container_id = "cmf-xxxxxxxx"service_account_key_path = "~/.ssh/cmf-sa.json"public_ssh_key_path = "~/.ssh/id_rsa.pub"private_ssh_key_path = "~/.ssh/id_rsa"availability_zone = "eu01-1"machine_type = "g2i.2"ssh_allowed_cidr = "203.0.113.10/32"app_allowed_cidr = "203.0.113.10/32"enable_local_postgresql = trueenable_observability = trueenable_server_backup = trueansible/files/springboot-app.jarjar_local_path verweist auf dieselbe Datei.jar_local_path.Wenn sich das Artefakt ändert, erkennt Terraform die geänderte Prüfsumme und führt den Ansible-Deployment-Schritt erneut aus.
Jede Probe, jeder Cutover und jedes Rollback schreibt eine evidence.env-Datei unter
artifacts/evidence/<timestamp>-<mode>/. Akzeptieren Sie einen Cutover nur, wenn der Nachweis die
erwartete Prüfsumme, Datensatzanzahl, den Fingerprint, die Ziel-VM, eine erfolgreiche
Laufzeitvalidierung und den abschließenden Terraform-No-op dokumentiert.
./scripts/validate_migration.sh./scripts/validate_deployment.shterraform plan -var-file=env.tfvars -detailed-exitcodeVerwenden Sie denselben freigegebenen Quellpfad, Restore-Schalter, Erwartungswert und Fingerprint
wie beim abgeschlossenen Cutover. Exit-Code 0 bedeutet keine Änderungen, 2 vorgeschlagene
Änderungen und 1 einen Fehler. Ein Plan allein belegt keinen Apply. Der Cutover-Workflow setzt
status=passed und terraform_noop=true erst nach Anwendung seines gespeicherten Plans und
erfolgreicher Daten- und Laufzeitvalidierung.
Die Replatform-Referenz verwendet das fixierte Spring-Music-JAR und den Sample-Datengenerator dieses Repositories weiter. Ihr Sample-Walkthrough benötigt deshalb diesen Checkout und validierte Dump-Artefakte, aber keine neu bereitgestellte Rehost-VM. Erstellen Sie keine zusätzliche VM allein zur Erzeugung des lokalen Samples.
Für eine tatsächliche Migration von der Rehost-VM zu SKE und PostgreSQL Flex müssen Sie den aktuellen VM-Zustand prüfen, Schreibzugriffe der Anwendung einfrieren, die reale PostgreSQL-Datenbank exportieren und diesen Export qualifizieren. Ein historisch erfolgreicher Rehost-Apply belegt weder aktuelle Erreichbarkeit noch die Gleichwertigkeit des lokalen Samples mit den VM-Daten. Quellexport, Abnahme und Source Failback benötigen ein eigenes freigegebenes Verfahren.
STACKIT
Der souveräne europäische Cloud-Anbieter hinter dem Framework, mit IaaS und PaaS aus deutschen und österreichischen Rechenzentren und voller Unabhängigkeit.
./scripts/run_migration_rehearsal.sh gegen eine temporäre Zieldatenbank ausführen../scripts/run_cutover.sh --confirm mit den freigegebenen Quelldaten ausführen../scripts/rollback_postgresql.sh --confirm ausführen, um Spring Boot zu stoppen und die aktuelle Zieldatenbank zu bewahren.| Checkpoint | Owner | Timestamp | Ergebnis | Evidence Link |
|---|---|---|---|---|
| Ziel-VM-Runtime vorbereitet | Platform Engineer | YYYY-MM-DD HH:MM | Pass/Fail | link |
| Probe abgeschlossen | DB Owner | YYYY-MM-DD HH:MM | Pass/Fail | link |
| DB-Restore und Integritätscheck | DB Owner | YYYY-MM-DD HH:MM | Pass/Fail | link |
| Terraform-No-op bestätigt | Platform Engineer | YYYY-MM-DD HH:MM | Pass/Fail | link |
| Post-Cutover Business-Checks | Application Owner | YYYY-MM-DD HH:MM | Pass/Fail | link |
| Handover akzeptiert | Operations Owner | YYYY-MM-DD HH:MM | Pass/Fail | link |
Kehren Sie vom konkreten Migrationsbeispiel zum Migration Framework zurück. Beginnen Sie Optimize erst nach stabilem Cutover, verwenden Sie repräsentative Produktionstelemetrie, setzen Sie jeweils eine kontrollierte Änderung um und validieren Sie ihre Wirkung auf Zuverlässigkeit, Performance und Kosten.
Optimize startet, sobald Workloads auf STACKIT laufen und reale Daten aus dem Betrieb vorliegen. Das Modul überführt Beobachtungen aus dem Betrieb in messbare Verbesserungen für Performance, Stabilität und Wirtschaftlichkeit.
Optimize ist keine einmalige Aufgabe, sondern ein iterativer Zyklus, der sich mit früher Stabilisierung und Unterstützung direkt nach dem Cutover überschneiden kann.
Viele Entscheidungen zu Rightsizing und Tuning sind erst unter echter Last belastbar. Nach dem Cutover lassen sich Annahmen mit Daten aus dem Betrieb validieren und präzisieren.
Optimierungsentscheidungen sollten auf Laufzeitdaten basieren, nicht auf Annahmen. Für die praktische Umsetzung werden Workload-Telemetrie, Alerting und kontrollierte Infrastrukturänderungen kombiniert.
Für Replatform-Workloads auf Kubernetes umfasst Optimierung mehrere Ebenen und sollte als gemeinsamer Regelkreis gesteuert werden.
Zentrale Eingaben
Cutover-Berichte, Incident-Trends, SLO-Messwerte, Telemetrie-Baselines und Kostenberichte.
Ergebnisse
Priorisiertes Verbesserungs-Backlog, validierte Tuning-Änderungen und aktualisierte Betriebsstandards.
Governance-Effekt
Nachvollziehbare Trade-off-Entscheidungen zwischen Performance, Stabilität und Kosten.
Dieses Asset führt dieselbe Spring-Boot- und PostgreSQL-Referenzimplementierung fort, die für Provisioning, Migration, Cutover und Stabilisierung verwendet wurde. Es führt kein weiteres Beispiel oder Repository ein. Die vorhandenen Terraform-Variablen, Ansible-Konfiguration, Observability-Instanz und Validierungsworkflows bleiben die technische Baseline für Optimize.
Die Optimize-Erweiterung beantwortet eine praktische Frage: Wie lassen sich Über- oder Unterprovisionierung erkennen und VM- oder Storage-Kapazität anschließend über einen kontrollierten IaC-Workflow ändern?
STACKIT CMF Rehost Spring Boot Repository Arbeiten Sie mit derselben Terraform- und Ansible-Referenzimplementierung weiter, die in den vorherigen Rehost-Migrationsschritten verwendet wurde. Repository öffnen Rehost-Implementierungs-AssetNutze den managed STACKIT Observability -Stack als Datenquelle.
Architektur-Referenzen:
Nutze das Dashboard, um Infrastruktur-Auslastung, Anwendungszustand, Request-Verhalten und Alert-Historie gemeinsam zu bewerten, bevor die VM-Kapazität geändert wird.

Definiere technische Schwellwerte, bevor du Kapazität änderst.
Halte Schwellwerte workload-spezifisch und validiere sie gegen reale Traffic-Muster.
Für stateful Rehost-Workloads sollten Signale aus der Datenbank im selben Dashboard-Zyklus bewertet werden.
Nutze diese Signale gemeinsam mit VM-Metriken, damit Optimize-Entscheidungen nicht nur auf CPU oder Memory basieren.
Wenn der Rehost-Workload den Datenbank-Layer später auf PostgreSQL Flex umstellt, sollte DB-Rightsizing in denselben Optimize-Loop aufgenommen werden.
Passe die VM-Größe in env.tfvars an:
machine_type = "g3i.2"Apply und Plan-Ausgabe prüfen:
terraform plan -var-file=env.tfvarsterraform apply -var-file=env.tfvarsDanach validieren:
systemctl status, synthetische Checks)Passe die VM-Größe in env.tfvars an:
machine_type = "g3i.4"Apply durchführen und mit denselben Post-Change-Checks validieren.
Wenn sich SLOs nach dem Rightsizing verschlechtern, rolle zurück, indem du den vorherigen machine_type wiederherstellst und IaC erneut ausführst.
Behandle Rollback als regulären Runbook-Schritt und nicht nur als Notfallweg.
terraform plan.In Rehost-Szenarien sind CPU und Memory nur eine Seite des Rightsizing. Auch Storage-Performance kann zum Engpass werden.
Eine Block-Storage-Performance-Klasse definiert die maximalen IOPS und den maximalen Durchsatz für das gesamte Volume. Zugriffe von Anwendung, Datenbank, Betriebssystem und Backup teilen dieses Performance-Budget. Wählen Sie die Klasse vor dem Erstellen des Volumes anhand gemessener Lastspitzen, Latenzanforderungen, Backup-Aktivität und expliziter Wachstumsreserve.
Die folgende Tabelle listet die derzeit verfügbaren Leistungs-Klassen für die Region EU01 auf:
| Leistungs-Klasse | Name | Max. IOPS | Max. Durchsatz (MB/s) |
|---|---|---|---|
| Leistungs-Klasse 0 | storage_premium_perf0 | 120 | 25 |
| Leistungs-Klasse 1 | storage_premium_perf1 | 500 | 50 |
| Leistungs-Klasse 2 | storage_premium_perf2 | 1000 | 100 |
| Leistungs-Klasse 4 | storage_premium_perf4 | 2000 | 150 |
| Leistungs-Klasse 6 | storage_premium_perf6 | 5000 | 200 |
| Leistungs-Klasse 8 | storage_premium_perf8 | 10000 | 250 |
| Leistungs-Klasse 10 | storage_premium_perf10 | 15000 | 300 |
| Leistungs-Klasse 12 | storage_premium_perf12 | 20000 | 350 |
| Leistungs-Klasse 13 | storage_premium_perf13 | 20000 | 700 |
| Leistungs-Klasse 14 | storage_premium_perf14 | 25000 | 400 |
| Leistungs-Klasse 15 | storage_premium_perf15 | 25000 | 800 |
| Leistungs-Klasse 16 | storage_premium_perf16 | 30000 | 450 |
| Leistungs-Klasse 17 | storage_premium_perf17 | 30000 | 900 |
| Leistungs-Klasse 18 | storage_premium_perf18 | 35000 | 500 |
| Leistungs-Klasse 19 | storage_premium_perf19 | 35000 | 1000 |
| Leistungs-Klasse 20 | storage_premium_perf20 | 40000 | 550 |
| Leistungs-Klasse 21 | storage_premium_perf21 | 40000 | 1100 |
IOPS – Input/Output Operations per second (Ein-/Ausgabebefehle pro Sekunde)
Durchsatz – Durchsatz in Megabyte pro Sekunde
Somit lassen sich die verwendeten Klassen anhand der Namensgebung im Detail unterscheiden. Beispiel: „Block Storage Premium – Leistungs-Klasse 2“ entspricht SSD-Festplatten mit max. 1000 IOPS und max. 100 Mbyte/s Durchsatz.
Dieser Abschnitt wird mehrmals am Tag automatisch aus der STACKIT-Doku übernommen. Hier lässt er sich nicht ändern. Änderungen gehören in die STACKIT-Doku.
In der Rehost-Baseline teilen sich Betriebssystem, Spring-Boot-Anwendung und PostgreSQL-Daten das Boot Volume. Eine Änderung der Performance-Klasse erfordert daher ein kontrolliertes Ersatzziel:
Verwenden Sie ein separates Data Volume, wenn Storage-Kapazität oder -Performance unabhängig vom VM-Lifecycle weiterentwickelt werden müssen. Erstellen Sie für eine andere Performance-Klasse ein neues Volume im erforderlichen Verfügbarkeitsmodell mit ausreichender Kapazität, stoppen Sie Schreibzugriffe, migrieren und verifizieren Sie die Daten, wechseln Sie Attachment oder Mount und bewahren Sie das Quell-Volume auf, bis Abnahme- und Rollback-Gates passiert sind.
Daten aus Block Storage migrierenBehandeln Sie Storage-Prüfungen als Teil derselben Optimize-Schleife und validieren Sie nach jeder Änderung erneut Latenz, Fehlerverhalten, Recovery und Kostenwirkung.