DON’T BE DECEIVED. Microservices might seem like a term reserved for the card-carrying members of Silicon Valley, but you’ve been immersed in it more than you know. If you’ve ever booked a ride using Uber, relaxed with a bottle of wine and Netflix, or shopped on Ebay or Amazon, then you’ve already participated in a platform that uses the microservices architecture.
What are microservices? If you want to be technical, here’s the definition:
Comprising a software architecture pattern, microservices are small, independent, loosely coupled applications that do one thing well. As opposed to monolithic architecture, written as a cohesive code where you end up having a single point of failure, microservices architecture involves apps that communicate with each other asynchronously. Meaning, if one or some services fail, the entire system will continue to work.
Watch this visual explainer from IBM Think Academy:
Monolithic vs. microservices
If we were to use an analogy loosely in order to describe the difference between monolithic and microservices, a good metaphor could be a company.
Monolithic architecture is like a factory, composed of people who are part of a production line. When one employee—say the person in charge of packing—doesn’t come to work, the entire production line is affected.
On the contrary, microservices architecture is like a startup composed of diverse employees, each with their own expertise, allowed by top management to operate independently because each has a role to play in providing a holistic customer experience. Thus, when one employee calls in sick (say, the salesperson), the other employees (those from marketing or public relations, for example) will still able to face clients.
Benefits of microservices
Already, the biggest companies have adopted this software development technique. In fact, in as early as 2015, 68% of organisations were using or experimenting with microservices.
Here are some of the pros of implementing microservices:
1. Easier to understand
It is always easier to understand small services instead of understanding the whole big system.
2. Easier to update or upgrade
You can deploy an update to one or more services without disturbing others. Want to add a new feature in one service? Let’s put it live!
3. Easier to scale
Since these services are small, it becomes easier to scale, too. You can scale only for the services that need it.
4. Easier to solve
Being independent of each other, when one service fails, only their database goes down, not the entire system.
5. Easier to build on
If you want to build all services on different technology stacks, you are free to use technologies that are best for each service.
Meanwhile for businesses, microservices add another layer of benefits in terms of performance. As speed increases, the total productivity of the company follows.
6. More cost-efficient
Requiring lesser infrastructure cost and with a low application failure rate, microservices allow any change in any module to be introduced without breaking the bank.
7. More independent
Microservices are a godsend for teams who work on various modules from different places.
8. More agile
Legacy systems can be a hurdle to innovation. Microservices can support legacy systems because changes in an application can be done portion by portion, without shocking the entire system.
9. More flexible
You can use a different language or platform for each microservice. While it is still best to stick to a common language, the flexibility can be useful in special cases.
10. More time to market
Because individual microservices are developed by various teams at the same time, the application development can be faster, and can give you more time for other tasks.
11. More enhancements
With smaller, independent microservices, applications can easily be enhanced by simply adding a new microservice that will increase functionality.
12. More robust
Issues can be addressed by concentrating only on microservices affected, without having any impact on the other components.
13. More customisation
You can reuse microservices in other applications where the same functions are required, and you can also reconfigure the composition of an application should it suit another context.