Back to articles

How owning our cloud lets us ship faster than the agencies

Building your own cloud is supposed to be a bad idea. For us, it has been the single best engineering decision we made — and we will tell you the parts we got wrong too.

Owning the cloud infrastructure powering a multi-product African group
Photo: replace with selected Unsplash image (credit photographer)

The standard advice is "do not build your own cloud." We did anyway. Here is the honest accounting of how it has gone.

Why we built it

The first BOU product was running on a foreign hyperscaler. The bill was in dollars. The latency to our Nigerian users was higher than we wanted. Support went through a generic queue. The whole experience was: pay a lot, get serviceable, do not expect anyone to care about your specific problem.

We did the math on running our own infrastructure for the next five products. The bill, including engineer time, came out lower than continuing on the hyperscaler at projected growth. The kicker: we would also be paying in naira, not dollars. So we built BouCloud.

What it gets us

Three things, and only one of them was obvious going in.

1. Cost in the right currency. Our infrastructure costs scale with our revenue, in the same currency as our revenue. When the FX rate moved against the naira (which it did, repeatedly), our infrastructure costs did not blow up the way they did for every Nigerian competitor on AWS. That alone has paid for the whole effort several times over.

2. Speed of decisions. When we need a new region, we make the call. When we need a different storage configuration, we change it. When a customer needs something weird (and Nigerian enterprise customers always need something weird), we can say yes the same day. The agencies built on someone else's cloud cannot say yes that fast.

3. The compounding learning. Every product we ship makes the platform better, and a better platform makes every future product cheaper to ship. The first product on BouCloud was expensive. The fifth was almost free.

What we got wrong

Plenty. Here is the honest list.

We underestimated the operational tax. Running your own cloud means you also wake up at 3am when something breaks. We did not staff for this properly in year one. We do now.

We over-engineered the first version. Our first BouCloud platform had three abstraction layers that we did not need. We rewrote it eighteen months in with about a third of the moving parts. The second version is smaller, faster, and easier to reason about. The first version was a learning bill we did not need to pay.

We were slow to write the operational tooling. The platform worked. The dashboards to know whether it was working were six months behind. That gap caused some embarrassing incidents we could have caught earlier. Now we write the monitoring first, the feature second.

We tried to be cute about hardware. Early on we mixed and matched hardware to save money. The savings did not justify the operational headache. We now standardise hard on a small number of configurations and accept that we will overpay by a few percent for the simplicity.

What we would never do again

We would never build our own cloud for a single product. It does not pay back. The whole bet only makes sense if you are going to run multiple products on top of it.

If you have one app and a roadmap of features for that one app, use a hyperscaler. The math is simple, the time-to-market is faster, and you have better problems to solve. Build your own infrastructure when you have the second and third product staring you in the face.

You build your own cloud the same way you build your own tools — only when you are about to use it five times in a row. Anything less and you are romanticising the work.

The compounding across products

Today, when we spin up a new BOU product, here is what comes for free: compute, storage, networking, deploys, secrets management, queues, scheduled jobs, internal authentication, observability. The team building the new product does not have to think about any of it. They write the product code and BouCloud runs it.

That free-for-the-team-but-not-actually-free infrastructure is the thing the agencies cannot match. They are paying someone else's bill, in someone else's currency, on someone else's schedule. We are paying ours, and after enough cycles it does not feel like a bill anymore — it feels like a tool we sharpened ourselves.

The trade-off, named

Owning your cloud is more work than not owning it. It costs you focus that you could have spent on product. It puts you in the business of running servers when you wanted to be in the business of building software. We accept that trade-off because the alternative — running our group's economic future on someone else's pricing decisions, in someone else's currency — is not actually a trade-off, it is a vulnerability.

Different companies will land in different places on this. We do not think every African tech company should own its cloud. We think it was right for us.

Related reading