The Trouble With Microservices: You're Not Google, And You Shouldn't Build Like Them
If your fintech has 14 microservices before you have a product, a revenue stream, or even a fully working login page, there's a problem: you've built a distributed system that distributes complexity across your entire organisation.
This is a common pattern in the modern fintech ecosystem: microservices are often adopted as a default architecture rather than as a solution to specific scaling problems.
The Microservice Myth That Refuses to Die
Around 2015, microservices became the default architectural pattern across much of the industry. Regardless of team size, product maturity, or actual scaling requirements, microservices were positioned as the sophisticated choice.
The reasoning was compelling:
- Want to move fast? Microservices enable independent deployment.
- Want to scale? Microservices allow horizontal scaling of components.
- Want to demonstrate technical sophistication? Architecture diagrams with distributed services look impressive.
The challenge? Microservices solve scaling problems you may not have yet - while creating complexity problems you definitely don't need.
Distributed Systems Come With Distributed Complexity
Every microservice you add introduces ongoing operational overhead:
- Additional deployment pipelines
- More authentication and authorisation flows
- Expanded logging and monitoring infrastructure
- Message queues, event buses, and async choreography
- Network latency on every service boundary
- More dashboards and alerting
- More integration failure modes
- Increased debugging complexity across service boundaries
Every network hop is an opportunity for failure - and in production systems, these opportunities are eagerly seized at the worst possible moments.
Meanwhile, teams running well-architected monoliths ship features quickly because developers can reason about the entire codebase and trace execution paths without crossing network boundaries.
The Fintech-Specific Challenge
Fintech teams are particularly susceptible to premature microservices adoption because of several assumptions:
- "We're planning to scale massively"
- "Financial systems are complex, so our architecture should reflect that"
- "Investors expect to see distributed architecture"
- "Industry best practices recommend microservices"
Here's the reality: If your core challenges involve regulated data access, authentication, reconciliation, or moving money between ledgers, you benefit from fewer moving parts, not more.
Every additional service is another potential failure point that manifests as:
- Incident response escalations
- Authentication and authorisation failures
- Service timeout cascades
- Fraud detection latency
- Reconciliation discrepancies
- Opaque error messages in production
- Engineers questioning architectural decisions within months
I've encountered payment systems distributed across 8+ microservices with event-driven choreography in between. This isn't sophisticated architecture - it's operational risk that compounds with every transaction.
The Latency Problem Nobody Mentions
Microservices don't just add complexity - they add latency at every service boundary:
- Cold start delays
- Queue processing time
- Retry logic and exponential backoff
- Asynchronous event propagation
- Token validation on every request
- N+1 service calls to render a single screen
The response to latency problems often makes things worse:
- "Let's add caching layers"
- "Let's introduce database sharding"
- "Let's add a service mesh to manage the services"
This is optimising in the wrong direction. The fundamental problem is architectural, not tactical.
You're Not Google (And They Wish It Were Simpler Too)
Google uses microservices because at their scale, monolithic architectures become genuine bottlenecks. Most organisations use microservices because it seems like the modern approach.
Consider this:
Microservices are a tax you pay when you reach a scale where monolithic architecture genuinely limits your ability to operate. Before that inflection point, microservices themselves become the bottleneck.
Even at scale, large organisations spend considerable resources managing the complexity of their distributed architectures. Why would an early-stage fintech voluntarily adopt this operational burden?
What You Actually Need: The Modular Monolith
Here's the architecture pattern that serves most fintechs well through early growth stages:
1. A Modular Monolith
One codebase with clear module boundaries. No distributed complexity. Clean interfaces between domains.
2. A Thin API Layer
REST or GraphQL. Choose boring, proven patterns. Boring scales reliably.
3. A Single Source of Truth for Auth
OAuth 2.1, FAPI-compliant, backed by a proper trust model. See our articles on FAPI 2.0 and OAuth 2.1 for implementation guidance.
4. One Database (Initially)
Partition when you need to. Shard when traffic demands it. Don't prematurely optimise for Amazon's scale.
5. Feature Flags, Not Service Fragmentation
You want deployment flexibility without architectural fragmentation.
6. Observability Designed for Humans
One place to see logs, errors, metrics, and traces. Debugging should be straightforward.
7. A Clear Evolution Path
When you reach Series C or 10m+ users, you'll have data showing which modules need to become independent services. The number will be smaller than you expect.
The Payoff: Speed, Stability, and Sustainability
A properly architected modular monolith delivers:
- Faster feature delivery
- Lower infrastructure costs
- Simpler security audits
- Cleaner OAuth and FAPI integrations
- Fewer failure modes in production
- Better developer experience (critical for retention)
- A data-driven path to selective distribution
- Progress that's visible to stakeholders without masking complexity
This approach allows fintechs to survive and thrive long enough to reach the scale where selective distribution makes sense.
When to Evolve Beyond the Monolith
The right time to extract services is when you have:
- Data showing specific bottlenecks that can't be solved with vertical scaling
- Team size that makes coordinating deployments genuinely difficult
- Clear boundaries where independent scaling provides measurable value
- Operational maturity to handle distributed systems complexity
Extract strategically, one service at a time, with clear metrics proving the value of the distribution.
Final Thought
Microservices architecture is a powerful tool for specific scaling problems. The key is applying it when those problems actually exist, not adopting it as a default pattern because it appears sophisticated.
Start simple. Evolve deliberately. Scale based on data, not assumptions.
Need help evaluating your architecture or planning a sustainable path to scale? We work with fintechs and financial institutions to design systems that balance immediate needs with long-term growth. Get in touch - we'd be happy to discuss your specific situation.