All Insights
essays· 10 min read

The Three Architectures I See Failing in 2026

After 40+ audits in two years, the same patterns keep breaking. Here they are.

SV
Sri VardhanJan 15, 202510 min

I do architecture audits as a service. I've now done enough to see the same failure patterns across very different companies. These are the three I'd bet against this year.

I've done over forty architecture audits in the last two years. The companies are different, the products are different, the tech stacks are different. But the failure modes cluster.

These are the three architectures I see most often, why they fail, and what I tell teams to do instead.

Architecture 1: The premature microservice mesh

The pattern: a 12-engineer startup with 27 microservices, each with its own repo, its own deploy pipeline, and its own database. Communication is gRPC or REST. There is no service mesh, just a tangle.

Why it fails: every product change touches three or four services. Each change requires three or four reviews, three or four deploys, three or four versioning decisions. The team's velocity is roughly inverse to the number of services per engineer.

The fix: collapse to a modular monolith. Use packages, not network calls. Defer the network boundary until you have a real reason for it, like a separate scaling profile or a different language requirement.

I've helped two companies go from 20+ services back to a single Spring Boot deployment. In both cases, the engineering velocity roughly doubled within three months.

Architecture 2: The serverless-everywhere stack

The pattern: every endpoint is a Lambda. Every event is an SQS message. Every read is DynamoDB. The team picked it because "we won't have to manage servers".

Why it fails: at scale, the cost is wild. Cold starts add latency in unpredictable places. Local development is painful. Debugging a chain of seven Lambdas across SQS queues is genuinely worse than debugging a single service.

I worked with a fintech that spent $42K/month on Lambda for a workload that ran perfectly happily on a single t3.large in EC2 for $80/month. The "serverless tax" was 500x.

The fix: a small number of long-running services, behind an ALB, with serverless reserved for genuinely bursty work like image processing or webhook fan-out. Mix and match, don't go all-in on either side.

For when serverless makes sense, I have a longer post.

Architecture 3: The "we'll add caching later" read path

The pattern: every request hits Postgres. Reads and writes go through the same connection pool. There's no Redis, no read replica, no CDN.

Why it fails: at low traffic, it's fine. At medium traffic, p95 latency starts climbing. By the time the team notices, the read patterns are deeply embedded and adding a cache layer requires invalidation logic across forty endpoints.

I see this almost weekly. The team usually responds by scaling the database vertically, which buys them six months and another bill.

The fix: build the read path with a cache-aside pattern from day one, even if the cache hit ratio is initially zero. Decide your invalidation strategy when the codebase is small. Adding caching to a mature codebase is a multi-month project. Building it in from day one is a week.

The pattern behind the patterns

All three failures share a single root cause: the team optimized the architecture for the wrong stage.

The microservice mesh was optimized for a 200-engineer org. The serverless stack was optimized for a billion-request product. The no-cache stack was optimized for a 100-user MVP. None of them were optimized for the actual stage the company was in.

Architecture has to fit the company you are, not the company you imagine you might be in three years.

What good architecture looks like at each stage

  • Pre-PMF, less than 5 engineers: monolith, one database, one queue if you need one, deploy by pushing to main. Aim to ship in 24 hours.
  • Post-PMF, 5-25 engineers: modular monolith, primary plus replica database, Redis cache, separate workers for async, basic observability. Aim to ship in a few days.
  • Scaling, 25-100 engineers: extract two or three services where the seams are real. Add a small number of dedicated platform engineers. Build internal tooling. Aim to ship safely.
  • Beyond 100 engineers: this is where real microservices start to make sense, and where you need a service mesh, a platform team, and dedicated SRE. By this point you have the resources to do it right.

Don't skip stages. The companies that try almost always end up rewriting in the wrong direction.

The sharper insight

The audit's most useful output is rarely a recommendation to add something. It's almost always a recommendation to remove something. Engineers are trained to add. Architects who shipped in production for a decade are trained to subtract. If you're hiring an architect and they don't propose deleting anything, you hired the wrong person.

If you'd like a written audit of your architecture, fixed scope and price, that's exactly what I do. Start a conversation and we can talk through whether it's a fit.

References

architectureanti-patternsauditscaling

Want to discuss this topic?

I'm always happy to dive deeper. Reach out if you have questions or want to collaborate.

Get in Touch

Command Palette

Search for a command to run...