background
Monolithic Architecture (MA) was the standard approach to software
development, used by major corporations such as Amazon and eBay in the
past. For MA the functions are embedded in a single application.
Monolith applications have their own advantages if not complicated; ease
of development, testing and deployment. But as the application starts to
get more complex, the monolith structure increases in complexity,
becoming a massive piece of software that is hard to handle and scale
up.
Microservices could be seen as a technique for the development of
software applications that, by inheriting Service-Oriented Architecture
(SOA)-style principles and concepts, enable the structure of a
service-based application as a set of very small, loosely coupled
software services. Using the composition of small services,
microservices architecture can be seen as a new approach for programming
applications, each running its own processes and communicating through
some lightweight mechanism. Microservices are very small (micro) in
terms of their contribution to the application not because of their code
lines. Boundary contexts, versatility and modularity are core features
of microservices applications. In this regard, microservices is a
popular trend in software architecture, emphasizing the creation and
design of highly maintainable and scalable applications.