24 Mar Introduction to Microservices
Microservices is the name of a style of software architecture, strongly influenced by distributed software. Microservice software architecture is characterized by the fact that different components are highly distributed. Another distinctive feature is the fact that each microservice is responsible for a single, specific issue.
Microservice history can be tracked back to May 2011 in Venice, where a group of software architectures agreed to use this term to characterize the systems in which they were involved.
With the influence of some of the pioneers in this field (Adrian Cockcroft, Netflix…), microservices have gained presence and today the industry has accepted them as a well-established architectural style.
Many organizations are migrating their systems to microservice architecture, splitting up their monoliths in smaller, more distributed units.
The main idea is small and autonomous processes that work in collaboration to comply with a certain business logic.
But reaching this concept is a hard work. If you do not have a consistent guiding set of principles, the road to microservices can be very long. In a distributed system, you have to take more decisions than in a monolithic system. A sole language for everything? What data store? What communications protocol? Which servers?
Microservices must be shaped around the appropriate domain, so that the borders between the different microservices are clear, simple and immutable.
Another important principle is process automation, specifically the so-called DevOps movement. With automated processes, the release of versions, bug fixing and, in general, the natural development of the system is possible and economically feasible.
Hiding implementation details is important too. When microservices interact through stable API, the devices in charge for the microservices can operate in a flexible manner.
An individualized deployment is another of the key principles for the microservices. Being able to deploy individual services without affecting the rest is essential for a successful microservice architecture.
Isolation of failures is essential too. If an element of the system has a failure in a distributed system, it is essential to prevent it from spreading with a cascade effect to the rest.
Observability is another key principle. Much like the isolation of failures, it is more difficult to diagnose a distributed system than a monolithic system. Therefore, it is essential in microservice architectures to observe them with the highest level of accuracy.
It is not easy to predict the future of microservices, considering that technological leaders are focusing all their efforts on manufacturing better products for DevOps, API Management, PaaS and IaaS. In that case, it is evident that microservices are here to stay and possibly become fused with other technological explosions, such as the IoT.