Conway’s law revisited Architectures for an effective IT Uwe Friedrichsen, codecentric AG, 2012-2015
Jul 14, 2015
Conway’s law revisited Architectures for an effective IT
Uwe Friedrichsen, codecentric AG, 2012-2015
@ufried Uwe Friedrichsen | [email protected] | http://slideshare.net/ufried | http://ufried.tumblr.com
Formal part of value creation Solution: machine
Dynamic part of value creation
Solution: man
sluggishness/low dynamic high dynamic high dynamic
The historical course of market dynamics and the recent rise of highly dynamic and complex markets
The dominance of high dynamics and complexity is neither good nor bad. It‘s a historical fact.
t 1970/80 today
Age of crafts manu- facturing
Age of tayloristic industry
Age of global markets
1850/1900
Spacious markets, little competition
Local markets, high customi-zation
Outperformers exercise market pressure over conventional companies
We call the graph shown here the “Taylor Bathtub”. The “bathtub” curve
Source: BetaCodex Network Associates, “Organize for complexity”, BetaCodex Network White Paper 12 & 13
Economic Darwinism Everyone is affected by Economic Darwinism • All sectors • Growing globalization on all levels • Internet business • More competitors per customer • Higher customer expectations • Lower customer loyalty à In the long run only those will survive who meet the customer needs and demands best
IT is the nervous system IT is vital • All companies • IT is not just supporter or „cost center “ … • … but it is the central nervous system • Even short IT outages considered critical • No business change without IT • No new products without IT à IT limits the maximum possible adaption rate of a company
1960 1970 1980 1990 2000 2010 2020
Complicated
(Business functions)
Complex
(Business processes)
Highly complex
(Business nervous system)
Software crisis
Software engineering
PC
LAN
Internet Business Support
of IT
Selective
Holistic
Complicated
Complex “Moore’s law”
Mobile IoT
1960 1970 1980 1990 2000 2010 2020
Complicated
(Business functions)
Complex
(business processes)
Highly complex
(Business nervous system)
Software crisis
Software engineering
PC
LAN
Internet Business Support
of IT
Selective
Holistic
Complicated
Complex “Moore’s law”
Mobile IoT
We are here …
1960 1970 1980 1990 2000 2010 2020
Complicated
(Business functions)
Complex
(business processes)
Highly complex
(Business nervous system)
Software crisis
Software engineering
PC
LAN
Internet Business Support
of IT
Selective
Holistic
Complicated
Complex “Moore’s law”
Mobile IoT
… but we still base most of our decisions on that
We are here …
Formal part of value creation Solution: machine
Dynamic part of value creation
Solution: man
sluggishness/low dynamic high dynamic high dynamic
The historical course of market dynamics and the recent rise of highly dynamic and complex markets
The dominance of high dynamics and complexity is neither good nor bad. It‘s a historical fact.
t 1970/80 today
Age of crafts manu- facturing
Age of tayloristic industry
Age of global markets
1850/1900
Spacious markets, little competition
Local markets, high customi-zation
Outperformers exercise market pressure over conventional companies
We call the graph shown here the “Taylor Bathtub”. Remember the bathtub curve?
This adds an additional twist …
1960 1970 1980 1990 2000 2010 2020
Complicated
(Business functions)
Complex
(business processes)
Highly complex
(Business nervous system)
Software crisis
Software engineering
PC
LAN
Internet Business Support
of IT
Selective
Holistic
Complicated
Complex “Moore’s law”
Mobile IoT
… but we still base most of our decisions on that
We are here …
Business is very different today …
… than it was back then
Lean Enterprise
Productshaping/optimization
Innovation
Measure & analyze Accelerating OODA loop
Quick customer feedback cycles
Economic Darwinism
Business-related Change Drivers
Lean Enterprise
IT
Technology-related Change Drivers
IT as a Product (“Digitization”)
Virtualization of products
IT-centric business models
Disruptive new business models
Economic Darwinism
Business-related Change Drivers
Lean Enterprise
IT as a Product
IT
Technology-related Change Drivers
Economic Darwinism
Business-related Change Drivers
Lean Enterprise
IT as a Product
Cloud
IT
Technology-related Change Drivers
Zero Downtime
Peer Multiplication
Mobile & IoT
Deep Process Integration
UnreliableCommunication Unpredictable
Load Patterns
Economic Darwinism
Business-related Change Drivers
Lean Enterprise
IT as a Product
Cloud
IoT
Mobile
IT
Technology-related Change Drivers
Economic Darwinism
Business-related Change Drivers
Lean Enterprise
IT as a Product
Cloud
IoT
Mobile
IT Big Data Analytics Social
Technology-related Change Drivers
Process People
Organization Governance
Agile Lean
DevOps Flow
Decentralization Autonomy
End2End Responsibility
Craftsmanship
Mastery Curiosity
Beyond Budgeting (BetaCodex)
Systemic Optimization
Architectural drivers • Need for quick change and extension • Replace over reuse • Need for quick releases
• Unpredictable load patterns • Distributed, highly interconnected systems • Extreme high service availability
• Diverse front-ends and devices
• Cost efficiency
Architectural requirements • Easy to understand • Easy to extend • Easy to change • Easy to replace • Easy to deploy
• Easy to scale • Easy to recover
• Easy to connect
• Easy to afford
Architectural requirements • Easy to understand à Understandability • Easy to extend à Extensibility • Easy to change à Changeability • Easy to replace à Replaceability • Easy to deploy à Deployability
• Easy to scale à Scalability • Easy to recover à Resilience
• Easy to connect à Uniform interface
• Easy to afford à Cost-efficiency (for development & operations)
Conway’s law: Organizations which design systems [...] are constrained to produce designs which are copies of the communication structures of these organizations
Conway’s law reversed: You won’t be able to successfully establish an efficient organization structure that is not supported by your system design (architecture)
Monolith
Example: Multiple teams working on a monolith usually end up in tightly coupled teams with excessive communication overhead
Process People
Organization Governance
Agile Lean
DevOps Flow
Decentralization Autonomy
End2End Responsibility
Craftsmanship
Mastery Curiosity
Beyond Budgeting (BetaCodex)
Systemic Optimization
Our architecture needs to support decentralized, autonomous* teams
* Autonomy in this context means to have the teams working as autonomous as possible, yet making sure they share* the same overall vision. This means a certain amount of communication between the teams is always needed but it* should be made sure that it happens as efficient as possible.
Architectural requirements
• Easy to separate à Autonomy
• Easy to understand à Understandability • Easy to extend à Extensibility • Easy to change à Changeability • Easy to replace à Replaceability • Easy to deploy à Deployability
• Easy to scale à Scalability • Easy to recover à Resilience
• Easy to connect à Uniform interface
• Easy to afford à Cost-efficiency (for development & operations)
µServices • Built for replacement (not reuse) • Self-dependent, loosely coupled services • Should be aligned with business capability • Size should not exceed what one brain can grasp
µServices
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
REST
• Uniform access interface to resources • Closely related to the HTTP protocol • HATEOAS (Hypermedia as the engine of application state)
REST
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
Event/Message-driven • Asynchronous communication paradigm • Technical decoupling of communication peers (isolation) • Location transparency in conjunction with MOM • Call-stack paradigm replaced by (complex) message networks
Event/Message-driven
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
CQRS • Command Query Responsibility Segregation • Separate read and write interfaces including underlying models • Separation can be extended up to the data store(s) • Allows for optimized data representations and access logic
READWRITE
CQRS
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
READWRITE
Auto
nom
y
Reactive • Message-driven – asynchronous and non-blocking • Scalable – scaling out and embracing the network • Resilient – isolation, loose coupling and hierarchical structure • Responsive – latency control and graceful degradation of service
Reactive
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
Functional Programming • Alternative programming paradigm • Functional languages (Erlang, Haskell, Clojure, …) • Hybrid languages (Scala, …) • Languages with functional extensions (Python, JavaScript, Java, …)
Functional Programming
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
NoSQL • Augments the data store solution space • Different sweet spots than RDBMS • Key-Value Store – Wide Column Store – Document Store • Graph Database
NoSQL
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
Continuous Delivery • Automate the software delivery chain • Build – Continuous Integration, … • Test – Test Automation, … • Deploy – Infrastructure as Code, …
Continuous Delivery
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
Cloud provisioning model • On-demand provisioning and de-provisioning • Instant availability • Self-service • Pay-per-use
Cloud provisioning model
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
Docker • Build, ship, run on container-basis • Process-level isolation • Declarative communication path configuration • Cambrian explosion of ecosystem at the moment
Docker
Cost-
effic
ienc
y
Unifo
rm In
terfa
ce
Resil
ienc
e
Scal
abilit
y
Dep
loya
bilit
y
Repl
acea
bilit
y
Chan
geab
ility
Exte
nsib
ility
Unde
rsta
ndab
ility
Auto
nom
y
Findings • There is not a simple solution and no “one size fits all” • Some of the topics evaluated bear a high potential • Some of the topics evaluated are more of a side note • A mutually reinforcing combination of concepts is needed
µServices • Conway’s law • Built for replacement • Aligned with business capabilities • Bounded Context (Domain-Driven Design) • Separate UI and service
Bounded Context
Bounded Context
Bounded Context
µS µS
µS µS
µS
µS µS
µS µS
µS
µS µS
µS µS
µS
UI
e.g., B2C-Portal
UI
e.g., embedded in Partner-Portal
UI
e.g., Mobile App
UI
e.g., Clerk Desktop
REST interfaces • Use as API gateway for client access • Encapsulate dynamics and complexity of service landscape • Provide client-driven, coarse-grained service calls
behind a uniform API based on a proven protocol • Should be provided on bounded context level • Decouple speed of evolvement (services vs. API)
Bounded Context
µS
µS µS µS
µS
REST API Gateway
µS
Bounded Context
Other Client
User Interface
Bounded Context
Message-based API
also okay, but requires clear and stable, client-oriented
contract
Event-driven communication • Use for inter-service communication • Decoupling and isolation • Vertical slicing of functionality • Easier evolution of flows and processes • Configuration-visualization-monitoring support required
µS
Request/Response : Horizontal slicing
Flow / Process
µS µS
µS µS µS
µS
Event-driven : Vertical slicing
µS µS
µS
µS µS
Flow / Process
Resilient (reactive) software design • Resilience and responsiveness are mandatory • Elastic design for scalability • Start with isolation and latency control • Separate control and data flow • Many new challenges for developers
Cloud/container provisioning model • Basis for elasticity at runtime • Basis for speed and flexibility at development time • Private, hybrid or public • Should be combined with container approaches (e.g., Docker) • “Natural” infrastructure for µService architecture
Container Manager
µS
µS
µS
µS
µS
µS
µS
µS
µS
µS
µS
µS
µS
µS
µS
Container
Explicitly declared communication paths
µService
Production-readiness • Configuration • Discovery, Routing • Choreography, Orchestration • Observability
• Monitoring, Measuring, Logging
Configuration • Netflix Archaius
Orchestration • Apache Aurora on Apache Mesos • Marathon • Kubernetes • Fleet
Discovery • Netflix Eureka • Apache ZooKeeper • Kubernetes • Etcd
Routing • Netflix Zuul & Ribbon • Twitter Finagle
Monitoring • Hystrix • Twitter Zipkin (Distributed Tracing)
Measuring • Dropwizard Metrics
Logging • ELK • Graylog2 • Splunk
Automation • Automate everything • Build, test & deployment (Continuous Delivery) • Resource provisioning (Cloud API) • Restart, failover, error handling (Resilience) • Starting and tearing down instances (Scalability)
5 + 2 style • µServices
• REST interfaces
• Event-driven communication
• Resilient (reactive) software design
• Cloud/container provisioning model
• Production-readiness
• Automation
Side note
Enterprise architecture management • Should not impact team autonomy
• No interference with team responsibilities
• Focus on shared vision • Provide common vision for all teams
• Makes communication efficient • To follow common vision teams need to communicate • Minimal set of joint technical collaboration standards
required for efficient communication
• Not a separate team • Use representatives from the teams • Add a person in charge if required
à Very different from traditional EAM
Wrap-up
• Business & technological driven change
• IT as a whole must respond to the drivers
• Architecture must support the drivers
• Architecture must support the organization
• The new architectures are different
• New challenges for developers (& ops)
We need to rethink IT
Join the most disruptive and exciting change we have seen in IT for many years
@ufried Uwe Friedrichsen | [email protected] | http://slideshare.net/ufried | http://ufried.tumblr.com