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
© Copyright 2024