Here's what changed my mind recently: the tooling finally caught up to the promise. Kubernetes went from "good luck debugging that" to actually manageable. Service meshes like Istio stopped being academic exercises. The observability stack—Grafana, Prometheus, Jaeger—now works without a dedicated platform team.
I spent last month helping a 12-person startup migrate their monolith. Five years ago, I would've told them they were insane. Now? They're deploying individual services independently, running A/B tests on specific features, and their AWS bill actually went down by 30%.
The difference isn't the architecture. It's that distributed tracing actually works now. You can follow a request across seven services without wanting to quit programming. Local development doesn't require running 47 Docker containers anymore—tools like Telepresence let you run one service locally while connecting to the rest in staging.
I'm not saying microservices are the answer for everyone. That 12-person startup? They had three senior engineers who'd dealt with distributed systems before. But the skeptic in me has softened. The technology matured while we were all arguing about it.