A variant of the service-oriented architecture (SOA) architectural style, which structures an application as a collection of loosely-coupled services. In a microservices architecture, services should be fine-grained, and the protocols should be lightweight.
Decomposing an application into smaller services improves modularity and makes the application easier to understand, develop, and test. It also parallelizes development by letting small autonomous teams develop, deploy, and scale their respective services independently. It also lets the architecture of an individual service emerge through continuous refactoring.
Microservices-based architectures enable continuous delivery and deployment.