Difficulties with monolithic application, when it grow
- Large monolithic code base makes complicated to understand, especially for new developer
- Scaling become challenging
- Continuously integration / deployment become complex and time consuming. You may require dedicated team for build and deploy
- Overloaded IDE, Large code base makes IDE slow, build time increase.
- Extremely difficult to change technology or language or framework because everything is tightly coupled and depend up on each other.
- Each microservice is small and focused on a specific feature / business requirement.
- Microservice can be developed independently by small team of developers (normally 2 to 5 developers).
- Microservice is loosely coupled, means services are independent, in terms of development and deployment both.
- Microservice can be developed using different programming language (Personally I don't suggest to do it).
- Microservice allows easy and flexible way to integrate automatic deployment with Continuous Integration tools (for e.g: Jenkins, Hudson, bamboo etc..). The productivity of a new team member will be quick enough.
- Microservice allows you to take advantage of emerging and latest technologies (framework, programming language, programming practice, etc.).
- Microservice is easy to scale based on demand. In a nutshell, monolithic vs microservice architecture is like elephant vs ant approach. What you wants to build a giant system like elephant or army of ant, small, fast and effective.