Incremental Architecture
$1,295.00
10/7–10/9, 2024, 9:00AM-12:00PM US Pacific Time
Agility is impossible if your architecture makes even trivial changes insanely difficult. Learn how to incrementally create adaptable systems that easily accommodate change. Along the way, you’ll also experience Event Storming and other Domain-Driven Design techniques.
11 slots remaining
Agility is impossible if your architecture makes even trivial changes insanely difficult. The solution is in Gall’s Law: A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.
The most maintainable and effective architectures are those designed to grow incrementally as a system evolves rather than being defined in one giant up-front phase. Since they’re as simple as possible at any given moment, these systems are easy to expand and refactor (and maintain). However, as we evolve, our architecture must remain coherent and easily withstand the stress of changing requirements. The best way to do that is with a domain focus. The structure of the domain is the structure of the architecture. When the domain changes, the architecture easily adapts.
In this hands-on workshop, you’ll learn how to develop a coherent architecture that grows incrementally as you learn. You’ll learn a complete process for designing incrementally, starting with domain analysis and ending with code. You’ll come away with a solid understanding of how to build incremental-friendly architectures (and products).
You’ll learn to start from “-ilities” and incremental-friendly patterns. You’ll learn how to focus the architecture on customer needs through the user’s stories. Domain-Driven-Design and Event Storming (a way to implement complex reactive systems such as choreographed microservice systems that directly reflect the domain so easily adapt as the domain changes). You’ll also learn a little about working in an ensemble (mob), which we’ll use in the exercises.
Outline
Part 1
- Working incrementally
- Integrating coding and product development
- The inspect-and-adapt loop.
- Incremental-friendly architectural patterns.
- Monolithic vs. incremental deployment
- Layered architectures
- Hexagonal (MicroKernel) architectures
- Component architectures
- Distributed architectures
- Event-driven architectures
- Selecting core architecture from patterns *
- Realizing -ilities *
- Creating Problem Statements *
- The User’s Story *
Part 2
- Domain-Driven Design
- Opaque components, hard boundaries
- Event-driven systems (recap)
- Lightweight messaging systems
- Event Storming*
- demo
- full-class exercise
- Converting the event model to a static model for implementation *
- Implementation traps & pitfalls *
* These topics involve extensive hands-on exercises, time permitting.