Skip to content
O'Reilly home
Learning Path

Software Architecture Fundamentals—Evolutionary Architecture

Start
Time to complete: 3h 2m

Published byO'Reilly Media, Inc.

CreatedJanuary 2020

Software, by its very nature, is and needs to be dynamic. It must be able to adapt to changing real-world conditions not only to reflect the ever-shifting requirements and expectations of users, but often simply to keep up to date with new technological innovations. Yet, designing systems that can fluidly change has traditionally been a difficult, if not sometimes insurmountable, challenge for many organizations. However, the widespread adoption of microservices demonstrates that when architects build evolvability into the core structure, change becomes easier.

In this learning path, the sixth and final in our series on software architecture fundamentals, hosts Neal Ford and Mark Richards introduce the principles of evolutionary architecture—an architectural paradigm that supports constant change. Designed for the intermediate-level software architect or developer tasked with migrating to or implementing a new cloud-based or distributed-system architecture, this learning path equips you with the knowledge and tools you'll need to put evolutionary architecture into practice. You’ll explore some common antipatterns that you need to avoid. You’ll even look at methods to help you better explain the benefits of evolutionary architecture that can make it easier for you to interact with nontechnical team members and stakeholders.

What you’ll learn—and how you can apply it

  • Understand what evolutionary architecture means, including its constituent parts
  • Explore the engineering practices that augment and enable evolutionary architecture
  • Discover techniques for safely evolving database schemas in parallel with this architecture
  • Learn to overcome the common pitfalls and antipatterns that block evolutionary architecture
  • Understand how to describe evolutionary architecture's benefits to nontechnical colleagues
  • Master the principles of creating software architecture that supports constant change

Exercises included

  • Self-Paced Exercise: Creating Fitness Functions

This learning path is for you because…

  • You’re an intermediate-level software architect or developer tasked with migrating to or implementing a new cloud-based or distributed-system architecture

Prerequisites:

  • You should have knowledge of development workflows and programming experience

Materials or downloads needed in advance: None

Other learning paths in this series: