Technology perspective

So far, I have discussed microservices architecture (MSA) from Business perspective. In MSA application consists of a set of loosely coupled services.

  • Services interact over network
  • Light weight protocol is preferred - HTTP
  • Independent codebases & deployments
  • Decentralized governance
  • Well defined business scope & responsibilities

Pros

  • Changes are easier to manage
  • Deployments are independent
  • Polyglot - each team decides on the technology/language
  • Fault isolation - Failure in one service will not bring down entire system
  • Each service can be scaled independently

Cons

  • Poor performance due to network overheads
  • Complexity in managing data integrity as the data is distributed (& redundant) across multiple services data-complexity.png
  • Harder to monitor | debug
  • Requires investment in new technologies