A Maturity Model for Distributed Systems

Devops Organization Process Architecture
Advanced SLAs are continuously tested and monitored.
Everything runs on immutable servers or containers.
You can query a live dependency graph to see which applications are actively in use.
Your infrastructure setup is fully automated.
You have eliminated big projects.
Your teams have a far & near organization.
Teams interact through a customer/supplier relationship.
Teams use consumer driven contracts and continuously gather feedback.
All deliverables are small, building up towards a larger goal incrementally.
You use polyglot persistence and event sourcing where it makes sense.
Well controlled transaction scopes, idempotency where possible.
You follow the 12 factor application guidelines.
Intermediate Performance metrics, application metrics and health checks are displayed in production dashboards
Most deploys involve no downtime. Server configuration is automated.
The organization acknowledges and accommodates Conway's Law. You strive for small teams. Independent teams are all able to do continuous delivery.
Teams are responsible for their own components in production. Only minimum viable bureaucracy is enforced.
Stateless applications, that recover seamlessly after errors or downtime.
Automated failover and load balancing.
Service versioning with automatic backwards compatibility testing.
Baseline Applications are automatically deployed, and provide health checks.
The entire development team is on-call.
You do centralized logging.
Co-located, cross-functional teams.
Vertical splits, no silos.
You use continuous testing and integration for all applications.
Your teams are self-organized and goal-driven.
Agile development is used throughout the organization.
Minimum viable standardization, no more than necessary.
Applications find eachother through service registry/discovery.
When needed, you share code through tiny, functional utility libraries. No big shared framework.
Applications communicate through simple protocols.
Big challenges Many manual routines. Limited use of CI server.
A very few people are being held responsible for keeping the production environment live.
Handovers of big releases between silos is the typical workflow.
Separate organizational units do specification, testing, operations, security.
Big releases are put into production periodically. Certain components have to be released together.
Most projects are fixed price projects, with a fixed deadline.
You have big monolithic applications or shared frameworks.
Architecture driven by a slow-to-change ESB. Predefined frameworks and architecture.