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

What's hot

Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
garrett honeycutt
 
First steps in Test Driven Development
First steps in Test Driven Development First steps in Test Driven Development
First steps in Test Driven Development
IIBA UK Chapter
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Mikalai Alimenkou
 
Test Driven Development & CI/CD
Test Driven Development & CI/CDTest Driven Development & CI/CD
Test Driven Development & CI/CD
Shanmuga S Muthu
 
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
Scrum Gathering 2012 Shanghai_敏捷测试与质量管理分会场演讲话题:getting to done by testing at ...
LetAgileFly
 
Putting the pro in programmer
Putting the pro in programmerPutting the pro in programmer
Putting the pro in programmer
Switch Systems Ltd
 
Software Testing, Everyone's responsibility
Software Testing, Everyone's responsibilitySoftware Testing, Everyone's responsibility
Software Testing, Everyone's responsibility
Kurt Bliefernich
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015
Stephen Ritchie
 
Distributed Development
Distributed DevelopmentDistributed Development
Distributed Development
Dmitri Nesteruk
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software Engineering
Georg Buske
 
The Hard Problems of Continuous Deployment
The Hard Problems of Continuous DeploymentThe Hard Problems of Continuous Deployment
The Hard Problems of Continuous DeploymentTimothy Fitz
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous DeploymentTimothy Fitz
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deploymentDaniel
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Mike McGarr
 
Common Sense Software Development
Common Sense Software DevelopmentCommon Sense Software Development
Common Sense Software Development
Nitin Bhide
 
What the music of the 1980s taught me about shipping software
What the music of the 1980s taught me about shipping softwareWhat the music of the 1980s taught me about shipping software
What the music of the 1980s taught me about shipping software
Michael Ewins
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
Timothy Fitz
 
Continuous Deployment: Beyond Continuous Delivery
Continuous Deployment: Beyond Continuous DeliveryContinuous Deployment: Beyond Continuous Delivery
Continuous Deployment: Beyond Continuous Delivery
Timothy Fitz
 
Scrum à la Pablo (English)
Scrum à la Pablo (English)Scrum à la Pablo (English)
Scrum à la Pablo (English)
Pablo García Montes
 
Overview of agile methodology
Overview of agile methodologyOverview of agile methodology
Overview of agile methodology
Phuong Pham
 

What's hot (20)

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

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

Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Cωνσtantίnoς Giannoulis
 
Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018
David Tan
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
Mike McGarr
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
Sauce Labs
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Timothy Fitz
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth PresentationEric Ries
 
Containerize your Blackbox tests
Containerize your Blackbox testsContainerize your Blackbox tests
Containerize your Blackbox tests
Kevin Beeman
 
Don't Fumble the Data! Integrate Database Automation into your DevOps Toolchain
Don't Fumble the Data! Integrate Database Automation into your DevOps ToolchainDon't Fumble the Data! Integrate Database Automation into your DevOps Toolchain
Don't Fumble the Data! Integrate Database Automation into your DevOps Toolchain
DevOps.com
 
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and TacticalTLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
Anna Royzman
 
Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018
David Tan
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous Delivery
Robert Mircea
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
Inductive Automation
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications Faster
Adam Culp
 
The Journey of Test Automation
The Journey of Test AutomationThe Journey of Test Automation
The Journey of Test Automation
opkey
 
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Simon Storm
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
Winston Laoh
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedLB Denker
 
The Continuous delivery value - Funaro
The Continuous delivery value - FunaroThe Continuous delivery value - Funaro
The Continuous delivery value - Funaro
Codemotion
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
Richard Cheng
 

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

Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
 
CD
CDCD
CD
 
Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Containerize your Blackbox tests
Containerize your Blackbox testsContainerize your Blackbox tests
Containerize your Blackbox tests
 
Don't Fumble the Data! Integrate Database Automation into your DevOps Toolchain
Don't Fumble the Data! Integrate Database Automation into your DevOps ToolchainDon't Fumble the Data! Integrate Database Automation into your DevOps Toolchain
Don't Fumble the Data! Integrate Database Automation into your DevOps Toolchain
 
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and TacticalTLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
TLC2018 Thomas Haver: The Automation Firehose - Be Strategic and Tactical
 
Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous Delivery
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications Faster
 
The Journey of Test Automation
The Journey of Test AutomationThe Journey of Test Automation
The Journey of Test Automation
 
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 
The Continuous delivery value - Funaro
The Continuous delivery value - FunaroThe Continuous delivery value - Funaro
The Continuous delivery value - Funaro
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 

Recently uploaded

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 

Recently uploaded (20)

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 

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

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n