ComparisonsFly.ioNigeria latency and regions

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.

What you need
Naijacloud
Fly.io

A compute region in Africa

Naijacloud

5/5

af-west in Port Harcourt — in-country, not merely in-continent.

Fly.io

4/5

jnb in Johannesburg. A genuine African region, and the best answer any competitor on this site has.

A managed database in that region

Naijacloud

5/5

Six engines available in af-west, beside the app on a private address.

Fly.io

2/5

Managed 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/5

Domestic. No subsea crossing and no transit through another continent.

Fly.io

3/5

About 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/5

Compute, database and buckets all in Nigeria.

Fly.io

1/5

Not possible. South Africa is a different jurisdiction, and the managed database is not even there.

Placing compute close to users generally

Naijacloud

2/5

Three regions, one service in one region. No anycast and no multi-region placement.

Fly.io

5/5

Around 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".

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.