Continuous Delivery is the automation of our deployment and QA, isn’t it? The industrialized software production chain that makes our products more stable. Well, kind of. It’s more than that. It can save you tons of pain when you apply its principles everywhere. This talk explains how you free yourself by doing infrastructure like software development. Everything under control. Everything under version control.
5. Continuous DeliveryContinuous Delivery
“ ... a set of practices and principles ...
building, testing, and releasing software,
faster and more frequently
“ ... put release schedule in the hands of
the business - not IT
Source: https://painless.software/continuous-delivery
“ .
7. TDD, BDD, SeleniumTDD, BDD, Selenium
Tests are fundamental for build pipeline.
No automated verification w/o tests
No safeguarding against regression
No safety net against deployments
that would take the site down
TDD good practice
BDD helpful for acceptance
Selenium / performance
!!risk!!
8. Envs & ContainersEnvs & Containers
Containers make process easier.
Feature parity across environments
Develop, Staging, Production identical
Simplify deployments, no builds on hosts
Simplify rollbacks
Optional, but makes it easier
Container images built by pipeline
Push complete system
10. Why Do It?Why Do It?
Move FasterMove Faster
release more often
faster ROI
less dependencies
eliminate frictions
Improve ConfidenceImprove Confidence
high probability of success
broken things can be fixed
fast / easily
sustainable corrections
"it's worth investing"
(time + effort)
11. CD in a NutshellCD in a Nutshell
Concept Patterns Techniques
Pipeline CI, automatic feedback, continuous
deployment, feature toggles
Empower sponsor review apps, self-service deployment,
zero-downtime, canary + b/g releases
Prove feature
completeness
BDD, TDD, automatic tests (regression,
performance, penetration)
Error prevention environment parity, locked-down envs,
transient envs, automatic provisioning
Visibility version control, dashboards, monitoring
Speed fast tests, resilient / self-healing envs
13. What Did We Do?What Did We Do?
1. deployment
2. testing
3. environments
“ Big picture
Fix things we first neglect
14. Make It BiggerMake It Bigger
We're neglecting dev infra
on-boarding developers takes days
no tool parity across dev PCs
can't wipe PC when it behaves weird
everyone asks you (how do I?)
"projects" for switching technologies
or introducing new tools
15. What's Wrong?What's Wrong?
CD Pattern Anti-Pattern
Automate environment config Manual setup, "work of art"
Scripted setup Notes, documentation of setup
Single command builds Comprehensive instructions
Fix broken environments first Ignore errors, postpone fixes
TDD, automate tests Manual verification + fixes
Fully version controlled Parts not version controlled
Visibility, dashboards, sharing Geeky "secret configurations"
16. Solution (part #1)Solution (part #1)
Automate your setup
configuration management
treat your dev env like a container
resist manual changes
version control
backup + restore your data