What are microservices?

Microservice architecture is based on the concept that an application should contain a collection of loosely coupled, independent, and atomic services, which implement business capabilities. Using this approach, it's easy to build software that splits a big enterprise application, also known as a monolith, into smaller and consistent contexts, known as microservices.

It also enables the fast evolution of a company's technology stack, thanks to the building of autonomous and independent DevOps teams. Microservices are usually created and managed by small teams that must have enough autonomy to change the microservices' internal implementation details with or without a small impact on the rest of the architecture.

MSA, thanks to its modular structure, enables a short and quick release of complex and large applications using approaches such as continuous delivery/deployment. A microservice must be able to be invoked by any client, regardless of the technology with which it was implemented; so it must be language, platform, and operating system agnostic.

And to be consumed, it should expose APIs for third parties that represent a sort of contract between them.