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
- Harder to monitor | debug
- Requires investment in new technologies