Skip to content

The Good and the Bad of Microservices

Microservices: Perceived Benefits and Practical Challenges

Section titled “Microservices: Perceived Benefits and Practical Challenges”
  • There’s a popular notion that microservices are the best way to structure modern software, whether migrating from a monolith or starting fresh.
  • Microservices promise benefits like independently deployable, loosely coupled teams, faster development cycles, and systems resilient to individual service failures.
  • In theory, this results in a system where teams can operate independently and handle failures gracefully, which sounds ideal.
  • Transitioning to, or starting with, microservices is much more challenging than it appears, even with available training and resources.
  • Many microservice projects end up as ‘distributed monoliths’: systems that are still tightly coupled but now communicate over the network rather than in-process.
  • The promise of independent deployability breaks down if services require lockstep deployment, effectively losing the main benefits.
  • Teams may then face both the complexity of distributed systems and coordination headaches, resulting in a fragile system where the failure of one service can cascade to others.
  • The intention is not to discourage the use of microservices but to emphasize the real complexities involved.
  • Microservices are great when done right, but their suitability depends on context, and they are not always the best choice.
  • The conversation hints at further discussion on why distributed monoliths and tight coupling pose significant challenges, referencing the fallacies of distributed computing (to be addressed in future sessions).