Microservices - not so micro
In the software development world the most recent big thing is not big – it is micro. Microservices is an architectural style that structures applications as a collection of loosely coupled small services, improving modularity and making applications easier to understand, develop and test. It also parallelizes development by enabling small autonomous teams to develop, deploy and scale their respective services independently. Every service in a big system that is built with microservices architecture has the freedom to act independently and then are tied together through APIs (remember last article?). Nowadays Netflix, Amazon, Twitter, Paypal and Soundcloud are all based on microservices and a simple Google search can use more than 70 microservices.
A successful microservices architecture is based on five core principles: single responsibility where only one capability is provided by a service, isolation where this capability does not impact other functions, autonomy where the service must be autonomous and self-governing, data encapsulation where consumers can only access data through its published APIs and inter-process communication where services interact with each other to fulfill a user´s request.
The key issue here is that to get and maximize the benefits of microservices a true business transformation is required involving IT, processes, people and culture since the way software is built, operated, maintained and updated will drastically change. Built on top of containers that standardize the underlying infra-structure for all services, APIs to open and distribute capabilities and scalable cloud infra-structure to allow capability on demand the microservices architecture is disrupting the software development industry for all types of business segments. I got a very good example recently in a telecom software provider that was developing a complex product using microservices and found out that one of this product´s small modules was getting a lot of attention from the market and quickly launched just this small part as a new product exposing its native APIs directly to other applications and external systems. Isn´t it wonderful?
This may not be the answer for all the problems of the complex software development ecosystem but it is a good approach when dealing with extremely challenging software architecture. The biggest challenge nowadays is to deliver new features and capabilities quickly, steadily and cheaply in order to minimize costs and maximize profits. Microservices is really big now.