Microservices are small, independent services that work together. In other words, these services are small, highly decoupled and focus on doing a small task at a time.
Follow the Single Responsibility Principle
Resilient/Flexible – failure in one service does not impact other services. If you have monolithic or bulky service errors in one service/module it can impact other modules/functionality.
High scalability – demanding services can be deployed in multiple servers to enhance performance and keep away from other services so that they don’t impact other services. Will be difficult to achieve same with single, large monolithic service.
Easy to enhance – less dependency and easy to change and test
Low impact on other services – being an independent service, this has less chance to impact other services
Easy to understand since they represent the small piece of functionality
Ease of deployment
Freedom to choose technology – allows you to choose technology that is best suited for a particular functionality