Implementing Evolutionary Architectures
Apply key concepts, build fitness functions, and automate governance
Topic: Software Development
An evolutionary architecture supports incremental, guided change across multiple dimensions. The software development ecosystem exists in a state of dynamic equilibrium, where any new tool, framework, or technique leads to disruption and the establishment of a new equilibrium. Predictability is impossible when the foundation architects plan against changes constantly in unexpected ways. For many years, software architecture was described as the "parts that are hard to change later". But then microservices showed that if architects build evolvability into the architecture, change becomes easier.
This online course, based on the popular book Building Evolutionary Architectures, investigates the family of software architectures that support evolutionary change, along with how to build evolvable systems. Understanding how to evolve architecture requires understanding how different parts of architecture interact; you’ll learn how to achieve appropriate coupling between components and services. Incremental change is critical for the mechanics of evolution; you’ll discover how to build engineering and DevOps practices to support continuous change. Uncontrolled evolution leads to undesirable side effects; you’ll see how fitness functions build protective, testable scaffolding around critical parts to guide the architecture as it evolves. You’ll be walked through how to implement fitness functions to provide both evolvability and governance around important architectural characteristics.
What you'll learn-and how you can apply it
By the end of this live, online course, you’ll understand:
- How to define an evolutionary architecture
- How to define a fitness function
- How incremental change facilitates building evolutionary architectures
- How governance applies to fitness functions and evolutionary architectures
- How to combine incremental change and fitness functions to automate governance
- The critical difference between adaptability and evolvability
And you'll be able to:
- Discover and define fitness functions
- Build fitness functions for a variety of architecture concerns
- Automate common governance tasks
- Apply evolutionary architecture concepts to future architectures
- Understand the evolutionary implications of migrating architectures
This training course is for you because...
- You are an experienced Software Architect, Lead Engineer, or Developer building medium-to-large scale applications, and you need to understand the evolutionary implications of migrating architectures.
- You are an experienced Software Architect, Lead Engineer, or Developer building medium-to-large scale applications, and you want to understand how to apply evolutionary architecture concepts to future architectures.
- You have an understanding of basic architectural patterns.
- You have an understanding of modern software engineering practices such as continuous integration and continuous delivery.
- You have worked on several software systems either as a developer or architect.
About your instructor
Neal Ford is a director, software architect, and meme wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals who think disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. He’s an internationally recognized expert on software development and delivery, especially in the intersection of Agile engineering techniques and software architecture. Neal has authored seven books (and counting), a number of magazine articles, and dozens of video presentations and spoken at hundreds of developers conferences worldwide. His topics include software architecture, continuous delivery, functional programming, cutting-edge software innovations, and a business-focused book and video on improving technical presentations. Check out his website, Nealford.com.
The timeframes are only estimates and may vary according to how the class is progressing
Day 1 (3 hours)
Definition (40 minutes)
- Introduction to evolutionary architecture
- Fitness functions
- Incremental change
- Architecture dimensions
Break (5 minutes)
Fitness functions (40 minutes)
- Building fitness functions
Break (5 minutes)
Multiple Dimensions (40 minutes)
- Architecture patterns and evolution
- Evolutionary data
- Enabling evolution while migrating architectures
Break (5 minutes)
Incremental change (45 minutes)
- Applying fitness functions
- Intro to fitness functions as governance
Day 2 (3 hours)
Testing architectural characteristics (55 minutes)
- Verifying Layered architecture
- Verifying feature-driven architecture
- Automating security
- Zero-day exploits
- Calling via Wrappers
Break (5 minutes)
Managing Structural Decay (55 minutes)
- Governing complexity
- Symptoms that complicate migration
- Key metrics
- Break (5 minutes)
- Managing Governance
- Automation via deployment pipelines
- "Herding" towards best practices
- Building platforms
- Broadcasting governance via Radar