thoughtworks live 2014: "building systems that pivot"
TRANSCRIPT
BUILDING SYSTEMS THAT PIVOT
Andy Marks
@andee_marks
Zhamak Dehghani
@zhamakd
Untested system dependenciesTeam orchestration overhead
A BROKEN DIALOGUE WITH THE CUSTOMER - FEEL FAMILIAR?
Large software releaseLong feedback cycles
> 50%
< 30%Large software release
Team orchestrated overhead
Untested system dependencies
Long feedback cycles
>50%<30%
CONTINUOUS DELIVERY AS AN ENABLER
• automated build
• automated deployment
• automated environment provisioning - cloud & virtualisation
• automated testing
SP
EE
D O
F D
EL
IVE
RY
C D M AT U R I T Y L E V E L
Threshold without
changing architecture
A THOUGHT EXPERIMENT
Build Test Integration Acceptance Production
System.out.println
(“Hello World!”);
How long will this take?
ELEMENTS OF ARCHITECTURE
Integration
Off-the-shelf
Bespoke
Off-the-shelf
Bespoke
Integration
Integration
Integration
ELEMENTS OF ARCHITECTURE
Integration
Off-the-shelf
Bespoke
Off-the-shelf
Bespoke
Integration
Integration
Integration
BESPOKE DEVELOPMENT
LAYERED/TIERED ARCHITECTURE
User Interface/Channels
Business Logic/
Frameworks/Middleware
Database/Systems
of Record
BOUNDARIES
A business capability
Placing
Order
Tracking
Order
Short-term experimentation
DroneBased
Delivery
Technology & security
requirements
Debit
Cards
Credit Card
Payments
CAN I RELEASE THESE INDEPENDENTLY?
A THOUGHT EXPERIMENT
Integration
Off-the-shelf
MICROSERVICE
S• Independent
• Business capability
• Published interface
• Small
• 100s, not 1000s
MONITORING
STATUS
• Up?
• Down?
STATUS
• All up?
• All down?
• Mostly up?
• Up apart from 1?
• All of the important bits are up?
• …
BUILD VS. BUY
Customer Data Customer Facing Products
STRATEGIC
(BUILD)
UTILITY
(BUY)Ledger Systems Call Center Payments
PRODUCT SELECTION CRITERIA
• Can you write automated tests against it?
• Can it be automatically deployed?
• Can its environments be automatically provisioned?
• Can updates be automatically applied?
• Does it fit the way you work?
• Is it built using open standards?
• Does it run on open platforms?
• Is data stored in open formats?
• Is it open source?
RECOMMENDATIONS
• Bespoke development ➡ microservices
–Automate everything!
• Off-the-shelf software ➡ utility systems
–Select for automation and open standards
• Component integration
–Dumb, open and “of the web”
OTS
Bespoke
Bespoke
OTS