
Managed Kubernetes on OVHcloud vs Scaleway: a first look for web app teams
June 29, 2026
Putting It All Together: A Reference Architecture for a GDPR-Compliant SaaS App
July 9, 2026Moving a production application to a new provider takes preparation. The cutover itself happens in minutes. The work that makes it boring takes weeks. This guide covers what to verify before, during, and after a migration to European infrastructure providers like OVHcloud, Scaleway, or Hetzner. It includes notes on open source services that replace the proprietary tools you leave behind.
Audit Your Infrastructure and Establish Baselines
Start by writing down what you actually run. Do not rely on an architecture diagram. List every live service, instance size, storage volume, managed database, cron job, background worker, and third-party API that calls into your system.
For each component, record current performance numbers. Track average and p95 response times, requests per second at peak, database query latency, and cache hit rates. You need these because “it feels slower” is an unhelpful bug report after cutover. Real baselines let you compare like for like.
Check where your data lives and the exact volume. A 2 TB database transfers differently from a 50 GB one, and size dictates your transfer strategy. Note any data residency requirements from customers or regulators, since keeping data inside the EU often drives the move.
Map your dependencies on proprietary services. If you use a US-based managed search, queue, or object store, identify the European or open source replacement immediately. S3-compatible storage like Scaleway Object Storage or OVHcloud Object Storage means your existing SDK calls keep working with a simple endpoint change. Managed Postgres or MySQL is available from all three major European providers, or you can self-host on a dedicated instance. OpenSearch or Meilisearch replaces proprietary search services. RabbitMQ or self-hosted Kafka covers messaging needs, while Redis or Valkey handle caching. Compatibility matters more than the brand.
Prepare the Target Environment
Build the target environment fully before sending any production traffic. Provision the instances, networks, security groups, and load balancers in the new region. Match or exceed your current capacity, and right-size after you have real numbers.
Replicate your configuration as code. If you use Terraform or Ansible, point it at the new provider and review what needs adjusting. Provider-specific resources, instance type names, and region identifiers will change. Hetzner Cloud, Scaleway, and OVHcloud each have their own Terraform providers, so the structure carries over even when the resource definitions differ.
Issue certificates for the new environment early. Whether through Let’s Encrypt or your provider’s managed certificate service, confirm they install correctly on the new load balancer. A certificate that only appears at cutover fails at cutover.
Run a full deploy to the new environment and test it against a temporary hostname. Every endpoint should respond. Every background worker should pick up jobs. Every scheduled task should fire. Hit the application from outside your network, rather than just from a jump host, so you catch firewall and DNS resolution problems before users experience them.
Transfer Your Data
Data transfer frequently stalls migrations, so treat it as an isolated phase. For databases, logical replication is the cleanest approach. Stand up the new database as a replica of the old one, let it catch up, and keep it in sync until cutover. Postgres supports this natively, and MySQL has equivalent tooling. When you cut over, the new database is current and you only stop writes for the few seconds it takes to promote it.
If replication is unavailable, a dump-and-restore works but requires a maintenance window long enough to copy, transfer, and load the full dataset. Time this in advance on a copy of production data. Transfer speed often becomes the bottleneck, so test your throughput between the old and new networks before you commit to a maintenance window.
For object storage, run an initial bulk sync well ahead of cutover using a tool like rclone. Run a final incremental sync during the cutover window to catch recent changes. With buckets in the millions of objects, the incremental pass keeps the window short.
Verify the copied data instead of assuming it transferred cleanly. Compare row counts on key tables, checksum a sample of files, and run representative queries against the new database to confirm the data and indexes arrived intact.
Execute the DNS Cutover
Lower your DNS TTL days before the planned cutover. Drop it to 60 or 300 seconds so clients pick up the new address quickly when you change the record. If your TTL is set to a day, a record change means some users keep hitting the old server for 24 hours.
Decide your cutover sequence and write it down as clear steps anyone on the team can follow. First, enable maintenance mode or set the application to read-only for a clean database promotion. Next, run the final data sync and promote the new database. Switch the application configuration to point at the new database and services. Change the DNS record to the new load balancer. Watch traffic shift as TTLs expire. Finally, confirm the new environment serves real requests and disable maintenance mode.
Keep the old environment running and reachable during this window. If a problem occurs, your rollback involves changing the DNS record back. This only works if the old stack is alive and the old database remains untouched.
Monitor the New Environment
The first hour after cutover is for watching the system. Compare live metrics against the baselines you recorded. Response times, error rates, database load, and queue depth should match the old environment or improve. Creeping error rates or slow queries that hid during testing will appear here.
Check the background processes that often break quietly. Confirm outbound email still sends and avoids spam folders, since the new IP lacks reputation. Verify scheduled jobs actually run on the new servers. Verify log shipping and monitoring report correctly from the new region. Check that backups run on the new database.
Watch your new IP reputation. A fresh IP block from a European provider requires updated SPF, DKIM, and DMARC records to match. Mail providers treat brand-new sending IPs with suspicion until they warm up.
Leave the old environment in place for a week or two after everything looks healthy. The cost of running it slightly longer is small compared to discovering days later that a quarterly report job only existed on the old server. Once you complete a full business cycle without surprises, decommission the old environment and remove the data according to your retention rules. Doing the unglamorous verification work ahead of time makes the cutover a short, rehearsed sequence rather than a tense improvisation.
