Blog/Backend Engineering

Backend Engineering

How We Design Systems That Survive NEPA, Bad Network, and Black Friday Traffic

A backend that only works when everything goes right is not a backend, it is a demo. Here is how we build systems that keep standing when the power goes, the network drops, and traffic spikes without warning.

AO

Alex O.

Backend Engineer, Abango Technologies

7 min read · August 2026
A developer's desk set up for monitoring a live system

Any backend can look impressive in a demo, on good WiFi, with ten test users clicking around calmly. The real test comes on the day everything happens at once: a marketing campaign goes live, traffic spikes fifteen times normal, half the country's networks are having a bad day, and somewhere a server decides to restart itself at exactly the wrong moment. Systems built for Nigeria have to be designed for that day from the very beginning, not patched together in a panic after it happens for the first time.

We plan for the worst network conditions, not the average ones

It is tempting to design a backend around typical request patterns and typical response times. We design around the worst ones instead. Requests that arrive twice because a client retried after a slow response. Requests that arrive out of order. Connections that drop mid transaction and reconnect minutes later expecting to pick up where they left off. Building defensively against these conditions from the start costs a little more time upfront, and saves an enormous amount of firefighting later, when it actually matters most.

Caching and queues are not optional extras, they are load-bearing walls

When traffic spikes suddenly, whether from a promotion, a viral moment, or simply more people coming online at once, a system without proper caching and queuing collapses under its own database. We cache aggressively wherever data does not need to be perfectly fresh to the second, and we push slower, non urgent work, notifications, report generation, reconciliation, onto background queues instead of making a user wait for it in the request cycle. The result is a system where a sudden surge in traffic slows things down gracefully instead of taking the whole platform offline.

An engineer reviewing system dashboards on multiple monitors at night
Watching the dashboards on a busy night is less dramatic when the system was built to expect the spike.
"A system that only survives calm conditions has not actually been tested. It has just been lucky so far."

We load test before the client's biggest day, not after it goes wrong

Before any client launches a major campaign, sale, or public announcement we know is coming, we deliberately throw simulated traffic at the system well past what we expect on the real day. It is far better to find the breaking point ourselves, quietly, on a Tuesday afternoon, than to find it live in front of thousands of real users on launch day. This has repeatedly caught bottlenecks that would otherwise have turned an exciting product moment into a support nightmare.

On-call culture without blame

Things still go wrong sometimes, no matter how carefully a system is built. What matters at that point is how the team responds. We keep clear, practiced on-call processes so that when something breaks at an inconvenient hour, the right person is alerted immediately and knows exactly what to check first. After every incident, we hold a calm review focused entirely on what the system can learn, never on blaming whoever was on call. That culture is what keeps engineers honest about reporting problems early, instead of quietly hoping nobody notices.

AO

Written by

Alex O.

Backend Engineer, Abango Technologies

Alex builds Abango's backend systems in PHP and Laravel, the wallets, ledgers, and payment rails that clients' apps sit on top of. He believes the best backend engineering is the kind nobody ever has to think about.

Your next product

Have something important to build?

Tell us what you are solving, where the product stands, and what success needs to look like. Our team will respond with the right next step.

Typical response time: within two business days