SlideShare a Scribd company logo
Everything you ever wanted
to know about deployment
  ...but were afraid to ask
           Laura Thomson
         laura@mozilla.com
                @lxt




                 1
Disclaimers

Not about tools
Not prescriptive
Recognize where you are, and where you
want to be



                   2
Models



  3
Maturity model

(after Capability Maturity Model, CMU)
1. Initial: “chaotic”, “individual heroics”
2. Repeatable: documented
3. Defined: standard process, some tuning
4. Managed: measured
5. Optimizing: continual improvement, innovation


                            4
Initial
Startup phase of many projects
Long term
Push code whenever you feel like it
Devs push code
Not a lot of tests, automation, or verification



                     5
Repeatable

Often after a 1.0, first non-beta ship, or first
ship with a significant number of users
Some kind of written process
Push when a feature is done: less often than
initially, typically



                      6
Defined

Procedural documentation
Start of automation
Often done by a sysadmin




                      7
Managed
Automation
Tools: packaging
Verification post-push
Measurement: How often do we push? How
long does it take? How did that push affect
performance?



                    8
Optimized

Take the drama out of deployment
Often - not essentially - continuous
deployment
Typically a lot of test automation
Lightweight


                     9
How much do we ship?
Start with per-patch pushes
Move to features
Then to releases
Then back to features
The back to per-patch pushes


                    10
Per-patch



Features               Features



           Releases


              11
Velocity models
Critical mass
Single hard deadline
Train model
Continuous deployment




                       12
Critical mass

“enough stuff to release”
MVP




                    13
Single hard deadline

Support for X by date Y
Shipping to a marketing plan
Hard deadlines are hard




                    14
Train model

Release every Wednesday
Whatever’s ready to ship, ships
Anything else catches the next train




                    15
Continuous
         deployment

Ship each change as soon as it’s done
Continuous is kind of a misnomer;
deployment is discrete




                    16
Tools and practices



         17
Source control
Stable vs unstable
Branch per bug, branch per feature
“git flow” is overkill, but you need a process
If it’s not per-patch-push, tag what you push
Open source needs ESRs even if you’re high
velocity

                     18
Dev Envs
Dev’s laptop is a horrible environment
VMs can be hard to maintain
Development databases are hard: fake data, minidbs
Development API sandbox
Lightweight set up and tear down VMs
“Development” staging server (unstable)



                        19
Staging Envs
Staging environment MUST REFLECT
PRODUCTION
Same versions, same proportions: a scale
model
Realistic traffic and load (scale)
Staging must be monitored
Staging must have managed configuration

                      20
One Box Fail

Staging needs to be more than one box
If you have multiple databases or webheads
or whatever in prod...you need that in
staging



                    21
Continuous Integration
Build-on-commit
VM-per-build
Run all unit tests
(Auto) push build to staging
Run more tests (acceptance/UI)


                     22
Testing
Unit tests: run locally, run on build
Acceptance/User tests: run against browser
(Selenium or whatever)
Load tests: how does it perform under prod
load?
Smoke tests: what’s the maximum load we
can support with this build?

                      23
Deployment tools
It doesn’t really matter what you use
Automate it
Do it the same way in staging and production
Use configuration management to deploy
config changes and manage your
platform...the same way in staging and
production

                    24
QA

Feature tests on unstable
Full tests on stage
Full tests on production (verification)




                      25
Measurement

Monitoring
Performance testing
Instrument, instrument, instrument
Is it actually possible to have too much data?
(Hint: yes. But only if no insight)


                      26
Postmortems

What went right
What went wrong
No finger pointing




                    27
When things go wrong



         28
Quantum of
          deployment
(via Erik Kastner)
“What’s the smallest number of steps,
with the smallest number of people
and the smallest amount of ceremony required
to get new code running on your servers?”
                     http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/,




                        29
Chemspills


Even if you have heavyweight/non-automated
deployments, what does a chemspill look
like?




                   30
THIS IS NOT A DRILL


        31
Fail forward

Fail forward: the premise that
Mean Time To Repair
is the key measure, not MTBF




                     32
Fail
Sometimes you can’t fail forward
Example: intractable/unforeseen performance
problem, hardware failures, datacenter
migrations
Sometimes it happens.
Upper time limits: failing forward is taking
too long

                      33
Rollback

Going back to the last known good
Having a known process for rollback is just
as important as having a known process for
deployment
Practice rollbacks



                     34
Decision points
When shipping something new, define some
rules and decision points
If it passes this test/performance criteria
we’ll ship it
If these things go wrong we’ll roll back
Make these rules beforehand, while heads
are calm

                      35
Feature switches
A nicer alternative to rollback
Turn a feature on for a subset of users: beta
users, developers, n% of users
Turn it on for everybody
Turn it off if you’re having problems or
unexpected load: “load shedding”



                     36
Continuous
Deployment


    37
What is CD?
Total misnomer
Not continuous, discrete
Automated not automatic, generally
Intention is push-per-change
Usually driven by a Big Red Button


                    38
Technical requirements
Continuous integration with build-on-commit
Tests with good coverage, and a good feel for the
holes in coverage
A staging environment that reflects production
Managed configuration
Scripted single button deployment to a large number
of machines



                        39
People and process
High levels of trust
Realistic risk assessment and tolerance
Excellent code review
Excellent source code management
Tracking, trending, monitoring



                       40
Testing vs monitoring
Run tests against production
Continuous testing = one kind of monitoring
Testing is an important monitor
You need other monitors
You need tests too



                     41
You should build the capability for
continuous deployment
even if you never intend to do
continuous deployment.




                 42
The only way to get good at
deployment is to deploy a lot.




                 43
Questions?


 laura@mozilla.com




       44

More Related Content

PDF
Continuous delivery @wcap 5-09-2013
PDF
The Continuous delivery Value @ codemotion 2014
PDF
Put "fast" back in "fast feedback"
PPTX
CI/CD and automated Test
ODP
Agileee 2012
PPTX
Cf objective2014 testing-testingeverywhere
PDF
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
PDF
Release Automation: Better Quality, Faster Deployment, Amazing ROI
Continuous delivery @wcap 5-09-2013
The Continuous delivery Value @ codemotion 2014
Put "fast" back in "fast feedback"
CI/CD and automated Test
Agileee 2012
Cf objective2014 testing-testingeverywhere
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Release Automation: Better Quality, Faster Deployment, Amazing ROI

What's hot (20)

PDF
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
PDF
First steps in Test Driven Development
PPTX
Continuous Delivery
PPTX
Test Driven Development & CI/CD
PDF
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
PDF
Putting the pro in programmer
PPTX
Software Testing, Everyone's responsibility
PPTX
Agile Engineering Sparker GLASScon 2015
PPTX
Distributed Development
PPTX
A brief history of automation in Software Engineering
PPTX
The Hard Problems of Continuous Deployment
PPTX
Continuous Deployment
KEY
Continuous deployment
PPTX
Continuous Delivery
PPTX
Common Sense Software Development
PPTX
What the music of the 1980s taught me about shipping software
PPTX
Continuous Deployment
PDF
Continuous Deployment: Beyond Continuous Delivery
PPTX
Scrum à la Pablo (English)
PPTX
Overview of agile methodology
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
First steps in Test Driven Development
Continuous Delivery
Test Driven Development & CI/CD
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Putting the pro in programmer
Software Testing, Everyone's responsibility
Agile Engineering Sparker GLASScon 2015
Distributed Development
A brief history of automation in Software Engineering
The Hard Problems of Continuous Deployment
Continuous Deployment
Continuous deployment
Continuous Delivery
Common Sense Software Development
What the music of the 1980s taught me about shipping software
Continuous Deployment
Continuous Deployment: Beyond Continuous Delivery
Scrum à la Pablo (English)
Overview of agile methodology
Ad

Similar to Everything you ever wanted to know about deployment but were afraid to ask (20)

PPTX
Continuous delivery applied (RJUG)
PDF
Deploying and releasing applications
PPTX
Intro To Continuous Delivery
PPTX
Continuous Delivery Applied
PPTX
Continuous Delivery Applied (Agile Richmond)
PPTX
Continuous Delivery Applied
PDF
5 Steps on the Way to Continuous Delivery
PPTX
Continuous Delivery Applied (AgileDC)
PDF
Introduction to DevOps
PDF
Preparing for Enterprise Continuous Delivery - 5 Critical Steps
PPTX
Road to Continuous Delivery - Wix.com
PPTX
Mastering Complex Application Deployments
PPTX
Continuous delivery applied
PPTX
Continuous delivery applied (DC CI User Group)
PPT
Making the Agile Leap to Continuous Deployment
PDF
Common blind spots on the journey to production vijay raghavan aravamudhan
PDF
Continuous Delivery for Agile Teams
PPTX
Automating the application lifecycle.pptx
PDF
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
PPTX
A better faster pipeline for software delivery, even in the government
Continuous delivery applied (RJUG)
Deploying and releasing applications
Intro To Continuous Delivery
Continuous Delivery Applied
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied
5 Steps on the Way to Continuous Delivery
Continuous Delivery Applied (AgileDC)
Introduction to DevOps
Preparing for Enterprise Continuous Delivery - 5 Critical Steps
Road to Continuous Delivery - Wix.com
Mastering Complex Application Deployments
Continuous delivery applied
Continuous delivery applied (DC CI User Group)
Making the Agile Leap to Continuous Deployment
Common blind spots on the journey to production vijay raghavan aravamudhan
Continuous Delivery for Agile Teams
Automating the application lifecycle.pptx
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
A better faster pipeline for software delivery, even in the government
Ad

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPT
Teaching material agriculture food technology
PPTX
Big Data Technologies - Introduction.pptx
PDF
Approach and Philosophy of On baking technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
Cloud computing and distributed systems.
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Advanced IT Governance
PDF
Modernizing your data center with Dell and AMD
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Understanding_Digital_Forensics_Presentation.pptx
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Teaching material agriculture food technology
Big Data Technologies - Introduction.pptx
Approach and Philosophy of On baking technology
20250228 LYD VKU AI Blended-Learning.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Cloud computing and distributed systems.
Review of recent advances in non-invasive hemoglobin estimation
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Advanced IT Governance
Modernizing your data center with Dell and AMD
Bridging biosciences and deep learning for revolutionary discoveries: a compr...

Everything you ever wanted to know about deployment but were afraid to ask

  • 1. Everything you ever wanted to know about deployment ...but were afraid to ask Laura Thomson laura@mozilla.com @lxt 1
  • 2. Disclaimers Not about tools Not prescriptive Recognize where you are, and where you want to be 2
  • 4. Maturity model (after Capability Maturity Model, CMU) 1. Initial: “chaotic”, “individual heroics” 2. Repeatable: documented 3. Defined: standard process, some tuning 4. Managed: measured 5. Optimizing: continual improvement, innovation 4
  • 5. Initial Startup phase of many projects Long term Push code whenever you feel like it Devs push code Not a lot of tests, automation, or verification 5
  • 6. Repeatable Often after a 1.0, first non-beta ship, or first ship with a significant number of users Some kind of written process Push when a feature is done: less often than initially, typically 6
  • 7. Defined Procedural documentation Start of automation Often done by a sysadmin 7
  • 8. Managed Automation Tools: packaging Verification post-push Measurement: How often do we push? How long does it take? How did that push affect performance? 8
  • 9. Optimized Take the drama out of deployment Often - not essentially - continuous deployment Typically a lot of test automation Lightweight 9
  • 10. How much do we ship? Start with per-patch pushes Move to features Then to releases Then back to features The back to per-patch pushes 10
  • 11. Per-patch Features Features Releases 11
  • 12. Velocity models Critical mass Single hard deadline Train model Continuous deployment 12
  • 13. Critical mass “enough stuff to release” MVP 13
  • 14. Single hard deadline Support for X by date Y Shipping to a marketing plan Hard deadlines are hard 14
  • 15. Train model Release every Wednesday Whatever’s ready to ship, ships Anything else catches the next train 15
  • 16. Continuous deployment Ship each change as soon as it’s done Continuous is kind of a misnomer; deployment is discrete 16
  • 18. Source control Stable vs unstable Branch per bug, branch per feature “git flow” is overkill, but you need a process If it’s not per-patch-push, tag what you push Open source needs ESRs even if you’re high velocity 18
  • 19. Dev Envs Dev’s laptop is a horrible environment VMs can be hard to maintain Development databases are hard: fake data, minidbs Development API sandbox Lightweight set up and tear down VMs “Development” staging server (unstable) 19
  • 20. Staging Envs Staging environment MUST REFLECT PRODUCTION Same versions, same proportions: a scale model Realistic traffic and load (scale) Staging must be monitored Staging must have managed configuration 20
  • 21. One Box Fail Staging needs to be more than one box If you have multiple databases or webheads or whatever in prod...you need that in staging 21
  • 22. Continuous Integration Build-on-commit VM-per-build Run all unit tests (Auto) push build to staging Run more tests (acceptance/UI) 22
  • 23. Testing Unit tests: run locally, run on build Acceptance/User tests: run against browser (Selenium or whatever) Load tests: how does it perform under prod load? Smoke tests: what’s the maximum load we can support with this build? 23
  • 24. Deployment tools It doesn’t really matter what you use Automate it Do it the same way in staging and production Use configuration management to deploy config changes and manage your platform...the same way in staging and production 24
  • 25. QA Feature tests on unstable Full tests on stage Full tests on production (verification) 25
  • 26. Measurement Monitoring Performance testing Instrument, instrument, instrument Is it actually possible to have too much data? (Hint: yes. But only if no insight) 26
  • 27. Postmortems What went right What went wrong No finger pointing 27
  • 28. When things go wrong 28
  • 29. Quantum of deployment (via Erik Kastner) “What’s the smallest number of steps, with the smallest number of people and the smallest amount of ceremony required to get new code running on your servers?” http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/, 29
  • 30. Chemspills Even if you have heavyweight/non-automated deployments, what does a chemspill look like? 30
  • 31. THIS IS NOT A DRILL 31
  • 32. Fail forward Fail forward: the premise that Mean Time To Repair is the key measure, not MTBF 32
  • 33. Fail Sometimes you can’t fail forward Example: intractable/unforeseen performance problem, hardware failures, datacenter migrations Sometimes it happens. Upper time limits: failing forward is taking too long 33
  • 34. Rollback Going back to the last known good Having a known process for rollback is just as important as having a known process for deployment Practice rollbacks 34
  • 35. Decision points When shipping something new, define some rules and decision points If it passes this test/performance criteria we’ll ship it If these things go wrong we’ll roll back Make these rules beforehand, while heads are calm 35
  • 36. Feature switches A nicer alternative to rollback Turn a feature on for a subset of users: beta users, developers, n% of users Turn it on for everybody Turn it off if you’re having problems or unexpected load: “load shedding” 36
  • 38. What is CD? Total misnomer Not continuous, discrete Automated not automatic, generally Intention is push-per-change Usually driven by a Big Red Button 38
  • 39. Technical requirements Continuous integration with build-on-commit Tests with good coverage, and a good feel for the holes in coverage A staging environment that reflects production Managed configuration Scripted single button deployment to a large number of machines 39
  • 40. People and process High levels of trust Realistic risk assessment and tolerance Excellent code review Excellent source code management Tracking, trending, monitoring 40
  • 41. Testing vs monitoring Run tests against production Continuous testing = one kind of monitoring Testing is an important monitor You need other monitors You need tests too 41
  • 42. You should build the capability for continuous deployment even if you never intend to do continuous deployment. 42
  • 43. The only way to get good at deployment is to deploy a lot. 43

Editor's Notes