Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Continuous Delivery at Netflix: Uberconf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Rob Spieldenner
June 27, 2014
Programming
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Continuous Delivery at Netflix: Uberconf
Uberconf presentation of Continuous Delivery at Netflix: Speed at Scale
Rob Spieldenner
June 27, 2014
More Decks by Rob Spieldenner
See All by Rob Spieldenner
Migrating Nebula Plugins to the New Model and TestKit
rspieldenner
1
160
Nebula: Netflix's OSS Gradle Plugins (Bay Area Gradle Users Meetup)
rspieldenner
0
130
Nebula: Netflix's OSS Gradle Plugins
rspieldenner
0
830
Continuous Delivery at Netflix
rspieldenner
3
280
Other Decks in Programming
See All in Programming
Workers Cache を知る
syumai
0
350
SREの越境 / SRE Collaboration
y0hgi
2
300
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
160
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
530
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
140
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5k
気持ちぃ〜角丸 Squircle
ryu1013
0
180
AIに “答え“を書かせるのを やめてみた
___akari11
0
110
R8 の設定見直しでアプリサイズ削減
andpad
0
190
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
ジョジョの世界をXRで再現する
mofurune
0
150
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
150
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
We Have a Design System, Now What?
morganepeng
55
8.4k
Building an army of robots
kneath
307
47k
Become a Pro
speakerdeck
PRO
31
6.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Site-Speed That Sticks
csswizardry
13
1.6k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
400
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
940
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
740
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
For a Future-Friendly Web
brad_frost
184
10k
Transcript
Continuous Delivery at Netflix Speed at Scale
Rob Spieldenner Senior Software Engineer on Engineering Tools team at
Netflix @robspieldenner -> Twitter
Speed breaks software Scale breaks hardware Speed at
Scale breaks everything
Netflix Culture
Culture Deck http://jobs.netflix.com/
Freedom & Responsibility
Context, not Control
Highly Aligned, Loosely Coupled
Act in Netflix’s Best Interest
Self Service
Developers on call for their services
Netflix OSS http://netflix.github.io/
OODA Loop - Observe, Orient, Decide, Act
Commit Unit Test Build Bake Deploy To Test Integration &
Acceptance Tests Red/Black Push Continuous Delivery Pipeline
Commit and Code Review
Pull Requests
Build simplify build file with plugins add metadata calculate version
output jar/war, sources, javadoc, rpm/deb lock dynamic dependencies
Ant build.xml <project name="example"> <property environment="env"/> <import file="${env.CBF_HOME}/library.xml"/> </project> ivy.xml
list dependencies list publications
Gradle build.gradle apply plugin: ‘nebula’ apply plugin: ‘java’ dependencies
{ testCompile ‘junit:junit:4.+’ }
Nebula Plugins http://nebula-plugins.github.io/
apply plugin: ‘nebula.nebula-project’ Builds Javadoc, Sources and a Test jar
Record information about the build and stores it in the .jar, via gradle-info-plugin Easy specification of people involved in a project via gradle-contacts-plugin
What Goes in the Manifest Module-Source=/mpex-common Module-Origin=ssh://
[email protected]
flix.com:7999/nexmpl/multiprojectexample.git Change=767e5d7 Manifest-Version=1.0 Implementation-Title=netflix#mpex-common;3.0.0
Implementation-Version=3.0.0 Built-Status=snapshot Built-By=rspieldenner Build-Date=2014-06-12_11:24:00 Gradle-Version=1.12-20140604072223+0000 Build-Host=localhost Build-Job=LOCAL Build-Number=LOCAL Build-Id=LOCAL Created-By=1.7.0_51-b13 (Oracle Corporation) Build-Java-Version=1.7.0_51 Nebula-Version=1.48 Implementation-Vendor=Netflix, Inc. X-Compile-Target-JDK=1.7 X-Compile-Source-JDK=1.7 Module-Owner=person@netflix.com Module-Email=team@netflix.com
apply plugin: ‘nebula.gradle- dependency-lock’ dependencies { compile ‘com.google.guava:guava:14.+’ testCompile ‘junit:junit:4.+’
}
dependencies.lock { "com.google.guava:guava": { "locked": "14.0.1", "requested": "14.+" },
”junit:junit": { "locked": "4.11", "requested": "4.+" } }
Jenkins
Job-DSL https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL +Plugin
Job DSL Example example def project = 'quidryan/aws-sdk-test' def branchApi
= new URL(“https://api.github.com/repos/${project}/branches”) def branches = new groovy.json.JsonSlurper().parse(branchApi.newReader()) branches.each { def branchName = it.name job { name “${project}-${branchName}”.replaceAll(‘/’, ‘-’) scm { git(“git://github.com/${project}.git”, branchName) } steps { gradle(‘test’) } } }
Bake
aminator https://github.com/Netflix/aminator
chef for base image
Apply deb/rpm, snapshot
Unit of deployment
Deploy
Asgard https://github.com/Netflix/asgard
None
UI or REST API
Canary Deploys
Red / Black Push
Testing Webdriver Geb Betamax and manual
Monitoring How many people are watching? Can the new version
handle load? Errors and logging suro, jmx
Alert on issues
Maybe automatic rollback
Resiliency / Anti-Fragility
Simian Army https://github.com/Netflix/SimianArmy Chaos Monkey Chaos Gorilla Chaos Kong Latency
Monkey Janitor Monkey Conformity Monkey
Chaos Monkey randomly kill running instances
Chaos Gorilla take down an availability zone
Chaos Kong take down a region
Latency Monkey inject delays, timeout, latency
Janitor Monkey clean up unused instances
Conformity Monkey make sure instances follow rules
Assume services will break, disappear, have latency
Continuous Delivery Pipeline Commit Unit Test Build Bake Deploy To
Test Integration & Acceptance Tests Red/Black Push
Future Work Mesos based workflow engine Docker containers Build Insight/Metrics
Books
Adrian Cockcroft Flowcon Keynote - Velocity and Volume (or Speed
Wins) - http://www.youtube.com/ watch?v=wyWI3gLpB8o Roy Rapoport - Cloud Operations at Netflix - http:// www.youtube.com/watch?v=7779Wrun5fo AWS re:Invent - http://reinvent.awsevents.com/ recap2013.html Other Presentations
Netflix is Hiring http://jobs.netflix.com/