Does your architecture enable flow
-
Upload
christian-horsdal -
Category
Technology
-
view
646 -
download
0
description
Transcript of Does your architecture enable flow
DOES YOUR ARCHITECTURE ENABLE FLOW?WARM CROCODILE CONFERENCE 2014
CHRISTIAN HORSDAL@CHR_HORSDAL
OUTLINE
• What is flow anyway?
• Process vs. technology
• Solution architecture and flow
• Software architecture and flow
• Value stream mapping for coding
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
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
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
FLOW: SUSTAINED STEADY PACE
THINKING ABOUT FLOW
• How do features move from idea to production?
• Are features released regularly?
• Are there pauses?
• Does work progress smoothly?
THINKING ABOUT FLOW
THINKING ABOUT FLOW
FLOW: PROCESS PERSPECTIVE
• Limit WIP
• Small batches
• Minimize lead time
• Minimize pause time
• Have some slack
• Enables business agility
TECHNICAL CHOICES WITH PROCESS IMPACT
• Solution Architecture
• Software Architecture
• Data storage
• Deployment pipeline
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.
SOLUTION ARCHITECTURE
SOLUTION ARCHITECTURE
SOLUTION ARCHITECTURE
Postel’s LawBe conservative in what you do, be liberal in what you accept from others
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
CLEAR BOUNDARIES
SOLUTION ARCHITECTURE: CONTAIN FAILURES
CONTAIN FAILURESAND DEGRADE GRACEFULLY
MESSAGING
COMMUNICATE VIA MESSAGES
DEPENDENCY CHAINS
DEPENDENCY CHAINS
DEPENDENCY CHAINS
SOFTWARE ARCHITECTURE
• Separate the stable and the unstable
• Separate behavior and infrastructure
• Testability is a top priority
SEPARATE THE STABLE FROM THE UNSTABLE
• Contain the unknowns
• Defers decisions
• Reversible
• Feature toggles
GOOD MODELS ARE MORE STABLE THAN BEHAVIOR
• Thorough modelling
• No behavior in database
• Minimal behavior in domain entities
• Where is the behavior?
SEPARATE BUSINESS LOGIC AND INFRASTRUCTURE
• Database connections
• IoC
• Circuit breakers
• Throttles
• Messaging
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
DATA STORAGE
• No silver bullet
• I repeat: No silver bullet
• Refactoring and cleanliness applies
DATA STORAGE: EVENT SOURCING
• Append only – immutable
• => All information preserved
• Projections
• Replay
• => refactor projections
• => fix bugs
DATA STORAGE: SCHEMA
In database or in code
Either way: It exists
VALUE STREAM MAPPING FOR CODERS
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
FLOW: SUSTAINED STEADY PACE THROUGH HIGH QUALITY
CHRISTIAN HORSDAL@CHR_HORSDAL
Christian HorsdalIndependent Consultant
www.horsdal-consult.dk
@chr_horsdal