Agile Architecture
Last Updated: June 2026
Agile Architecture emphasizes the minimum amount of design upfront, and focusing on building something and evolving the architecture as our understanding changes.
Architecture in software development is often defined as relationships between the parts in a system. Traditional approaches to software architecture emphasize Big Upfront Design - get it right at the start. The problem, of course, is that requires us to foresee all architectural considerations (scale, security, fault tolerance, fault recovery) at the moment when our understanding of our problems is at its weakest. Agile Architecture allows for the design to evolve and adapt as more is learned about what is needed.
The number of useful principles and patterns is vast:
- YAGNI - You Ain’t Gonna Need It - always said with a southern drawl
- DRY - Don’t Repeat Yourself or Avoid Duplication Principle
- KISS - Keep It Simple, Stupid
- Last Responsible Moment
- Tell Don’t Ask - tell an object to do something, don’t ask for its data
- Reversible vs Non-reversible Decisions - most decisions are reversible; some decisions are like a door that is locked behind you
- Build for Resilience (or Fault Tolerance)
- CUPID - Composable; Unix Like; Predictable; Idiomatic; Domain based
- Hexagonal Architecture (also known as Ports and Adapters)
- SOLID - Single Responsibility Principle; Open/Closed Principle; Liskov’s Substitution Principle; Interface Segration Principle; Dependency Inversion Principle
- High Cohesion, Low Coupling - High Cohesion is a restatement of the Single Responsibility Principle. Within a module, things should be tightly related. Low Coupling between modules, modules don’t have a strong reliance on one and other.
- Clean Architecture (relates to Hexagonal)
MicroService Architecture and Domain Driven Design are each large topics in their own right:
- MicroService Architecture
- Domain Driven Design
(Hint: when searching for more ideas, consider using the term: “Evolutionary Architecture”)
Agile Pain Relief Blog Entries
Resource Links
Principles & foundations
- An Agile Approach to Software Architecture
- Principles for the Agile Architect
- Is Design Dead? – Martin Fowler
- Software Design Guide – Martin Fowler
- Software Architecture and Related Concerns
- Conceptual Architecture
- Architecture & Design
- Simplicity, The Way of the Unusual Architect – Dan North (Presentation)
Design principles & patterns
- Tell Don’t Ask
- CUPID for joyful coding – Dan North
- Why SOLID principles are still the foundation for modern software architecture, with examples in JavaScript, TypeScript and Java
- Difference Between Cohesion and Coupling and A Discussion on Coupling
- Hexagonal Architecture: Everything You Need to Know and The Secret to Scalable and Maintainable Code
- Clean Architecture: The Power of Clean Architecture and Clean Architecture is NOT a project structure
- Build for Resilience: Resilient Systems in Banking and How to Use Chaos Engineering to Break Things Productively
- Microservices: A Deep Dive Beyond the Basics and Principles for Microservice Design
- Domain Driven Design: A Guide to Building Scalable, High-Performance Systems
Evolutionary & emergent design
- A Brief Summary of Evolutionary Design
- Characteristics of Evolutionary Architectures
- Summary of Building Evolutionary Architectures
- Evolutionary Architecture with Patrick Kua (YouTube)
- James Shore on Continuous Design [PDF warning!]
- Don’t You Have to LOGIN first?
Counterpoints & critiques
- Agile Architecture Myths #2 – Architecture Decisions Should Be Made at the Last Responsible Moment – Rebecca Wirfs-Brock. Consider “most responsible moment” instead of last responsible moment.
- Agile Architecture Myths #3 – Good Architecture Emerges – Rebecca Wirfs-Brock. “Good architecture doesn’t emerge; it evolves.” it takes deliberate refactoring, reflection, and the organizational permission to keep improving.
- Software architecture is failing
- The Wrong Abstraction – Sandi Metz
- When Feature Flags Go Wrong
Decisions, patterns & worked examples
- Documenting Architecture Decisions – Michael Nygard (the original ADR post)
- Ports and Adapters Pattern - Hexagonal Architecture and Hexagonal Architecture Implementation Guide
- Pimp my Architecture – Dan North (Presentation) He discusses an example of rearchitecting an application without rewriting it from scratch
- Example - The Architecture of the Morrison’s OrderPad - a Sample application
- How the Guardian successfully moved domain to www.theguardian.com
Related Books
- Building Evolutionary Architectures – Neal Ford, Rebecca Parsons, Patrick Kua
- Lean Architecture: for Agile Software Development – James O. Coplien, Gertrud Bjørnvig
- Clean Code Principles and Patterns 2nd Edition - Petri Silén