You have heard the word microservices in pitch decks, job posts, and agency proposals. It sounds mature. It sounds scalable. It also sounds expensive.
This post explains microservices in plain language: what they are, why teams adopt them, where they go wrong, and when a South African founder should care during custom software development.
What is microservices architecture?

Microservices architecture splits one product into many small services. Each service owns a narrow job, runs in its own process (often its own repository or deploy unit), and talks to the others over the network, usually via HTTP APIs (Application Programming Interfaces) or message queues.
Compare that with a monolith: one codebase, one deploy, shared database tables, modules called by function name instead of network calls.
Think of a monolith like a single restaurant kitchen where one head chef coordinates everything. Microservices are like separate stations (grill, pastry, drinks) that pass tickets to each other. Coordination is explicit. So is failure.
Neither model is "more professional." They are trade-offs.
How microservices differ from a monolith
| Topic | Monolith | Microservices |
|---|---|---|
| Deploy | One artifact, one release | Many services, many releases |
| Data | Often one database | Often database per service |
| Scaling | Scale the whole app | Scale hot services only |
| Team shape | One team owns the repo | Teams own services |
| Debugging | One process, one log stream | Traces across services |
| Early speed | Usually faster | Usually slower |
For an MVP (minimum viable product), a well-structured monolith wins most of the time. You ship one loop, learn from users, then split what actually hurts.

Why companies adopt microservices
Independent scaling
If checkout hammers your servers but your admin dashboard sleeps, you can scale the payment service without paying for idle admin containers. That matters at real traffic, not at ten beta users.
Independent teams
Large orgs want Team A to ship billing without waiting for Team B's calendar refactor. Separate deploy pipelines reduce coupling between people, not just code.
Technology choice per service
One service might stay on Node.js while another moves to Python for machine learning. That flexibility is real, but it also multiplies operational skill you must hire or buy.
Fault isolation (in theory)
A bug in the newsletter service should not take down login. In practice, cascading failures, timeouts, and shared dependencies often spread pain anyway unless you invest in resilience patterns.
The downsides beginners underestimate
Distributed complexity

Every user action might touch five services. You need correlation IDs in logs, distributed tracing, retries, idempotency keys, and clear timeout budgets. That is not free senior time.
Data consistency is harder
In a monolith, one database transaction can move money and update an order in one commit. Across services you get eventual consistency, sagas, compensating transactions, and "why does my dashboard show paid but my email says pending?"
Slower local development
Running "the app" might mean
Operational overhead
More deploys, more secrets, more monitoring dashboards, more on-call rotation. An app development company in South Africa quoting microservices for a first build is often selling you infrastructure you do not need yet.
Cost
Cloud bills, CI (continuous integration) minutes, and observability tools multiply. For early-stage runway, that money might belong in distribution or support.
When microservices make sense
Consider microservices when most of these are true:
- You have product-market fit and measurable load on specific subsystems.
- Multiple teams step on each other's deploys weekly.
- Clear domain boundaries exist (billing, catalog, notifications) with stable contracts.
- You can fund platform work: tracing, service mesh or gateway, standard libraries, on-call.
- Compliance or scale forces isolation (PCI scope reduction, multi-region, tenant sharding).
If you are pre-revenue and still renaming features weekly, you are not there.
When to stay monolithic (especially in South Africa)
Stay monolithic (or a modular monolith) when:
- You are validating an idea with founders and early customers.
- One senior engineer (or a small pod) owns delivery.
- Connectivity and mobile performance matter more than theoretical scale (Stage 6 resilience is a better first investment than premature splitting).
- You need payments live in weeks, not quarters (SA payment integration patterns).
I have rebuilt products where a junior team microsplit a five-user MVP into eight repos. The founder paid for DevOps theater instead of checkout that survived Ozow webhooks.
Modular monolith: the middle path

A modular monolith keeps one deploy but enforces boundaries inside the codebase:
billing/,catalog/,notifications/folders with explicit public APIs- No importing another module's database models directly
- Events inside the process today, message bus tomorrow
You get discipline without network latency on every click. When metrics prove a module is hot, extract it with a defined interface already in place.
For many custom software development engagements I scope in Queenstown and across SA, this is the default recommendation until data says otherwise.
A simple decision flow
- Do you have paying users and pain in one subsystem? If no, monolith.
- Can one team ship weekly without merge hell? If yes, monolith.
- Is compliance forcing isolation? If yes, plan services carefully with an architect.
- Are you copying Netflix because the deck sounds good? Stop. Ship the loop.
Document the decision in a short ADR (Architecture Decision Record). Future you (or your technical co-founder) will thank you.
Microservices and South African startups
Founders here face real constraints: load shedding, mobile-first users, thin support teams, ZAR runway measured in months.
Microservices do not fix:
- Weak product definition
- Missing payment reconciliation
- POPIA (Protection of Personal Information Act) gaps in consent and retention
- A junior-built schema that cannot report revenue
They can help later when you operate a marketplace with separate customer, provider, and admin surfaces (marketplace patterns) or when SaaS product engineering demands tenant isolation.
Until then, invest in clear domains inside one repo, automated tests on money paths, and observability you can read during a power cut.
Common patterns you will hear
API gateway
One front door routes traffic to internal services, handles auth termination, rate limits, and sometimes aggregation.
Service mesh
Sidecars manage retries, mTLS (mutual TLS encryption), and traffic policy. Powerful, heavy. Overkill for most SA MVPs.
Event-driven architecture
Services publish facts ("OrderPaid") and subscribers react. Great for decoupling, harder to debug without good tooling.
BFF (Backend for Frontend)
A thin API tailored to your web or mobile app so the client does not chat with twelve services directly.
Learn the vocabulary so proposals make sense. Do not buy every pattern on day one.
How this ties to hiring and quotes
When an app development company in South Africa proposes microservices on a R300,000 MVP, ask:
- Which service ships first user value alone?
- What is the integration test plan across services?
- Who owns on-call when Ozow webhooks fail at 21:00?
- What happens if we pause after Phase 1: do we inherit eight repos?
Compare with agency overhead and TaaS-style fixed Phase 1 scope. Architecture should match stage, not ego.
Use the project quote estimator with honest feature lists. Splitting services in the estimator without user load is a warning sign.
Frequently asked questions
Are microservices the same as APIs?
No. You can expose APIs from a monolith. Microservices are about deployment and ownership boundaries, not whether you have REST (Representational State Transfer) endpoints.
Do microservices require Kubernetes?
No. They require independent deploy units.
When should a startup switch from monolith to microservices?
When extraction solves a measured problem: deploy conflicts, scaling cost, compliance scope, or team autonomy. Not when a conference slide says you should.
Can AI coding tools build microservices faster?
Agents help scaffold services and tests. They do not remove the need for contracts, observability, and operational discipline. Documentation-first scope matters more than repo count.
A practical extraction checklist (when you outgrow the monolith)
When metrics say one module is painful, extract in this order:
- Define the service boundary in writing (inputs, outputs, SLAs).
- Stabilize the public API inside the monolith first (no network yet).
- Add integration tests that will survive the split.
- Extract with strangler pattern: route only new traffic or one tenant to the new service.
- Observe latency, error rate, and data drift for a full billing cycle before cutting over legacy paths.
Skipping step two is how teams end up with two databases and three sources of truth for "active users."
What to do next
- Sketch your one core loop (signup, pay, deliver value).
- Choose monolith or modular monolith unless you have hard evidence otherwise.
- If you need senior architecture without equity drama, read product engineering services or how TaaS works.
Architecture is a business decision wearing a technical jacket. Pick the shape that lets you learn from customers this quarter, not the shape that impresses investors on a diagram.
Ready to scope software that matches your stage? Get a project quote or message me on WhatsApp.
#Microservices #SoftwareArchitecture #SouthAfrica #CustomSoftware #Startups #SADevs
