Fly.io is amazing for multi-regional applications, but most applications target a single region. Let us compare Fly.io to using a single VPS architecture based on cost and simplicity.
What Fly.io is actually for
What Fly.io proposes is genuinely unique: deploy your containers as lightweight VMs to dozens of different regions, direct traffic to the nearest region through anycast, and provide applications with stateful features (volumes, litefs, regional Postgres replicas) so they can run near to the users. This is a really elegant solution for a very difficult problem – when you need low-latency in multiple continents, WebSocket collaboration and multiplayer games.
The more relevant question is: Is that your application? Most applications have users from only one or two regions, their static assets already cached on CDNs, and the 120 ms round trip from the opposite side of the globe is okay.
The complexities you receive
Distributed systems challenges don't magically go away due to the platform being easy. You have volumes tied to a region and a host, which means you need to think about placement. Fly Postgres, according to their own words, isn't a managed database: you have to handle replication and failover yourself. Autoscaling machines add in cold-start behavior that you'll need to account for. Networking between regions, replicated data consistency, and troubleshooting a problem that only happens in one region are now your job.
This isn't any kind of criticism against Fly – it's simply the cost of using multi-region and is only valuable when you need the product to be.
Cost analysis for a single-region product
Fly bills per machine (CPU/RAM pair), per volume GB, and per egress GB. A simple always-on stack with two redundant machines with shared CPU, one Postgres machine with a volume and some egress is going to cost you somewhere between $30 and $60 per month, depending on actual utilization.
The boring option would be: one properly sized VPS in the same region as your users (Falkenstein, Germany, for Europe; Ashburn, US, for the East Coast), Cloudflare’s free plan to serve static content and to handle DDoS attacks, and Peon as your deploy pipeline. Total: around $10 per month flat, fixed cost, Postgres running locally on NVMe without any replication worries.
What a single-VPS configuration lacks
Multi-region latencies: remote users bear the round-trip penalty (CDN reduces for assets)
Instant region failover: recovery is restore from backup to a fresh server, not minutes but hours at most
Zero-to-scale economics for idling applications: the VPS runs perpetually, and that is the desired state for a production environment in most cases anyway
Decision Rule
Jot down the physical locations of your users. If 80% or more live on a single continent, use a single origin close to them and place a CDN in front. Save the money and complexity. Think of multi-region only when latencies of a distant region turn into a financial issue, not before. Dull solutions prevail until proved wrong.
Top comments (0)