Zum Inhalt springen
Beta

Spring Boot on Cloud Foundry mit PostgreSQL und Autoscaler

Zuletzt aktualisiert am

Dieses Muster nutzt STACKIT Cloud Foundry als primäre Laufzeit für Spring-Boot-Anwendungen. Das Zielbild priorisiert schnelle Auslieferung über eine durch die Plattform gemanagte Laufzeit, gemanagtes PostgreSQL und Autoscaling.

  • Application-first-Delivery: Teams priorisieren Deployment-Geschwindigkeit statt Infrastruktur-Verwaltung.
  • PaaS-Betriebsmodell: Life cycle, Skalierung und Health-Management werden an die Plattform delegiert.
  • Service-Binding-Ansatz: Anwendungs-Zugangsdaten werden über Cloud-Foundry-Service-Bindings und native Marketplace-Integrationen bereitgestellt.
UsersCloud FoundryPostgreSQL Flex ServiceObservabilityCF RouterApp AutoScaler ServiceSpring Boot App-Instanzen (1..N) HTTPSRoute auf die AppSkalierung nach LastService-BindingMetriken/Logs
  • Service-Bindings konsistent verwenden: Zugangsdaten und Endpunkte über Plattform-Binding steuern.
  • Stateless-Deployment klar halten: Daten in PostgreSQL auslagern und App-Instanzen austauschbar halten.
  • Fallback für Service-Limits definieren: Runbook-Pfade für Quoten oder Wechsel des Service-Plans festlegen.
  • Route-Strategie an Environment-Grenzen ausrichten: Routen und Service-Instanzen pro Stage oder Tenant trennen.
  1. Datei aus dem Beispiel kopieren:
Terminal-Fenster
cp env.tfvars.example terraform.tfvars
  1. Projekt-, Auth- und Cloud-Foundry-Werte in terraform.tfvars setzen.

  2. Initialer Rollout (Terraform erstellt App und Route):

setup_workload = true
manage_workload_app_route = true
Terminal-Fenster
terraform init -upgrade
terraform plan
terraform apply
  1. Reguläre Updates (stabiler Modus):
manage_workload_app_route = false
existing_cf_app_id = "<deine-app-guid>"
Terminal-Fenster
terraform plan
terraform apply

Hinweis: Diese Trennung gibt es, weil bestimmte Cloud-Foundry-Provider-Versionen nach der initialen Erstellung weiterhin wiederkehrenden App/Route-Drift erzeugen können.

Für den Schritt Optimierung und Rightsizing im Modul Optimize nutze:

Asset-Titel
Framework
Asset-Typ