Upload
lythuy
View
218
Download
0
Embed Size (px)
Citation preview
Continuous DeliveryContinuous Delivery starts at yourstarts at your
DevelopmentDevelopment EnvironmentEnvironment
PyCon 9, 2018PyCon 9, 2018live slides @ tinyurl.com/py9dev
Peter BittnerPeter BittnerDeveloper (of people, companies, code)Co-founder Painless Software@peterbittner, [email protected]
behave-django codeship-yaml sentrylogsdjango-apptemplates djangocms-maps
AgendaAgenda
1. Continuous Delivery Intro2. More Than Just Servers3. Demo: Setup Automation4. Demo: Infrastructure Automation
Continuous DeliveryContinuous Delivery
“ ... a set of practices and principles ...building, testing, and releasing software,
faster and more frequently
“ ... put release schedule in the hands ofthe business - not IT
Source: https://painless.software/continuous-delivery
“ .
Development ProcessDevelopment ProcessAutomation, pipelines & DevOps.
push codeopen PR/MR approve
build review
featureproduction
systembranch
server system
TDD, BDD, SeleniumTDD, BDD, SeleniumTests are fundamental for build pipeline.
No automated verification w/o testsNo safeguarding against regressionNo safety net against deployments that would take the site down
TDD good practice
BDD helpful for acceptance
Selenium / performance
!! ris
k !!
Envs & ContainersEnvs & ContainersContainers make process easier.
Feature parity across environmentsDevelop, Staging, Production identicalSimplify deployments, no builds on hostsSimplify rollbacks
Optional, but makes it easier
Container images built by pipeline
Push complete system
It's Agile (Ever Since)It's Agile (Ever Since)
Source: http://agilemanifesto.org/principles.html
“ Satisfy the customer!
Why Do It?Why Do It?
Move FasterMove Fasterrelease more oftenfaster ROIless dependencieseliminate frictions
Improve ConfidenceImprove Confidencehigh probability of successbroken things can be fixedfast / easilysustainable corrections"it's worth investing" (time + effort)
CD in a NutshellCD in a NutshellConcept Patterns Techniques
Pipeline CI, automatic feedback, continuousdeployment, feature toggles
Empower sponsor review apps, self-service deployment,zero-downtime, canary + b/g releases
Prove featurecompleteness
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
What Did We Do?What Did We Do?
1. deployment2. testing3. environments
“ Big picture
Fix things we first neglect
Make It BiggerMake It BiggerWe're neglecting dev infra
on-boarding developers takes daysno tool parity across dev PCscan't wipe PC when it behaves weirdeveryone asks you (how do I?)"projects" for switching technologies or introducing new tools
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"
Solution (part #1)Solution (part #1)Automate your setup
configuration managementtreat your dev env like a containerresist manual changesversion controlbackup + restore your data
DemoDemoansible-softwareansible-software
github.com/painless-software/ansible-software
Solution (part #2)Solution (part #2)Automate your infrastructure
fully automatic setup: desktops & serversinfrastructure monitoring & mgmtcomplete tool chain: infra as codeautomatic backups (offsite)user data synchronization (offline)
DemoDemogroundcontrolgroundcontrol
github.com/painless-software/groundcontrol
Thank you!Thank you!for your precious timefor your precious time
Painless SoftwarePainless SoftwareLess pain, more fun.