Microservices is a Hot Trend in the Industry. Everyone knows the Advantages of it. Here I would like to list down the same.
Microservices are small services, with clear boundaries, easily deployable without affecting other components & offering individual scalability.
Microservices have their own code & data within them.
Microservices offer freedom of technology choices.
- small services
- single responsibility
- separate processes
- clear boundaries
- easily deployable
- individually scalability
NetFlix is a well known example of implementing Microservices. Here the Netflix contains of following Microservices:
- Public Website
- User Registration
- Movie Selection
- New Releases
Here if each of this is considered as individual microservice, it can be developed, modified, deployed & scaled separately without affecting other application boundaries.
But give the advantages, I have never seen a 100% microservice application myself. Each & Every architect claims to have implemented Microservices. But when we dig deeper there are missing parameters to support the full microservice implementation.
Boundaries All the depending modules need to have clear boundaries of code & data. If one of the code/data depends on your microservice module then it will cause failure.
Asynchronous All the synchronous calls has to be converted to asynchronous calls. For this a normal API call needs to be migrated to Service Bus Messages given an Azure scenario.
Repositories Since each microservice has its own code & data, we need to maintain separate code repositories for each.
Debugging Overheads Unlike monolithic application where one can press F5 and debug a button click to service, it is not possible with microservice. More complexity is there in debugging microservices.