When Microservices and When Not ?
Microservices , an architecture which breaks down a task into small, meaningful, definitive, deployable individually processes. These processes may or may not be talking with each other. At the end composite result of these multiple small services makes up a business goal.
From the definition, it looks very attractive and inspired everyone to implement in their project. But wait, before you proceed please go through the rest of article to get an idea whether Microservices are suitable for your project. Like any other architecture, Microservices cannot be used in all projects.
Below are few points which are probable cases for choosing Microservices .
- Separation of business logic
Since Microservices are divided in small molecular processes, business functionality is clearly divided. It is easier for development and future maintenance. Even different developers can work in parallel without conflicting others compared to traditional pattern.
- Handling legacy system
Large and complex legacy systems are difficult to decode. This scenario can be handled beautifully by implementing Microservices .
- Can easily divide team
Microservices architecture gives project leader flexibility to divide team based on different processes and manage based on skills required to accomplish respective services.
- Scale up/down
Since application is divided in smaller, individually deployable services, only required component should be scaled up or scaled down. In simple terms, an application has 100 services and out of which 10 are hit services which has very high demand. If Microservices were not used, a single deployable unit has to be clustered to manage the load. With Microservices , we have liberty that we scale up only those components which are in high demand and ignore the rest.
As we have seen the profit of Microservices , it's time to look at the other side of the coin.
- Support overhead
Since multiple services are involved, support to them will be added overhead and increase the complexity.
- Communication between services
As single task is divided in multiple services, communication will be required between them. This should be handled with caution so that all processes work towards unique goal.
- Proficient Developers required
Microservices architecture is complex in nature and to give better justice to it, a team of proficient and experiences developers requires which could be difficult. Apart from that mature team will be required for operational and deployment activities.
Very helpful information. Thanks for sharing Sir (y).
Good information !!