The Open Group defines an architecture (in the TOGAF® 9.1 standard) as: “the structure of components, their inter-relationships, and the principles and guidelines governing their design and evolution over time”. It defines architectural style as: “the combination of distinctive features in which architecture is performed or expressed”.
Leveraging the above definitions, this White Paper examines and defines MSA in terms of:
The problem space The combination of distinctive features Components, their interaction, and governance Microservices Architecture Style MSA is a style of architecture that defines and creates systems through the use of small independent and self-contained services that align closely with business activities.
An individual microservice is a service that is implemented with a single purpose, that is self-contained, and that is independent of other instances and services. Microservices are the primary architectural building blocks of an MSA.
The Problem Space The need for MSA is driven by the pain points below.
Decreasing the complexity of the development, operation, and management of services Changes to components in solutions of interdependent applications and services has the challenge of even a small fix requiring a long change cycle as the entire solution must be validated or, in the case of a monolithic application, rebuilt. Even SOA applications may have dependencies and interactions required by services choreography.
The modularity of the components of a non-MSA application tends to weaken over time, making it harder and harder to make changes to only one small part of an application. The independent service nature required for an MSA allows for much easier development and deployment, since the services are both independent and self-contained.
Scaling of a monolithic or tightly-coupled application requires scaling of the entire application solution, rather than just the portion that is demanding more resources. Non-MSA SOA applications may have dependencies or sophisticated choreography requiring additional changes. Scaling of an MSA is achieved much more easily because instantiation of additional services is performed independently.
Simplify to decrease functional bloat