View this presentation

Ending the Code
Deployment
Nightmares
Christian Larsen
CTO, Anchor
Obligatory Audience Participation
How frequently do you release to production?
Alice & Bob
Unpleasant Dreams
•
This isn’t ideal for Alice or her client:
– Deployments are slow and tedious.
– Some deployments cause an unforeseen outage.
– Old bugs still rear their head from time to time.
*Thankfully, the deployments are infrequent.
Unpleasant Dreams
•
This isn’t ideal for Bob or his clients:
– Changes are slow and tedious.
– Some changes cause an unforeseen outage.
– Old bugs still rear their head from time to time.
*Thankfully, the changes are infrequent.
New Nightmares
•
•
•
Clients hate downtime
New is different to Old
Bugs of indeterminate origin
What went wrong for Alice?
Nothing. It was all Bob’s fault.
• Bob looks after infrastructure
• The infrastructure broke
• Ergo: Bob’s fault.
What went wrong for Alice?
•
Quality
– Manual deployments are inevitably error prone
– Manual testing is inconsistent
•
Velocity
– Manual deploys are inevitably slow
– Errors require re-work
•
Mutability
– Changes should not be layered
– Inconsistency means inconsistent test results
Build Artefacts
•
•
•
Automatically built
Generated once
Immutable
Alice’s New Process
•
Alice automatically:
–
–
–
–
•
Versions her application changes
Builds her application changes
Tests her application changes
Deploys her application changes
Resulting in:
– Increased quality through extensive testing and automation
– Increased velocity through frequent, rapid deployments of higher quality
(less rework)
– Decreased cost by reducing errors and accelerating innovation
What went wrong for Bob?
•
Quality
– Manual deploys are inevitably error prone
– Manual testing is inconsistent
•
Velocity
– Manual deploys are inevitably slow
– Errors require re-work
•
Mutability
– Changes should not be layered
– Inconsistency means inconsistent test results
Infrastructure As Code
•
•
•
IaaS: Infrastructure and its structure can be programmatically
defined
Configuration Management: Behaviour and state can be
programmatically defined
Programmatic constructs can be versioned
Infrastructure Build Artefacts –> Immutable Infrastructure
Bob’s New Process
•
Bob Automatically:
–
–
–
–
•
Versions his infrastructure changes
Builds his infrastructure changes
Tests his infrastructure changes
Deploys his infrastructure changes
Resulting in:
– Increased quality through extensive testing and automation
– Increased velocity through frequent, rapid deployments of higher quality
(less rework)
– Decreased cost by reducing errors and accelerating innovation
Marry The Processes
•
•
•
•
Your application is infrastructure and code
Share tools, processes & responsibility
Do hard things more frequently
Focus foremost on quality