Apart from some of the definite advantages of SOA, microservices provide certain additional differentiating factors that make them a clear winner. At the core, microservices were defined to be completely independent of other services in the system and run in their process. The attribute of being independent required a certain discipline and strategy in the application design. Some of the benefits they provide are:
- Clear code boundaries: This resulted in easier code changes. Its independent modules provided an isolated functionality that led to a change in one microservice having little impact on others.
- Easy deployment: It is possible to deploy one microservice at a time if required.
- Technology adaptation: The preceding attributes led to this much sought-after benefit. This allows us to adopt different technologies in different modules.
- Affordable scalability: This allows us to scale only chosen components/modules instead of the whole application.
- Distributed system: This is implicit, but a word of caution is necessary here. Make sure that your asynchronous calls are used well and the synchronous ones don't block the whole flow of information. Use data partitioning well. We will come to this a little later, so don't worry for now.
- Quick market response: In a competitive world, this is a definite advantage as users tend to lose interest quickly if you are slow to respond to new feature requests or to adopt a new technology within your system.