The term “Microservice Architecture” has become popular over the last few years descibe a way of designing large scale software applications as suites of small, independently deployable services. While there’s no precise definition of this style of architecture, there are certain common characteristics around organisation around business capability, automated deployment, intelligence within the endpoints, and decentralized control of languages and data.
The common guiding principles of microservices are:
All services are small, fulfiling a single business function. Ideally each service is developed and operated by a small, agile, autonomous team.
All service implementation is part of fulfilling the single service business function. Anything that is not should be part of a seperate service.
Services are capable of being deployed independently and generally no direct coupling exists between services. Some services may communicate with
A stateless service handles every request with the information contained only within it. Microservices should generally be stateless and service each request without “remembering” any previous communications from the service client(s).