Does your architecture enable flow

39
DOES YOUR ARCHITECTURE ENABLE FLOW? WARM CROCODILE CONFERENCE 2014 CHRISTIAN HORSDAL @CHR_HORSDAL

description

If you want to keep on cranking out features quickly in the long term you need flow in your development process. Sustaining "flow" can be strenuous for a software architecture if it was not designed with flow in mind. This talk explores some of the techniques - both at the architecture level and at the code level - you can employ to enable and sustain flow.

Transcript of Does your architecture enable flow

Page 1: Does your architecture enable flow

DOES YOUR ARCHITECTURE ENABLE FLOW?WARM CROCODILE CONFERENCE 2014

CHRISTIAN HORSDAL@CHR_HORSDAL

Page 2: Does your architecture enable flow

OUTLINE

• What is flow anyway?

• Process vs. technology

• Solution architecture and flow

• Software architecture and flow

• Value stream mapping for coding

Page 3: Does your architecture enable flow

WHAT IS FLOW?

flow verb \ flō\ˈ

of liquid, gas, or electricity : to move in a steady and continuous way

: to move in a continuous and smooth way

: to move, come, or go continuously in one direction

Merriam Webster

Page 4: Does your architecture enable flow

WHAT IS FLOW?

There are many organizations that consider monthly releases a glacial pace, so they adopt weekly or even daily releases. At a weekly or daily cadence, iterations become largely irrelevant, as does estimating and commitment. Instead, a flow approach is used; features flow from design to done without pause, and at the end of the day or week, everything that is ready to be deployed is pushed to production. This rapid deployment is supported by a great deal of automation and requires a great deal of discipline, and it is usually limited to internal or SaaS environments.

Mary Poppendieck, How Cadence Predicts Process

Page 5: Does your architecture enable flow

FLOW IS NOT SPRINTING

• Sprinting:

• Work harder

• Work longer hours

• Maximize utilization

• Just DO IT!

• => irregularity

• => short term wins at expense of long term loss

Page 6: Does your architecture enable flow

FLOW: SUSTAINED STEADY PACE

Page 7: Does your architecture enable flow

THINKING ABOUT FLOW

• How do features move from idea to production?

• Are features released regularly?

• Are there pauses?

• Does work progress smoothly?

Page 8: Does your architecture enable flow

THINKING ABOUT FLOW

Page 9: Does your architecture enable flow

THINKING ABOUT FLOW

Page 10: Does your architecture enable flow

FLOW: PROCESS PERSPECTIVE

• Limit WIP

• Small batches

• Minimize lead time

• Minimize pause time

• Have some slack

• Enables business agility

Page 11: Does your architecture enable flow

TECHNICAL CHOICES WITH PROCESS IMPACT

• Solution Architecture

• Software Architecture

• Data storage

• Deployment pipeline

Page 12: Does your architecture enable flow

SOLUTION ARCHITECTURE

Conway’s LawAny organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

Page 13: Does your architecture enable flow

SOLUTION ARCHITECTURE

Page 14: Does your architecture enable flow

SOLUTION ARCHITECTURE

Page 15: Does your architecture enable flow
Page 16: Does your architecture enable flow

SOLUTION ARCHITECTURE

Postel’s LawBe conservative in what you do, be liberal in what you accept from others

Page 17: Does your architecture enable flow

SOLUTION ARCHITECTURE

• Client drives interface definitions

• Contract tests

• Capture contract assumption in automated tests

• Use stubs

• Run tests against stubs

• Run tests against “real” system

Page 18: Does your architecture enable flow

CLEAR BOUNDARIES

Page 19: Does your architecture enable flow

SOLUTION ARCHITECTURE: CONTAIN FAILURES

Page 20: Does your architecture enable flow
Page 21: Does your architecture enable flow
Page 22: Does your architecture enable flow

CONTAIN FAILURESAND DEGRADE GRACEFULLY

Page 23: Does your architecture enable flow

MESSAGING

Page 24: Does your architecture enable flow

COMMUNICATE VIA MESSAGES

Page 25: Does your architecture enable flow

DEPENDENCY CHAINS

Page 26: Does your architecture enable flow

DEPENDENCY CHAINS

Page 27: Does your architecture enable flow

DEPENDENCY CHAINS

Page 28: Does your architecture enable flow

SOFTWARE ARCHITECTURE

• Separate the stable and the unstable

• Separate behavior and infrastructure

• Testability is a top priority

Page 29: Does your architecture enable flow

SEPARATE THE STABLE FROM THE UNSTABLE

• Contain the unknowns

• Defers decisions

• Reversible

• Feature toggles

Page 30: Does your architecture enable flow

GOOD MODELS ARE MORE STABLE THAN BEHAVIOR

• Thorough modelling

• No behavior in database

• Minimal behavior in domain entities

• Where is the behavior?

Page 31: Does your architecture enable flow

SEPARATE BUSINESS LOGIC AND INFRASTRUCTURE

• Database connections

• IoC

• Circuit breakers

• Throttles

• Messaging

Page 32: Does your architecture enable flow

http://martinfowler.com/bliki/DesignStaminaHypothesis.html

Page 33: Does your architecture enable flow

DATA STORAGE

• No silver bullet

• I repeat: No silver bullet

• Refactoring and cleanliness applies

Page 34: Does your architecture enable flow

DATA STORAGE: EVENT SOURCING

• Append only – immutable

• => All information preserved

• Projections

• Replay

• => refactor projections

• => fix bugs

Page 35: Does your architecture enable flow

DATA STORAGE: SCHEMA

In database or in code

Either way: It exists

Page 36: Does your architecture enable flow

VALUE STREAM MAPPING FOR CODERS

Page 37: Does your architecture enable flow

WHAT IS FLOW?

There are many organizations that consider monthly releases a glacial pace, so they adopt weekly or even daily releases. At a weekly or daily cadence, iterations become largely irrelevant, as does estimating and commitment. Instead, a flow approach is used; features flow from design to done without pause, and at the end of the day or week, everything that is ready to be deployed is pushed to production. This rapid deployment is supported by a great deal of automation and requires a great deal of discipline, and it is usually limited to internal or SaaS environments.

Mary Poppendieck, How Cadence Predicts Process

Page 38: Does your architecture enable flow

FLOW: SUSTAINED STEADY PACE THROUGH HIGH QUALITY

CHRISTIAN HORSDAL@CHR_HORSDAL

Page 39: Does your architecture enable flow

Christian HorsdalIndependent Consultant

www.horsdal-consult.dk

@chr_horsdal

[email protected]