building a distributed & automated open source program at netflix

42
Netflix Open Source Andrew Spyker (@aspyker) - Engineering Manager Building a distributed and automated open source program

Upload: all-things-open

Post on 23-Jan-2018

176 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Building a Distributed & Automated Open Source Program at Netflix

Netflix Open Source

Andrew Spyker (@aspyker) - Engineering Manager

Building a distributed andautomated open source program

Page 2: Building a Distributed & Automated Open Source Program at Netflix

About Netflix

● 86.7M members● A few thousand employees● 190+ countries● > ⅓ NA internet download traffic● 500+ Microservices● Many 10’s of thousands VM’s● 3 regions across the world

Page 3: Building a Distributed & Automated Open Source Program at Netflix
Page 4: Building a Distributed & Automated Open Source Program at Netflix

Trivia

Netflix been opensourcing, since?

a) Around the start of streaming service - 2007b) Around when we went international - 2010c) Around House of Cards release time - 2013

Page 5: Building a Distributed & Automated Open Source Program at Netflix

Answer

2010

Page 6: Building a Distributed & Automated Open Source Program at Netflix

Why does Netflix Open Source?

Improve Engineering● Great feedback from wider community● Collaborate through open code

Recruit new and retain engineering talent● Hard problems are openly worked on

Page 7: Building a Distributed & Automated Open Source Program at Netflix

Industry Alignment

Why does Netflix Open Source?

Netflix movesto cloud

2008

2013

2016

Page 8: Building a Distributed & Automated Open Source Program at Netflix

http://netflix.github.io

Page 9: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Contribute to Hadoop, Hive, Pig, Parquet, Presto, Spark● Genie - RESTful API’s for Big Data Jobs● Lipstick - Graphical depiction of executing Pig jobs● Aegisthus - Data pipeline from Cassandra to Big Data

Page 10: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Nebula - Plugins for gradle to simplify builds● Animator - Bakes AMI’s from OS installation packages● Spinnaker - New continuous delivery platform

Page 11: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Eureka, Ribbon, Hystrix - Cloud native, resilient IPC● Karyon, Prana, Archius - Microservice App Frameworks● Fenzo - Mesos advanced scheduling library

Page 12: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Photon - Java Interoperable File Format implementation● VMAF - Perceptual quality metric algorithm and test toolkit

Page 13: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Raigad/Priam - Management/ops sidecars for ES and C*● EVCache - Distributed, replicated memcache++● Dynomite - Dynamo layer on top of non-dynamo data stores

Page 14: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Spectator/Atlas - Monitoring and Telemetry client and server● Vector - Fine grained per instance performance monitoring● Vizceral - Worldwide traffic to microservice graph

visualization● Simian Army - Suite of automations and resiliency testing

Page 15: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Security Monkey - Automated cloud security monitoring● Scumblr/Sketchy - Internet intelligence gathering● FIDO - Security event orchestration (analysis/response)● Lemur - Simplified x.509 cert management● Sleepy Puppy - Delayed cross site scripting framework

Page 16: Building a Distributed & Automated Open Source Program at Netflix

Open Source Functional Areas

● Work across front end technologies including Restify● Falcor - Virtual JSON graph & optimized query to backends● RxJS - Simplify Javascript async event based programming

Page 17: Building a Distributed & Automated Open Source Program at Netflix

Netflix’s approach to open source

Form a small cross-functional team working group that centralizes OSS competence, assisting decentralized teams working with OSS spend less time focusing on the administrative aspects (legal, tooling, branding, monitoring, and community promotion).

Page 18: Building a Distributed & Automated Open Source Program at Netflix

Open source enabler - OSS Interest Group

● Internal mailing list● Meets once per month● Topics from developers● Help each other with

common problems

Page 19: Building a Distributed & Automated Open Source Program at Netflix

Trivia

How many OSS projects does Netflix have?

a) 59b) 102c) 176

Page 20: Building a Distributed & Automated Open Source Program at Netflix

Answer

176

Netflix (119) Spinnaker (17) nebula-plugins (40)

Page 21: Building a Distributed & Automated Open Source Program at Netflix

Open Source Shepherds

● Management with business context

● Consistency across related projects

● Document how area fits together

● Focus on OSS health of each area

Page 22: Building a Distributed & Automated Open Source Program at Netflix

Common tools accelerate developers

● Security● Backup● Github user/group repo management● Project tracking● Build systems● CI systems

Page 23: Building a Distributed & Automated Open Source Program at Netflix

Security tools

● We scan code for○ Access keys, credentials, email

addresses, hostnames● Provide tools and automation to

○ Scan before initial release○ Scan repeatedly on github

Page 24: Building a Distributed & Automated Open Source Program at Netflix

Source code management

● Backup and archival○ Github down != Netflix down

● Internal mirrors we could build from

Page 25: Building a Distributed & Automated Open Source Program at Netflix

Project Ownership

All projects have● Development lead, Management lead● Shepherd from OSS function areaOnly projects with active leads stay active!

Page 26: Building a Distributed & Automated Open Source Program at Netflix

Github management

● Has to be easy○ Otherwise, teams will go it alone

● Has to be automated○ Self service - chat ops○ Following secure best practices

Page 27: Building a Distributed & Automated Open Source Program at Netflix

Github user managementSupport bring github id● User links to internal id● All tools then can

associate identity

Two Factor Auth Enforcement● Automation to boot users who don’t● Be careful - education on recovery!

Page 28: Building a Distributed & Automated Open Source Program at Netflix

Github group management

● Owners○ Limited group - due to power○ Automate via chatops all owner actions

● Netflixer group○ Full write permissions on all repos

● Outside contributors○ Added by netflixers, validated over time

Page 29: Building a Distributed & Automated Open Source Program at Netflix

Github automated through chat ops

Page 30: Building a Distributed & Automated Open Source Program at Netflix

Overall Org Health Tracking

Metrics we track

● Issues○ open, closed, TTC

● Pull Requests○ open, closed, TTC

● Last commit timing● Stars/forks● Num contributors

Page 31: Building a Distributed & Automated Open Source Program at Netflix

Project Health Tracking

github.com/Netflix/

OSSTracker

Page 32: Building a Distributed & Automated Open Source Program at Netflix

● Repeatable builds● deb/rpm files for OS

package baking● Reduces boilerplate for

common best practices● Standards for

release/version mgmt

Common Build For Gradle/Java

nebula-plugins.github.io

Page 33: Building a Distributed & Automated Open Source Program at Netflix

Common CI Systems

● Travis CI○ Populate .travis.yml and sh files○ Standard targets for snapshots,

candidates, and releases○ Binary upload credentials handled○ Consistency across projects

● Cloudbees○ Job-dsl to create release jobs

Page 34: Building a Distributed & Automated Open Source Program at Netflix

Using Docker to make projects easier

● A running image is worth a thousand wiki documents

● Started with ZeroToDocker○ Monolithic solution○ Leveraged Dockerhub

trusted builds

Page 35: Building a Distributed & Automated Open Source Program at Netflix

Introducing TravisCI Docker buildsFunction Dockerhub

trusted buildsTravisCI Docker support

Github commit traceable builds ✔ ✔

Trusted build servers ✔ ✔

Full build control (labels, etc.) ✖ ✔

Easy to integrate with artifact releases ✖ ✔

● Experimenting: OSSTracker & Genie● Docker compose used across images

Page 36: Building a Distributed & Automated Open Source Program at Netflix

TODO Group

● Joined 2015● Collaborate on how

to better collaborate● Leverage TODO group’s work

○ Github focus○ Automation innovations

● Good group for helping OSS companies

Page 37: Building a Distributed & Automated Open Source Program at Netflix

Trivia

Which of the followingdoes Hystrix lead in?

a) Most PR’s closed d) Most Forksb) Most Issues closed e) Most contributorsc) Most Stars

Page 38: Building a Distributed & Automated Open Source Program at Netflix

Answer

All of the above

Page 39: Building a Distributed & Automated Open Source Program at Netflix

Recent NetflixOSS Releases

CI atNetflix scale

Multi-region deployment control

Advanced CI/CD pipelines

Page 40: Building a Distributed & Automated Open Source Program at Netflix

Recent NetflixOSS Releases

Chaos Monkey 2.0● Integrated with Spinnaker● Termination scheduling better● Termination event tracking

Photon● Java IMF implementation● Parsing, Interpretation, Validation

Page 41: Building a Distributed & Automated Open Source Program at Netflix

Recent NetflixOSS Releases

Vizceral● React and Web Component● Graph data to visualize traffic

Dynomite● Dynamo layer on top of data stores● Redis and memcache● Manager (config, multi-region, backup)

Page 42: Building a Distributed & Automated Open Source Program at Netflix

Questions?

Andrew Spyker (@aspyker) - Engineering Manager