Compared to monolithic code bases, microservices architecture approaches use virtualization and containerization as a vehicle for service delivery. Service functionality is contained within microservices, and tens, even hundreds of unique microservice can comprise the total functionality of a monolith application.
Microservices are small apps designed to fulfill a single purpose. Each microservice is principally in charge of a single “concern” within the larger system, perhaps surrounding a business line, and operates like a black box, communicating with the outside through REST APIs, event streaming, and message brokers. Microservices architecture commonly aims at breaking down larger applications into smaller services, each acting as their own service component to other microservices, or larger programs, giving information upon request, but also creating an interworking set of independent services.
An independent microservices approach to deployment affords organizations several capabilities over traditional monolithic approaches:
● Code is partitioned into microservices, encapsulating just that code specific to the concern of the component, updates can be more easily made, new features more easily added, all without disturbing other application code.
● Universal communication through APIs allows microservices to be written in whichever language is necessary, convenient, or available, and still be able to interact with other microservices.
● Microservices can be individually scaled to fit the demands on the system with ease.
Conceptually, microservices are an idea born out of service-oriented architecture (SOA). But, technologically, microservices are an evolutionary step from SOA, thanks to the supporting technology of virtual machines, containers, and container orchestration software.