Lean Architecture


learn fast, learn often

What is architecture?


  • high-level structure of a system
  • decisions which are hard to change

We don’t need
architecture


  • only working software counts
  • all decisions should be revertable (easily)
  • vague decisions at large (blueprints)
  • lost in details

We do need
architecture


  • shorten the feedback loop
  • shared understanding
  • make decisions explicit

architecture is

“whatever the
important stuff is”

OK, but how?

it hurts,
so we do it often

architecture is
everyone’s job

leverage the domain


postpone technology

focus on learning


(known unknowns)

practice


practice

practice

practice

One of many ways

1. identify actors


  • human users, components and external systems
  • derive actors from the functional domain

2. draw data flows


  • derive interfaces from data,
    not the other way around
  • split heterogeneous data
  • be specific

3. get feedback


  • biz and tech risks
  • data volumes
  • security and privacy
  • validate assumptions
  • infrastructure
  • operations
  • costs estimation
  • technology choice
  • and … and … and …

4. zoom in and
repeat

Let’s try it!

but in the real world…


  • aim for smaller increments
  • work from priorities
  • know when to stop! YMMV

our job is to create the “real world”

summary

  1. functional components are more stable
  2. maximize learning over effort
  3. practice often

Thank you!


shishkin.org

@sshishkin