The Problem
An Australian SaaS startup was running their application on AWS EC2 (t3.xlarge) and RDS (db.t3.medium) with S3 for media storage. Monthly AWS costs had grown to $2,800/month — consuming 35% of their operating budget at a critical growth stage.
Performance was also a concern — their Sydney-based users were experiencing 380ms average response times despite the server being in ap-southeast-2.
Our Migration Plan
After assessing the workload, we recommended Hetzner Cloud (Nuremberg) with Cloudflare as CDN — bringing estimated costs to $720/month while improving global performance via Cloudflare's 300+ edge nodes.
- Hetzner CX41 (4 vCPU, 16GB RAM): $28/month — vs AWS t3.xlarge at $130/month
- Managed MariaDB on same server — vs AWS RDS at $65/month
- Cloudflare R2 for media storage — zero egress fees vs S3
- Cloudflare CDN — free tier covers their traffic
Zero Downtime Migration Process
- Set up identical environment on Hetzner — same OS, PHP version, Nginx config
- Deployed application code via Git
- Migrated database with mysqldump — tested full restore on new server
- Lowered DNS TTL to 300 seconds 24 hours before cutover
- Sync final data 30 minutes before cutover using rsync
- Updated DNS — old server remained live for 2 hours as fallback
- Migrated S3 media to Cloudflare R2 over 48 hours post-cutover
Results
Monthly costs dropped from $2,800 to $720 — a 74% reduction saving $25,000 annually. Response times improved from 380ms to 180ms average due to Cloudflare edge caching. The migration had zero downtime — not a single user session was interrupted.