SmallMicroservices are small. They are implemented and operated by a small team.
ReplaceableA microservice is small enough to be replaced without much impact.
CohesiveEverything in a microservice feels like it belongs together. Anything that doesn't fit is moved to a separate microservice.
AutonomousMicroservices can be deployed independently.
ScalableMicroservices are designed to be scalable and can be scaled independently.
DisposableDesign for fast starts and don't allow a service to fall into an unstable state when hardware suddenly fails.
Dumb PipesIdeally, microservices communicate using standard asynchronous network communications. Avoid putting functionality in the middle between services.
Loosely CoupledMicroservices offer an abstracted interface such that consumers don't need to change every time you deploy an update. Design interfaces around enduring business concepts.
ReusableInterfaces are designed to maximize use of services by diverse consumers. Avoid unnecessary assumptions and constraints.
Business FunctionalityMicroservices are organized around business functionality as opposed to technology layers.
Cross-functional TeamsMicroservices are completely implemented by small cross-functional teams that can change everything from the UI to the data model. This removes the organizational complexity of getting numerous teams involved in every change.
Decentralized ArchitectureAllow teams leverage in choosing their own platforms, tools and data models. Encourage teams to share what works.
OwnershipMicroservices are products that are owned and operated by the build team. evolved over time with no big upfront plan.
Service CompositionMicroservices use microservices.
ResilienceExpect failure from external resources such as other microservices and behave well when failure occurs.
AutomationAutomate things such as testing, deployment and service recovery.
Design for ObservationGenerate useful logs using techniques such as correlation ids that simplify troubleshooting.
A software design technique that decomposes functionality into small autonomous services.