Is Fly.io’s Johannesburg region good enough for Nigerian users?
Partly, and less than it looks. Fly.io is the only major platform on this list with an African region: jnb, in Johannesburg. That is real compute in Africa and it beats routing to Frankfurt. But Johannesburg is about 4,500 km from Lagos on a different set of subsea cables, and Fly’s own region table marks jnb as not carrying Managed Postgres — so an app placed there talks to a database in Europe, which puts the longest hop back into every request that reads data. Naijacloud runs af-west in Port Harcourt with the app, the database and the object storage in the same in-country region, so nothing in the request path leaves Nigeria.
Give Fly the credit it is due. Placing machines in 35 regions with anycast routing in front of them is hard, and having one of those regions in Africa at all puts Fly ahead of Render, Vercel-by-default, DigitalOcean, Netlify, Heroku and Supabase. If you are running stateless compute for African users and your state is somewhere else regardless, jnb is a good choice and you should use it.
The gap is state. Fly’s Managed Postgres is not offered in jnb, so the shape of a Fly app serving Nigeria is compute in Johannesburg and Postgres in Europe. That is worse than it sounds for a page that makes several sequential queries: the browser saves one long hop and every query gains one. Unmanaged alternatives exist — a Postgres you run yourself on a Fly Machine with a volume in jnb — and then you own the backups, the failover and the upgrades, which is the thing a managed database was for.
On distance: Lagos to Johannesburg is roughly the same as Lagos to Frankfurt in kilometres, and often worse in practice, because West African traffic to southern Africa frequently routes through Europe rather than across the continent. African internet topology is not a straight line, and the only reliable way to know what your users see is to measure from their network rather than from a map.
Residency, again, is the argument that does not bend. A requirement naming Nigeria is not met by South Africa, whatever the latency turns out to be.
Platform comparison
Scored out of five on what actually changes your day.
A compute region in Africa
Naijacloud
5/5af-west in Port Harcourt — in-country, not merely in-continent.
Fly.io
4/5jnb in Johannesburg. A genuine African region, and the best answer any competitor on this site has.
A managed database in that region
Naijacloud
5/5Six engines available in af-west, beside the app on a private address.
Fly.io
2/5Managed Postgres is not offered in jnb. The managed database goes to Europe, or you operate one yourself on a Machine.
Distance from Lagos
Naijacloud
5/5Domestic. No subsea crossing and no transit through another continent.
Fly.io
3/5About 4,500 km, and West-to-southern-Africa traffic often transits Europe rather than crossing the continent directly.
Satisfying a Nigerian data-residency clause
Naijacloud
5/5Compute, database and buckets all in Nigeria.
Fly.io
1/5Not possible. South Africa is a different jurisdiction, and the managed database is not even there.
Placing compute close to users generally
Naijacloud
2/5Three regions, one service in one region. No anycast and no multi-region placement.
Fly.io
5/5Around 35 regions, anycast IPs, and explicit per-region machine placement with the tooling to manage it.
Frequently asked
You can run a Postgres you operate yourself — a Machine with a volume, in jnb. What you cannot get there is Fly’s Managed Postgres, so the backups, the failover, the version upgrades and the monitoring become yours. That is a real option and it is a different job from clicking "managed".
Sometimes, and not reliably. The distances are similar, and a lot of West African traffic to southern Africa is routed through Europe rather than across the continent, which can make Johannesburg slower than Frankfurt from some Nigerian networks. Measure it from your users’ ISPs before assuming the map tells you the answer.
Two things. The request stays on domestic routes, so it is not exposed to subsea cable paths or European transit at all. And the data physically sits in Nigeria, which is the only thing that answers a residency requirement — latency is negotiable, jurisdiction is not.
No. One service runs in one region, and there are three regions. If your problem is being close to users on several continents at once, Fly is built for that and we are not.
Related questions
Vercel · Nigeria latency and regions
Does Vercel have a region in Nigeria?
Render · Nigeria latency and regions
Does Render have an African region?
Supabase · Nigeria latency and regions
Which Supabase region should a Nigerian project use?
Or read the full Naijacloud vs Fly.io comparison, which covers pricing, databases, email and the rows we lose.
Try it against your own workload
Deploy one service from a Git repo in Port Harcourt and compare the numbers yourself. Free tier, no card, no FX.