Blog series: Quality attributes for microservices
In my humble opinion a good microservice…
- Exclusively owns logic and persistence for a narrow coherent set of business entities
- Is independently deployable and scalable.
- Provides a well-defined, interoperable resource-centric interface.
- Guarantee atomicity and idempotency for simple operations.
- Guarantee eventual consistency for complex operations.
- Can tell its healthiness, and is observable from distributed tracing and streaming logging.
- Implement operations that are stateless, non-blocking (I/O) and handle blobs unbuffered.
- Externalize cross-cutting policies to upstream infrastructure services.
In future posts I will elaborate on why I think each of these attributes matters.