Continuous Deployment
Christopher Parnin
Research of Software Development
Teaching
DevOps
Course fills up in seconds… its a competitive sport to sign up...
100’s of emails asking to be enrolled.
Example HW1: Automatically provision and configure a Jenkins server using Ansible.
Continuous Deployment Summit (I-V)
Guessing Game
How many commits are deployed daily, at Netflix?
How often is the software of Disney theme park rides updated?
Classic IT
2) 3-6 months later.
3) Receive Resource.
�IT: “Here is your server with php 5 installed”
You: “But I requested it with php 6!”
IT: … ¯\_(ツ)_/¯
DevOps
Two sides
Operation-centric:
Developer centric:
Class philosophy
Automate All The Things
You’re still not done, yet*
Skills
History of Continuous Deployment
Nightly Build
Build code and run smoke test (Microsoft 1995)
Benefits
Continuous Integration
A practice where developers automatically build, test, and analyze a software change in response to every software change committed to the source repository.
Continuous Delivery
A practice that ensures that a software change can be delivered and ready for use by a customer by testing in production-like environments.
Continuous Deployment
A practice where incremental software changes are automatically tested, vetted, and deployed to production environments.
Continuous * (Perpetual Development)
Example Deployment Pipeline
Exercise
Explain the difference between �a) continuous integration
b) continuous delivery
c) continuous deployment
To a partner next to you.
Lessons in Continuous Deployment
Technicians manually updated thousands of servers in the park => Weekly deploy over red switch network
SAS: Month long upgrade, to ansible deployments and yum packages....
2) Fast to Deploy, Slow to Release
Chunk Rossi at Facebook: “Get your shit in, fix it in production”
Dark Launches at Instagram
Facebook process
Release is cut Sunday 6pm
Stabilize until Tuesday, canaries, release. Tuesday push is 12,000 diffs.
Cherry pick: Push 3 times a day (Wed-Fri) 300-700 cherry picks / day.
Rapid Release/Mozilla
If deployment requires on-prem deployment, say a web browser
There are three channels: Alpha, Beta, Release Candidate
Code flows every 2 weeks to next channel, unless fast tracked by release engineer.
Involve corporate customer specific testing in testing (Practice also used by IBM, Redhat)
Ring Deployment: Microsoft
For products like VSTS or Exchange, need slower deployment model.
Commits flow out to rings, deflight if issue.
Example applying model to LexisNexis*:
Ring 0 => LexisNexis Legal Department (2 people)�Ring 1 => UNC School of Law (Free broken software for students)
Ring 2 => Beta Practices
Ring 3 => Many
Ring 4 => All
“*”: Not currently implemented at LexisNexis
3) Every Feature is an Experiment
Experimentation
50 shades of blue: What color of ads links makes more money?
Continuous Experimentation at Bing:
Twitter:
Tool tracks experiments being run
Controlling feature flags
Netflix
60,000 configuration changes a day. 4000 commits a day.
Every commit creates an Amazon Machine Imagine (AMI).
AMI is automated deployed to a new RED/BLACK cluster.
Have automated canary analysis, if okay, switch to new version, if not, rollback commit.
4) Shame and other lessons in culture
You are the Support Person
No silos
Invest in Tooling
Blameless culture
Operations Responsibility
Exercise
What are some tradeoffs of having a DevOps vs NoOps team model?
What process model did you experience at internship/past company?
Principles
Read Summit I and Summit II-III papers