Skip to content

Architecture Without an End State workshop

Michael Nygard edited this page Jul 17, 2023 · 6 revisions

What you'll learn

  • Know why aiming for the “end state” never works and what to do about it
  • Learn how to design systems that can evolve over time in the face of technological and business change
  • Understand when the “single system of record” pattern applies and when it does not
  • Learn how to combine microservices with legacy systems
  • Learn to make your systems adapt to changing demands
  • Find ways to separate concerns for better information hiding
  • Learn about ways to isolate information to allow independent change
  • Learn how to build systems in simpler pieces that enable dynamic composition

Duration

One day

Description

Architecture plans in enterprises tend to resemble late-night infomercials. First, you see a person or system that seems incapable of survival—a situation that can be immediately rectified if you just buy into the product. (One popular infomercial shows incompetent people mangling tomatoes transitioning into Ginsu-wielding sous chefs; the architecture pitch starts with hideous complexity then moves to clean orthogonal box diagrams.) Operators are always standing by.

Real architecture never reaches that blissful end state. Something always interrupts the program: businesses change, technology changes, or funding dries up. What would happen if you did reach the end state, anyway? Is IT in the company done? Of course not.

The truth is that there is no end state. We must all learn to build systems that evolve and grow. We need to stop aiming for the end state and understand that change is continuous. We cannot predict the details, but we can learn the general patterns.

Michael Nygard demonstrates how to design and architect systems that admit change—bending and flexing through time. Using a blend of information architecture, technical architecture, and some process change, Michael walks you through examples of rigid systems to show how to transform them into more maneuverable architecture.

This workshop includes both teaching and hands-on design sessions. Design sessions will be paper and whiteboard work in small groups. You’ll work on real problems drawn from a variety of industries. If you’re a developer or architect working with medium to large architectures and building applications in the context of existing systems or transitioning to new systems, this is the tutorial for you.

Topics Covered

Foundations

  • Information hiding
  • Decision hiding
  • Separation of concerns
  • Architectural styles
  • Architectural patterns
  • Segregated interfaces
  • Bounded contexts
  • Hexagonal architecture

Organization dynamics

  • Local viewpoints
  • Local optimization, global deoptimization
  • Second-order effects, the law of unintended consequences

Team-scale autonomy

  • Safety in systems
  • Enabling independent actions
  • Architecture that promotes autonomy

Information architecture

  • Entities and identifiers
  • Single system of record vs federated systems
  • Open-world vs closed-world systems
Clone this wiki locally