- Service that solves single business purpose. (S of SOLID principal). Keep slicing till you get the answer "nothing" for question "What else it is doing?"
- Can be developed independently
- Can be deployed independently.
- Decoupled from rest of the world :)
- Since developed independently development is faster.
- Since deployed independently CI/CD is easy and so is agile and TDD etc.
- In a way more secure as loophole in one functionality can not be exploited for other functionalities
- Uptime is increased as problem is localised.
- Scalability is better as scaling up or out is done for specific service that really requires it and not for entire monolith.
- Greater flexibility to development teams in terms of choice of technology etc.
- In terms of cloud more appropriate type of environment can be selected for deployment (say type of EC2 instance)
Features of MSA
- High cohesion
- Business Domain Centric
Components involved (with example in Spring cloud)