Microservices #

What are microservices? #

In the world of cloud-based application development, there is a clear trend towards microservice applications. The general idea of this architecture is to decompose the traditional monolithic application into a distributed system of multiple small applications, called microservices. The capabilities of the application remain unchanged, but they now emerge from the interaction between all the different services. This interaction can be both synchronous using REST APIs or asynchronous in a message-based fashion.

By design microservices are organized around capabilities, which means that each microservice implements exactly one logical capability. They have a well-defined boundary and API, and are implemented as loosly coupled components. This enables software developers to choose for every individual microservice the best technology stack for the task at hand. In contrast to monolithic applications -- of which the technology stack often caters to the lowest common denominator -- microservice applications are generally polyglot, involving different programming languages and technologies.

Each microservice is typically deployed as a number of containers on a cluster of cloud-based virtual machines. This allows system administrators to optimize resource consumption by scaling only those microservices that are under heavy load and not the entire application.