What are the benefits of Microservices?
- Faster Delivery:
- Less code to change
- Less code to test
- Easy deployment steps
- Scaling:
- We can scale individual services based on their use
- Easily understood:
- Since the microservice size is small, a person or team can easily understand in and out of microservice
- Technology/language advantage
- Different process different technology
- If we have to change tech or language from java to python, it is a small module for which we have to change
- Change cycle decoupled
- Each functionality or micro-service can be deployed when
- Culture: Well defined ownership, high trust in the team
- Easy deployment steps
- Isolation: Single microservice cannot crash the entire system
- Flexibility: Polyglot services, own persistence system, etc
What are the disadvantages or points to consider when moving towards Microservices?
- Multiple services to manage
- Sophisticated Monitoring: Required to monitor multiple services
- Design services for failures
- Latency, as now services will call each other over network
- Embracing DevOps Culture
- Chances for cyclic dependencies: which needs to be identified and resolved
- Transactions can go over multiple services
- Sometimes features span multiple services
- Multiple services are required to be tested together
- Version management
- Fault Tolerance: One service shouldn’t bring down the complete system
