Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

24
Living on the Edge Adrian Cole @adrianfcole #netflixoss @denominatorOSS http://www.linkedin.com/in/ adrianforrestcole

description

If you haven't heard of Netflix, welcome back from outer space! We were lucky to bring Adrian Cole to Dyn Geek Summer Camp to give a presentation on his day-to-day role as their Cloud Guy, how the streaming service really works, web server dependencies and tons more. Enjoy his slides and watch his presentation here: http://dyn.wistia.com/medias/a2ie7htu35

Transcript of Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Page 1: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Living on the Edge

Adrian Cole@adrianfcole #netflixoss @denominatorOSS

http://www.linkedin.com/in/adrianforrestcole

Page 2: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

How Netflix Streaming Works

Denominator

Cloud Prize

Page 3: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Netflix Member Web Site Home PagePersonalization Driven – What goes on to make this?

Page 4: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

How Netflix Streaming Works

Customer Device (PC, PS3, TV…)

Web Site or Discovery API

User Data

Personalization

Streaming API

DRM

QoS Logging

OpenConnect CDN Boxes

CDN Management and

Steering

Content Encoding

Consumer Electronics

AWS Cloud Services

CDN Edge Locations

Page 5: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Content Delivery ServiceOpen Source Hardware Design + FreeBSD, bird, nginx

Page 6: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

November 2012 Traffic

Page 7: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Real Web Server Dependencies Flow(Netflix Home page business transaction as seen by AppDynamics)

Start Here

memcached

Cassandra

Web service

S3 bucket

Three Personalization movie group choosers (for US, Canada and Latam)

Each icon is three to a few hundred instances across three AWS zones

Page 8: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Asgardhttp://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html

Page 9: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Portable DNS Control

Cassandra Replicas

Zone A

Cassandra Replicas

Zone B

Cassandra Replicas

Zone C

Regional Load Balancers

Cassandra Replicas

Zone A

Cassandra Replicas

Zone B

Cassandra Replicas

Zone C

Regional Load Balancers

UltraDNSAWS

Route53

A portable way to manage multiple DNS providers from Java

DenominatorDynECT

Page 10: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

PORTABLE CONTROL OF DNS CLOUDS

Page 11: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp
Page 12: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Feature Set

• Do stuff in batches• Cleanly handle advanced records • Play nice with persistence• Don’t do too much

• … Use cool things

Page 13: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

A Cloud Native Open Source Platform

Page 14: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Hello Denominator

Install get denominator from bintray or homebrew

Configure create config.ymlname: dynectprovider: dynectcredentials: customer: your_customer username: your_user password: your_password

Run denominator -n dynect –C config.yml zone list

Page 15: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Basic list

$ denominator -n dynect-test -C ~/.denominator/config.yml zone[Session#login] ---> POST https://api2.dynect.net/REST/Session HTTP/1.1[Session#login] <--- HTTP/1.1 200 OK (948ms)[DynECT#zones] ---> GET https://api2.dynect.net/REST/Zone HTTP/1.1[DynECT#zones] <--- HTTP/1.1 200 OK (514ms)denominator.io

Page 16: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Add Record

$ denominator -n dynect-test -C ~/.denominator/config.yml record -z denominator.io. replace -n www.denominator.io. -t A -d 192.0.2.1

;; in zone denominator.io. replacing rrset www.denominator.io. A values: [{address=192.0.2.1}][Session#login] ---> POST https://api2.dynect.net/REST/Session HTTP/1.1[Session#login] <--- HTTP/1.1 200 OK (914ms)[DynECT#recordsInZoneByNameAndType] ---> GET https://api2.dynect.net/REST/ARecord/denominator.io./www.denominator.io.?detail=Y HTTP/1.1[DynECT#recordsInZoneByNameAndType] <--- HTTP/1.1 200 OK (504ms)[DynECT#scheduleDeleteRecord] ---> DELETE https://api2.dynect.net/REST/ARecord/denominator.io./www.denominator.io/75626502 HTTP/1.1[DynECT#scheduleDeleteRecord] <--- HTTP/1.1 200 OK (157ms)[DynECT#scheduleCreateRecord] ---> POST https://api2.dynect.net/REST/ARecord/denominator.io./www.denominator.io. HTTP/1.1[DynECT#scheduleCreateRecord] <--- HTTP/1.1 200 OK (157ms)[DynECT#publish] ---> PUT https://api2.dynect.net/REST/Zone/denominator.io. HTTP/1.1[DynECT#publish] <--- HTTP/1.1 200 OK (209ms)

;; ok

Page 17: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

From Java

mgr = Denominator.create(”dynect”, credentials(customer, username, password))

for (Zone zone : mgr.api().zones()) { processZone(zone);}

mgr.recordSetsInZone(“denominator.io.”) .put(a("www.denominator.io.", 300, "192.0.2.1"));

Page 18: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp
Page 19: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Availability by reshaping traffic

Page 20: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Netflix Cloud Prize

Boosting the @netflixOSSEcosystem

Page 21: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Best example application mash-up

Best new monkey

Best contribution to code quality

Best new feature

Best contribution to operational tools

Best portability enhancement

Best datastore integration

Best contribution to performance

Best usability enhancement

Judges choice award

Page 22: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Entrants

NetflixEngineering

Judges Winners

Nominations

Conforms to Rules

Working Code

Community Traction

Categories

Registration Opened

March 13Github

Apache Licensed

ContributionsGithub Close Entries

September 15GithubAward

Ceremony Dinner

November

AWS Re:Invent

Ten Prize Categories

$10K cash$5K AWS

AWS Re:Invent

TicketsTrophy

Page 23: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Functionality and scale now, portability coming

Moving from parts to a platform in 2013

Netflix is fostering an ecosystem

Rapid Evolution - Low MTBIAMSH(Mean Time Between Idea And Making Stuff Happen)

Page 24: Adrian Cole of Netflix: Living On The Edge from Geek Summer Camp

Takeaway

Denominator is a multi-cloud DNS abstraction built as a library and a cli.

Fixing DNS APIs, one vendor at a time

https://github.com/Netflix/denominatorhttps://groups.google.com/forum/#!forum/denominator-user

http://www.linkedin.com/in/adrianforrestcole@adrianfcole #netflixoss @denominatorOSS