O'Reilly logo
live online training icon Live Online training

Implementing Evolutionary Architectures

Apply key concepts, build fitness functions, and automate governance

Neal Ford

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.

Prerequisites

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

Recommended preparation:

About your instructor

  • Neal Ford is Director, Software Architect, and Meme Wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals, who thinks disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. Before joining ThoughtWorks, Neal was the Chief Technology Officer at The DSW Group, Ltd., a nationally recognized training and development firm.

    Neal has a degree in Computer Science from Georgia State University specializing in languages and compilers and a minor in mathematics specializing in statistical analysis. He is an internationally recognized expert on software development and delivery, especially in the intersection of agile engineering techniques and software architecture. Neal authored magazine articles, seven books (and counting), 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 includes a business-focused book and video in improving technical presentations. His primary consulting focus is the design and construction of large-scale enterprise applications. If you have an insatiable curiosity about Neal, visit his web site at nealford.com.

Schedule

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)

  • Categories
  • Examples
  • Atomic/Triggered
  • Atomic/Continuous
  • Holistic/Triggered
  • Holistic/Continuous
  • 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