I've been building and running microservices for close to a decade now. And you know what? Most advice about microservices is wrong. It comes from people who've read the theory but never dealt with a cascading failure at 3 AM on a Saturday.
Let me tell you what I've actually seen work — and fail — in production.
Stop Asking "Should I Use Microservices?"
That's the wrong question. The real question is: "Do I have the operational maturity to handle them?"
Because microservices don't solve technical problems. They solve organizational problems — multiple teams shipping independently. If you've got one team of five people, a well-structured monolith will beat microservices every time.
I've been called in to fix three "microservice migrations" this year alone. Every single one was a monolith split into 15 services that didn't communicate properly. The teams spent 6 months "migrating" and ended up slower than when they started.
Here's the thing: if you can't deploy your monolith reliably, splitting it into microservices won't fix that. It'll make it worse.
The Communication Patterns That Actually Work
After years of trial and error, here's what I've settled on:
My opinion: teams overuse synchronous calls because they're easy to reason about. Async is harder to debug but scales way better.
The Data Problem Nobody Talks About
Each service should own its data. Everyone agrees on that in theory. But in practice, you end up with services that need data from three other services to respond to a single request.
The solution? Command query responsibility segregation. Not as a pattern to implement everywhere — just for the specific pain points. Have your write model in one service, your read model in another. It adds complexity but solves the "I need five API calls to render a page" problem.
Sounds great on paper, right? The tradeoff is eventual consistency. Your users might see slightly stale data for a few seconds. That's fine for most apps. It's not fine for banking or real-time trading systems. Know which you're building.
Monitoring: You're Doing It Wrong
If your monitoring starts with "which service is down," you've already lost. Good microservice monitoring starts at the request level — tracing a single user action across 8 services. You need distributed tracing (OpenTelemetry is the standard now), structured logging, and metrics that map to business outcomes.
I can't stress this enough: if you can't trace a request end-to-end, you don't have observability. You have dashboards that look pretty but don't help when things break.
What I'd Do Differently
Looking back at my first microservices project, I'd make three changes:
1. Start with fewer services. 3-5 well-designed services beat 20 services that are hard to reason about.
2. Invest in infrastructure before writing business logic. Kubernetes, CI/CD, monitoring, tracing — get this right first.
3. Enforce service boundaries with code reviews. Every cross-service dependency should be reviewed and justified.
The teams that succeed with microservices aren't the ones with the best architecture. They're the ones with the best operational practices. Makes you think about where you should focus your energy.
Common Questions About Microservices
When should I use microservices? When you have multiple teams that need to ship independently, and you've got the DevOps maturity to manage distributed systems.
How big should a service be? Big enough to be independently useful, small enough to be understood by one person. If a service does more than one thing at a high level, split it.
Is Kubernetes required? Not strictly, but you'll want some container orchestration. A managed container service (ECS, Cloud Run) works for smaller setups. K8s becomes necessary past 10-15 services.
How do you handle database migrations? Each service manages its own schema. Migrations run as part of the service deployment. Never share databases between services — that's a distributed monolith, not microservices.
The bottom line: microservices are a tool, not a goal. If they make your team faster, great. If they add complexity without speed, you're paying the tax without getting the benefit. Don't let architecture dogma drive your decisions.
Further Reading
Take a look at Martin Fowler's original microservices paper for the theory, or check out Sam Newman's "Building Microservices" for the practice. Both are worth your time if you're serious about this stuff.
Make sure to check out this analysis of microservices patterns for more context.
Also worth reading: Uber's tech blog on their microservices journey and Netflix's engineering blog.
Key Numbers
According to a 2025 O'Reilly survey, 63% of enterprises now run microservices in production. Teams that adopt them see 40-50% faster deployment frequency on average.
alpk-code illustration
Chart
Enjoyed this article?
Subscribe to ALPK Blog for more deep dives and tutorials.