Research from the DevOps Research and Assessment (DORA) team shows that architecture is an important predictor for achieving continuous delivery. Whether you’re using Kubernetes or mainframes, your architecture enables teams to adopt practices that foster higher levels of software delivery performance.
With a tightly coupled architecture, small changes can result in large-scale, cascading failures. As a result, anyone working in one part of the system must constantly coordinate with anyone else working in another part of the system, including navigating complex and bureaucratic change management processes.
When teams adopt continuous delivery practices, adopting the following architectural practices drives successful outcomes:
System Components | MVP | MVP+ |
---|---|---|
Document existing architecture: business diagram |
+ |
+ |
Document existing architecture: components diagram |
+ |
+ |
Document existing architecture: deployment diagram |
+ |
+ |
Document existing architecture: integration diagram |
+ |
+ |
Document existing architecture: data flow diagram |
+ |
+ |
Team can develop, and test changes independently from integrated services teams |
+ |
+ |
Team can deploy and release changes independently from integrated services deployments |
+ |
+ |
Architecture is mature, modern and corresponds to business needs |
|
+ |
External dependencies are mocked or stubbed for testing purposes |
|
+ |
Components may be deployed during business hours with no downtime |
|
+ |
Document existing architecture: network diagram |
|
+ |
Document existing architecture: access model documentation |
|
+ |
Document existing architecture: security documentation |
|
+ |
Document existing architecture: |
|
+ |
Tools
Functionality | Tool Name |
---|---|
Architecture design tools |
Microsoft Visio, Draw.io, Miro, Lucidchart, Archi |
Documentation Collaboration |
Atlassian Confluence
|
Roles
Name | Responsibilities |
---|---|
Solution Architect |
Design solution in a way to allow easy components and feature decoupling |
System Architect |
Design systems in a way to allow easy components and feature decoupling
|