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. |