DEV Community

Cover image for Mircoservices are Tech Debt... aren't they?
Hleb Bandarenka
Hleb Bandarenka

Posted on

Mircoservices are Tech Debt... aren't they?

As a software engineer, I always believed microservices were the default way to build scalable, modern applications. To me, monoliths seemed like an outdated relic of the past—something to be eliminated in favor of the flexibility and innovation microservices promised.

But recently, I encountered a perspective that challenged this belief. It was from an insightful interview and a subsequent review, which sparked a serious rethink on my part.

I can’t phrase the arguments better than David (the speaker in the interview), so I highly recommend watching it yourself. Here are some key takeaways:

What Microservices Are Really About

Organizational and Dynamic Alignment: Microservices are often more about mirroring how teams and organizations operate than about pure software architecture.

The Challenges of Microservices

These are the challenges we encounter when adopting microservices in an effort to accelerate development:

Increased Network Complexity: Managing communication between services can introduce latency and failure points.
Cross-Team Friction: Dependencies between services often mean dependencies between teams.
Monitoring and Debugging: The distributed nature makes tracking down issues and monitoring the system a lot harder.
Resource Consumption: Each service needs its own runtime, often leading to inefficient resource usage.
System Complexity: A large number of interconnected services increases the cognitive load for developers.
Cascading Failures: A failure in one service can propagate through the system in unpredictable ways.
Silo Effect: Teams can become isolated as they focus only on their service, losing sight of the bigger picture.
Harder Local Development: Running multiple services locally can be cumbersome.
Schema/API Evolution: Updating schemas or APIs requires careful coordination across services.
Distributed Transactions: Managing transactions across services is a notorious challenge.
…and the list goes on.

Is it truly worth it?

Based on the experience of successful companies, adopting microservices can be a powerful way to boost development velocity and, in some cases, the only path to ensure a company’s survival.

The question I pose to you is this: should we always begin with microservices, or is it better to adopt them later as the need arises?

P.S. The scalability benefits commonly attributed to microservices are often more about effective data splitting and sharding than the microservices architecture itself.

Top comments (0)