Engineering Tools at Netflix 
Enabling Continuous Delivery 
Mike McGarr 
mmcgarr@netflix.com 
@SonOfGarr 
http://www.MikeMcGarr.com
about me 
• J. Michael (Mike) McGarr 
• 13 years as a software engineer 
• Manager of Build Tools, Netflix 
• Founder, DC Continuous Delivery Meetup 
• Former Director of EngOps, Blackboard Inc. 
10/10/14 @SonOfGarr 2
10/10/14 @SonOfGarr 3
freedom and responsibility 
10/10/14 @SonOfGarr 4
cloud native 
10/10/14 @SonOfGarr 5
microservices (SOA) 
10/10/14 @SonOfGarr 6
highly aligned, loosely coupled 
10/10/14 @SonOfGarr http://bit.ly/1uM62Wi 7
open source 
10/10/14 @SonOfGarr 8
continuous delivery 
“Continuous delivery is a set of 
practices and principles aimed at, 
building, testing and releasing 
software faster and more frequently.” 
10/10/14 @SonOfGarr 9
confidence 
10/10/14 @SonOfGarr http://bit.ly/1nV4szx 10
teams should 
focus on 
delivering 
business value 
10/10/14 @SonOfGarr http://bit.ly/1sb829y 11
Engineering Tools 
• Simplify build automation 
• Codify proven practices 
• Enable self-service 
• Automate deployments 
Not an Ops team! 
10/10/14 @SonOfGarr 12
Paved Road 
10/10/14 @SonOfGarr http://bit.ly/1oIqYGA 13
Paved Road 
10/10/14 @SonOfGarr 14
BUILD 
10/10/14 http://bit.ly/1vMALQ8 @SonOfGarr 15
Netflix Build Language (NeBuLa) 
• Gradle plugins 
• Netflix OSS 
http://github.com/nebula-plugins 
10/10/14 @SonOfGarr 16
build script 
10/10/14 @SonOfGarr 17
building OS packages? 
10/10/14 @SonOfGarr 18
locking dependencies? 
10/10/14 @SonOfGarr 19
generate lock file 
build.gradle 
dependencies.lock 
10/10/14 @SonOfGarr 20
Jenkins 
• Continuous integration 
• ‘nuff said 
10/10/14 @SonOfGarr 21
multiple masters 
Billing Merch 
OpsEng 
PPD ProdEng 
MCE 
Memb 
Platform 
10/10/14 @SonOfGarr 22
Jenkins Job DSL 
• Groovy DSL 
• Define job config in 
source 
https://github.com/jenkinsci/job-dsl-plugin 
10/10/14 @SonOfGarr 23
jobs.dsl.groovy 
10/10/14 @SonOfGarr 24
BAKE 
10/10/14 http://bit.ly/1CTzPNO @SonOfGarr 25
immutable servers 
• Avoid configuration drift 
• Change a line of code = build a new OS 
10/10/14 @SonOfGarr 26
Baking Process 
10/10/14 @SonOfGarr 27
Aminator 
• Python library 
• Build application AMI 
• NetflixOSS 
https://github.com/Netflix/aminator 
10/10/14 @SonOfGarr 28
Bakery 
• REST API’s for Aminator 
• Single API for all regions 
• Not OSS 
10/10/14 @SonOfGarr 29
DEPLOY 
10/10/14 @SonOfGarr http://1.usa.gov/1uBl4wF 30
AWS “applications” 
10/10/14 @SonOfGarr 31
Asgard 
• Netflix AWS console 
• Provides “app” 
abstraction 
• Hides AWS keys 
• NetflixOSS 
https://github.com/Netflix/asgard 
10/10/14 @SonOfGarr 32
deployments 
10/10/14 @SonOfGarr 33
deployments 
10/10/14 @SonOfGarr 34
red/black deployment 
10/10/14 @SonOfGarr 35
inventing clusters 
@SonOfGarr 36 
10/10/14
canary releases 
10/10/14 @SonOfGarr 37
Mimir 
• Deployment 
workflows 
• Integrates 
Jenkins/Bakery/Asg 
ard 
• Prototype, not OSS 
10/10/14 @SonOfGarr 38
we are evolving 
• Unifies Asgard & Mimir 
• Netflix needs have evolved 
• Highly available 
10/10/14 @SonOfGarr 39
Simian Army 
• Kill/inspect running instances 
• Chaos Monkey 
• Janitor Monkey 
• Security Monkey 
• Conformity Monkey 
• Chaos Gorilla* 
• Chaos Kong* 
https://github.com/Netflix/SimianArmy 
https://github.com/Netflix/security_monkey 
10/10/14 @SonOfGarr 40
what I didn’t cover 
• Ribbon 
• EvCache 
• Hystrix 
• Governator 
• Karyon 
• Edda 
• Archaius 
• Eureka 
• Zuul 
• Data/Big Data tools 
10/10/14 @SonOfGarr 41
Zero to the Cloud 
• Stand-up your own 
NetflixOSS cloud 
• Aminator 
• BaseAMI 
• Asgard 
• Edda 
• Eureka 
https://github.com/Netflix-Skunkworks/zerotocloud 
10/10/14 @SonOfGarr 42
Thank you! 
• Mike McGarr 
• mmcgarr@netflix.com 
• @jMichaelMcGarr 
• http://www.mikemcgarr.com 
We are Hiring! 
netflix.com/jobs 
10/10/14 @SonOfGarr 43

Engineering Tools at Netflix: Enabling Continuous Delivery

Editor's Notes

  • #4  ----- Meeting Notes (10/9/14 12:28) ----- voice track here
  • #39 Mortal wound – can only run one
  • #40 extensible