After tremendous success of Continuous Integration, Continuous Deployment, Continuous Delivery, Continuous Testing and Continuous Improvement now is the time for Continuous Architecture. Continuous Architecture is an approach about using the appropriate tools to make the right decisions and support Continuous Integration, Continuous Deployment, Continuous Delivery and Continuous Testing.
Development approach and architecture have evolved since 80’s era.
1984 – OSI Model (7 layer)
1987 – Zackman Framework
1992 – Use Cases
1993 – SEI CMM
1995 – Design Patterns, 4+1 Model
1996 – UML, XP (Extreme Programming)
2001 – Agile Manifesto
2003 – TOGAF 8.0
2011 – Continuous Delivery, TOGAF 9.1
2012 – SAFE Agile
Now – Continuous Architecture
What is Architecture?
Architecture in software is the process of creating designs and structures on which our application stood up. It describes how the various elements of an application will be arranged and interact with each other, it gives a structured solution for the organization of a system(s) which satisfies technical and operational requirements while optimizing the common quality attributes like performance, scale, security, etc.
What is Continuous Architecture?
Nowadays various industries are going away from the traditional Enterprise Architecture, because there is a need for an architectural approach that supports Continuous Delivery with a broader architectural perspective.
Continuous Architecture is an architecture style that follows six simple principles:
- Architect products, not just solutions for projects. Architecting products is more efficient than just designing point solutions to projects and focuses the team on its customers
- Focus on Quality Attributes, not on functional requirements. Quality attribute requirements drive the architecture
- Delay design decisions until they are absolutely necessary. Design architecture based on facts, not on guesses. There is no point in designing and implementing capabilities that may never be used; it is a waste of time and resources
- Architect for change, leverage “the power of small.” Big, monolithic, tightly coupled components are hard to change. Instead, leverage small, loosely coupled services
- Architect for build, test, deploy and operate. Most architecture methodologies exclusively focus on software building activities, but we believe that architects should be concerned about testing and deployment activities in order to support Continuous Delivery
- Model the organization of your teams after the design of the system. The way teams are organized drives the architecture and design of the systems they are working on.
The six principles help modern architects to focus on the most important aspects of software architecture for modern applications, while working in the incremental and evolving way that supports Agile and DevOps ways of working.
What are the main goals of Continuous Architecture?
- To create an architecture that can evolve with applications, that is testable, that can respond to feedback and in fact is driven by feedback
- To make Enterprise Architecture real
- To make solution architecture sustainable
- To create a real world, actionable, useful strategies
“Continuous Architecture” is an approach based on a toolbox – not a formal process!
Continuous Architecture is a set of principles and tools targeted at bridging the gap between Agile delivery and architecture practices within an organization.
Continuous Architecture is about using the appropriate tools to make the right decisions and support Continuous Delivery, Continuous Integration and Continuous Testing.