Overview
Section titled “Overview”This pattern represents the validated low-change target for the Spring Boot Rehost example. The JAR
continues to run as a systemd service, while PostgreSQL remains self-managed on the same VM. The
runtime and database operating models therefore stay VM-centric.
The baseline is intentionally one VM. It demonstrates repeatable migration controls and operations readiness, not application or database high availability.
Typical use case
Section titled “Typical use case”- Low change tolerance: business behavior must remain stable during migration.
- Short migration windows: runtime relocation should be predictable and repeatable.
- Operations continuity: teams keep VM-centric operating procedures while moving to STACKIT.
Architecture diagram
Section titled “Architecture diagram”Design best practices
Section titled “Design best practices”- Restrict ingress explicitly: allow SSH and application traffic only from approved source CIDRs; allow exporter traffic only from STACKIT service ranges.
- Keep credentials out of state and inventory: pass the PostgreSQL password through the process environment and store the generated runtime environment file as root-only.
- Define observability minimum set: include infrastructure and application health metrics before go-live.
- Separate recovery layers: use the database pre-restore dump for cutover rollback and Server Backup for VM-level disaster recovery.
- State the availability boundary: one VM with a local database has a shared failure domain. Add a load balancer or second node only with a separately designed database and consistency model.
- Use explicit security groups and ingress rules: expose only required ports and protocols.
Confirm which volumes the backup policy covers and rehearse recovery independently of cutover rollback. The available server-backup features do not by themselves prove PostgreSQL consistency or the application’s recovery objectives.
- Automated, monitored server backups with easy recovery
- Create backups for one, multiple, or all volumes connected to a server at any time
- The advanced custom backup schedules enable automated backups to be created
- Freely select the retention period after which backups are automatically deleted
- Partly restore certain files by seamlessly restoring a volume backup to a new volume
What is this?
This section is copied from the STACKIT docs automatically, several times a day. It cannot be changed here. Changes belong in the STACKIT docs.
Related migration assets
Section titled “Related migration assets”Repository usage and required settings
Section titled “Repository usage and required settings”- Copy the example file:
cp env.tfvars.example env.tfvars - Set required values:
create_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 = true- Optional CMF feature wrapper (
flags.env):
setup_project=truesetup_observability=truesetup_database=falsesetup_workload=truesetup_loadgen=falsesetup_dns=false- Apply:
terraform initterraform apply -var-file=env.tfvarsExpected result: application_url serves the Spring Boot app directly from the VM on the configured
application port. PostgreSQL listens for the application on localhost, Observability scrapes node
exporter, and the boot volume has an enabled daily backup schedule.
Availability boundary and extensions
Section titled “Availability boundary and extensions”This baseline has no automatic failover. A load-balancer or multi-VM variant is useful only after application session handling, PostgreSQL placement, write consistency, health checks, TLS, and traffic switching have been designed and tested together. Treat that as a separate architecture decision, not as an implicit property of this Rehost path.
Asset historyActive 5 of the last 12 weeksLWUpdatedNo updates · 1 bar = 1 week i
- LWLukas WeberrußHead of STACKIT Cloud Migration Framework · STACKITOwner
Lukas WeberrußHead of STACKIT Cloud Migration Framework · STACKITOwnerActive 10 of the last 12 weeks · 47 updateswww.linkedin.com/in/lukas-weberruß-a360b081