The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.

Defining Microservices Architecture

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

Source: Microservices Resource Guide

A Comprehensive Presentation of Microservice Architectures, Presented by Neal Ford

Justification Of The Choices Made

  • Microservices offer the flexibility that is needed for Continuous Improvement

The Other Alternatives That Were Not Chosen

  • Service-based Architecture instead of Microservices
  • Monoliths

Further Reading