Blog series: Quality attributes for microservices

In my humble opinion a good microservice…

  1. Exclusively owns logic and persistence for a narrow coherent set of business entities
  2. Is independently deployable and scalable.
  3. Provides a well-defined, interoperable resource-centric interface.
  4. Guarantee atomicity and idempotency for simple operations.
  5. Guarantee eventual consistency for complex operations.
  6. Can tell its healthiness, and is observable from distributed tracing and streaming logging.
  7. Implement operations that are stateless, non-blocking (I/O) and handle blobs unbuffered.
  8. Externalize cross-cutting policies to upstream infrastructure services.

In future posts I will elaborate on why I think each of these attributes matters.