Good questions! The short answer is: having both volumes in the same region is better because it allows automatic failover. Automatic failover between regions is risky, and not something Postgres is designed for.
Do you automatically place volumes for the same app in distinct physical arrays? How was this migration done?
Yes this is what we do! We did emergency maintenance on one array, users’ volumes on other arrays were unaffected.
When you add a volume to a Fly.io app, we default to requiring a unique “zone”. You can disable this if you want a bunch of cache space and don’t care about redundancy with the --require-unique-zone
option on fly volumes create
.
Regional outages are rare. We initially designed Fly.io to handle regional outages for stateless workloads. A few years later, we’ve realized that the cost and UX complexity of automatic region failover is not worth it for full stack app developers. You can build environments that failover between regions, though, it’s just not the default way our database and app launch processes work.