Migrating to Hetzner02/10/2025We saved 76% on our cloud bills while tripling our capacity by migrating to Hetzner from AWS and DigitalOcean.BackgroundAll the software we build at DigitalSociety runs in the cloud. Prior to the migration we ran workloads on two platforms:We use AWS for some of our core hosting needs (DNS via Route53 and sending emails via SES).We also chose AWS to host tap, our first SaaS product, using a variety of AWS services (ECS for container orchestration, RDS for relational databases, ALB for ingress, and a long tail of peripheral services, as is the AWS way).We chose AWS for familiarity since we have worked with it for nearly 15 years. We also prize their reliability, particularly when it comes to API stability. We automate as much of our infrastructure management as possible, and don't want to spend time chasing API breaking changes.We used DigitalOcean Kubernetes to host several lightweight services, such as epcdata.scot, and monitoring services (Umami for web analytics, OpenObserve for telemetry, and Uptime Kuma for availability monitoring).We chose DigitalOcean for its relatively simple and cost-effective managed Kubernetes offering, where you pay for the cluster's resources (nodes, block storage, load balancers) but the controlplane is free.We chose Kubernetes for familiarity since we have worked with it for nearly 10 years. Although it requires a lot of boilerplate configuration, once it has been set up Kubernetes enables a frictionless developer experience for deploying applications quickly.Why two cloud providers? Initially we used only DigitalOcean, but a data intensive SaaS like tap needs a lot of cloud resources and AWS have a generous $1,000 credit package for self-funded startups. Building tap with AWS credits let us experiment with our infrastructure needs without worrying about the cost.Credits don't last foreverIn the spirit of minimising our operational costs we opted to use AWS' serverless container runtime, Fargate. This let...
First seen: 2025-10-17 10:52
Last seen: 2025-10-18 00:55