SlideShare a Scribd company logo
Living on the Edge
Adrian Cole
@adrianfcole #netflixoss @denominatorOSS
http://www.linkedin.com/in/adrianforrestcole
adrian

• engineer at Square
• founded apache jclouds
• focus on (small) libraries

* Worked exclusively on what’s in this deck while at Netflix!
How Netflix Streaming Works
Geo DNS at Netflix
Denominator
Netflix Member Web Site Home Page
Personalization Driven – What goes on to make this?
How Netflix Streaming Works
Consumer
Electronics

User Data
Web Site or
Discovery API

AWS Cloud
Services

Personalization
CDN Edge
Locations
DRM
Customer Device
(PC, PS3, TV…)

Streaming API
QoS Logging

OpenConnect
CDN Boxes

CDN
Management and
Steering
Content Encoding
Content Delivery Service
Open Source Hardware Design + FreeBSD, bird, nginx
November 2012 Traffic
Real Web Server Dependencies Flow
(Netflix Home page business transaction as seen by AppDynamics)
Each icon is
three to a few
hundred
instances
across three
AWS zones

Cassandra
memcached

Start Here

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

Web service
S3 bucket
Netflix entrypoints
are Geo DNS
Geo == Directional
DNS Things
• Nameserver
– Server that listens on port 53 for queries

• Resolver
– Client that makes queries

• API
– Creates and controls configuration and data on
the nameservers.
DNS Lingo
• Zone
– Name (ex. denominator.io.)
– Id (if ambiguous)

• Records
– Name (ex. www.denominator.io.)
– Type (ex. CNAME)
– TTL (ex. 300)
– RData (ex. myLB-1234567890.us-east1.elb.amazonaws.com)
Record Set
• Records visible to the resolver that have the
same name and type (also TTL).
• Ex. If www.denominator.io has 4 ip
addresses, they can be in the same recordset.
• Concept is helpful for DNSSEC
Geo (Directional) Record Set
Visible to clients in specific territories
Group or Qualifier: maybe “US-WEST”
Territories: subset directed to this rrset
EU-WEST-1

cbp.nccp.netflix.com
Zone A

Western
US or
Canada?

Zone C

Cassandra Replicas

Europe?

Zone B
Cassandra Replicas

Cassandra Replicas

Everybody
Else

US-EAST-1

US-WEST-2

Zone A

Zone B

Zone C

Zone A

Zone B

Zone C

Cassandra Replicas

Cassandra Replicas

Cassandra Replicas

Cassandra Replicas

Cassandra Replicas

Cassandra Replicas
Changing territories reshapes traffic
DNS for Region
Failover
aka: why this deck is labeled
advanced
Thanks!
UltraDNS jonbodner
Route53 colmmacc
(github ids)
Route53 Alias
Reference to an AWS resource such as a
load balancer (ELB).
Appears to the client as an ddress record
set.
if IPv4 or
for IPv6
Example setup for failover

• Point Geo record set to a normal, site-specific
.
• These
s point to a Route53 ELB lias.
cbp.nccp.netflix.com
US-WEST-2

US-EAST-1

cbp.nccp.us-west-2.dynprod.netflix.com

cbp.nccp.us-east-1.dynprod.netflix.com

cbp.nccp.us-west-2.dynprod.netflix.net

cbp.nccp.us-east-1.dynprod.netflix.net

nccp-cbp-frontend1065034783.us-west2.elb.amazonaws.com.

nccp-cbp-frontend512191143.us-east1.elb.amazonaws.com.
(at least) 2 failover options

• When Route53 API is available
• When Route53 API isn’t available, but your
normal DNS is
On Failover
When Route53 API is available…
Update the route53 alias to point to the healthy
region.
cbp.nccp.netflix.com
US-WEST-2

US-EAST-1

cbp.nccp.us-west-2.dynprod.netflix.com

cbp.nccp.us-east-1.dynprod.netflix.com

cbp.nccp.us-west-2.dynprod.netflix.net

cbp.nccp.us-east-1.dynprod.netflix.net

nccp-cbp-frontend1065034783.us-west2.elb.amazonaws.com.

nccp-cbp-frontend512191143.us-east1.elb.amazonaws.com.

US-EAST-1 alias indirectly points to the same ELB
On Failover
When Route53 API isn’t available, but your
normal DNS is…
Update normal CNAME for each for each host
and geo group pointing to a healthy ELB.
cbp.nccp.netflix.com
US-WEST-2

US-EAST-1

cbp.nccp.us-west-2.dynprod.netflix.com

cbp.nccp.us-east-1.dynprod.netflix.com

cbp.nccp.us-west-2.dynprod.netflix.net

cbp.nccp.us-east-1.dynprod.netflix.net

dualstack.nccp-cbp-frontend1065034783.us-west2.elb.amazonaws.com.

dualstack.nccp-cbpfrontend-512191143.useast-1.elb.amazonaws.com.

US-EAST-1 CNAME points to the US-WEST-1 CNAME
Implications
• You are pointing to a healthy region, not a
specific ELB
– No read-lookups needed
– Can increase ELBs in healthy region

• More setup needed
– Must create Geo + region * (normal CNAME +
A, AAAA Aliases in Route53)
PORTABLE CONTROL OF DNS CLOUDS
A Cloud Native Open Source Platform
Living on the edge
Feature Set
•
•
•
•

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

• … Use cool things like Dagger
Model
ResourceRecordSet is the central class
Record types (A, CNAME, etc) extend
Map<String, Object>
mxData.preference()
mxData.get("preference”)
Hello Denominator
get denominator from bintray or homebrew

create ~/.denominatorconfig
name: ultradns-prod
provider: ultradns
credentials:
username: your_user
password: your_password

denominator -n ultradns-prod zone list
Basic list
$ denominator -n ultradns-prod zone
[UltraDNS#accountId] ---> POST https://ultraapi.ultradns.com:8443/UltraDNS_WS/v01 HTTP/1.1
[UltraDNS#accountId] <--- HTTP/1.1 200 OK (2062ms)
[UltraDNS#zonesOfAccount] ---> POST https://ultraapi.ultradns.com:8443/UltraDNS_WS/v01 HTTP/1.1
[UltraDNS#zonesOfAccount] <--- HTTP/1.1 200 OK (2169ms)
Add Record
$ denominator -n ultradns-test record -z ultradnstest.denominator.io.
replace -n www.ultradnstest.denominator.io. -t A -d 192.0.2.1

[UltraDNS#recordsInZoneByNameAndType] ---> POST https://ultraapi.ultradns.com:8443/UltraDNS_WS/v01 HTTP/1.1
[UltraDNS#recordsInZoneByNameAndType] <--- HTTP/1.1 200 OK (1663ms)
[UltraDNS#createRRPoolInZoneForNameAndType] ---> POST https://ultraapi.ultradns.com:8443/UltraDNS_WS/v01 HTTP/1.1
[UltraDNS#createRRPoolInZoneForNameAndType] <--- HTTP/1.1 200 OK
(2108ms)
[UltraDNS#createRecordInRRPoolInZone] ---> POST https://ultraapi.ultradns.com:8443/UltraDNS_WS/v01 HTTP/1.1
[UltraDNS#createRecordInRRPoolInZone] <--- HTTP/1.1 200 OK (3263ms)
From Java
mgr = Denominator.create(”ultradns”,
(username, password))
for (Zone zone : mgr.api().
processZone(zone);
}
mgr.
.

()) {

(“denominator.io.”)
(a("www.denominator.io.", 300, "192.0.2.1"));
Thanks!
adrianco jdamick colmmacc
everett-toews digitalsanctum
quidryan cfieber davidmc24
(github ids)
Takeaway
Geo (Directional) DNS helps you manage the flow of traffic based on location.
Vendors engagement in OSS >> better place for availability
Denominator is a multi-cloud DNS abstraction built as a library and a cli.

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

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

Dagger
A fast dependency injector for
Android and Java.
Dagger
• Guice for libraries, particularly android
• Speed and Simplicity over features
• Extension averse, feature conservative
• Friendly forks
Declare
Dependencies
class DNSAPIManager {

}

@Inject ZoneApi zoneApi;
...

class Route53ZoneApi implements ZoneApi {

}

@Inject Route53 route53;
...
Satisfy Dependencies
@Module(injects = DNSApiManager.class …
class Route53Module {
@Provides
ZoneApi zoneApi(Route53ZoneApi zone) {
return zones;
}

@Provides
@Singleton
Route53 route53(Feign feign,
Route53Target target) {
return feign.newInstance(target);
}
...
Create the Graph
manager = Denominator.create(new Route53Module());

class Denominator {
public static DNSApiManager create(Object module) {
ObjectGraph objectGraph
= ObjectGraph.create(module);
return objectGraph.get(DNSApiManager.class);
}
...
}
javac with compiler
dependencies {
compile "com.squareup.dagger:dagger” // 52k!
provided "com.squareup.dagger:dagger-compiler”
...
}

Dagger’s compiler writes
binding classes instead of
reflection binding at runtime.
Takeaway
Dagger is a leaner version of Guice, great for android
and libraries.
http://square.github.io/dagger/
https://groups.google.com/forum/#!forum/dagger-discuss

More Related Content

PPTX
Aws route 53
Rafael Salerno de Oliveira
 
PPTX
Deep Dive in Docker Overlay Networks
Laurent Bernaille
 
PPTX
Deeper dive in Docker Overlay Networks
Laurent Bernaille
 
PPTX
Streamline Hadoop DevOps with Apache Ambari
Alejandro Fernandez
 
PDF
Devnexus slides - Amazon Web Services
Tom Elrod
 
PPTX
Tuning Apache Ambari Performance for Big Data at Scale with 3,000 Agents
Alejandro Fernandez
 
PPTX
A Comparative Performance Evaluation of Apache Flink
Dongwon Kim
 
PPTX
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
DataWorks Summit
 
Deep Dive in Docker Overlay Networks
Laurent Bernaille
 
Deeper dive in Docker Overlay Networks
Laurent Bernaille
 
Streamline Hadoop DevOps with Apache Ambari
Alejandro Fernandez
 
Devnexus slides - Amazon Web Services
Tom Elrod
 
Tuning Apache Ambari Performance for Big Data at Scale with 3,000 Agents
Alejandro Fernandez
 
A Comparative Performance Evaluation of Apache Flink
Dongwon Kim
 
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
DataWorks Summit
 

What's hot (19)

PPTX
Discovering OpenBSD on AWS
Laurent Bernaille
 
PPTX
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon
 
PDF
Distributed Stream Processing on Fluentd / #fluentd
SATOSHI TAGOMORI
 
PDF
Flash for Apache Spark Shuffle with Cosco
Databricks
 
PPTX
Deep dive in Docker Overlay Networks
Laurent Bernaille
 
PPTX
Hadoop Architecture_Cluster_Cap_Plan
Narayana B
 
PPT
Web Server Clustering - OSSCAMP
Abhishek Singh
 
PDF
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
Laurent Bernaille
 
PPTX
Overview of Spark for HPC
Glenn K. Lockwood
 
PPTX
Hadoop Query Performance Smackdown
DataWorks Summit
 
PDF
Transactional writes to cloud storage with Eric Liang
Databricks
 
PPTX
Hive, Presto, and Spark on TPC-DS benchmark
Dongwon Kim
 
PDF
Microservices blue-green-deployment-with-docker
Kidong Lee
 
PDF
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
Databricks
 
PDF
A study of our DNS full-resolvers
Bangladesh Network Operators Group
 
PPTX
Hadoop operations-2015-hadoop-summit-san-jose-v5
Chris Nauroth
 
PPTX
CPN302 your-linux-ami-optimization-and-performance
Coburn Watson
 
PDF
Heat optimization
Rico Lin
 
PDF
Postgres in Amazon RDS
Denish Patel
 
Discovering OpenBSD on AWS
Laurent Bernaille
 
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon
 
Distributed Stream Processing on Fluentd / #fluentd
SATOSHI TAGOMORI
 
Flash for Apache Spark Shuffle with Cosco
Databricks
 
Deep dive in Docker Overlay Networks
Laurent Bernaille
 
Hadoop Architecture_Cluster_Cap_Plan
Narayana B
 
Web Server Clustering - OSSCAMP
Abhishek Singh
 
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
Laurent Bernaille
 
Overview of Spark for HPC
Glenn K. Lockwood
 
Hadoop Query Performance Smackdown
DataWorks Summit
 
Transactional writes to cloud storage with Eric Liang
Databricks
 
Hive, Presto, and Spark on TPC-DS benchmark
Dongwon Kim
 
Microservices blue-green-deployment-with-docker
Kidong Lee
 
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
Databricks
 
A study of our DNS full-resolvers
Bangladesh Network Operators Group
 
Hadoop operations-2015-hadoop-summit-san-jose-v5
Chris Nauroth
 
CPN302 your-linux-ami-optimization-and-performance
Coburn Watson
 
Heat optimization
Rico Lin
 
Postgres in Amazon RDS
Denish Patel
 
Ad

Similar to Living on the edge (20)

PPTX
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Cloud Native Day Tel Aviv
 
PPTX
OpenStack Dragonflow shenzhen and Hangzhou meetups
Eran Gampel
 
PPTX
DNS for Developers - ConFoo Montreal
Maarten Balliauw
 
PDF
DNS Survival Guide
APNIC
 
PDF
DNS Survival Guide.
Qrator Labs
 
KEY
DNS-SD
netvis
 
PPTX
AWS User Group - Perth - April 2021 - DNS
James Bromberger
 
PPT
Ad fundamentals
Rajesh Pushparaj
 
PDF
Hybrid IT With Azure's Cloud Services
InCycleSoftware
 
PPT
Microsoft Active Directory Fundament.ppt
anishmohd123
 
PDF
The Good Parts / The Hard Parts
Noah Zoschke
 
PPTX
Dragonflow Austin Summit Talk
Eran Gampel
 
PDF
コンテンツ配信: CloudFront & 名前解決サービス: Route 53 詳細 -ほぼ週刊AWSマイスターシリーズ第3回-
SORACOM, INC
 
PDF
VPC by Default時代のアクセス制御
真吾 吉田
 
PPTX
C* Summit 2013: Netflix Open Source Tools and Benchmarks for Cassandra by Adr...
DataStax Academy
 
PDF
Understanding Azure Networking Services
InCycleSoftware
 
PPTX
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Docker, Inc.
 
PPTX
.NET Developer Days - So many Docker platforms, so little time...
Michele Leroux Bustamante
 
PDF
Kubernetes Multitenancy Karl Isenberg - KubeCon NA 2019
Karl Isenberg
 
PDF
To Serverless and Beyond
ScyllaDB
 
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Cloud Native Day Tel Aviv
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
Eran Gampel
 
DNS for Developers - ConFoo Montreal
Maarten Balliauw
 
DNS Survival Guide
APNIC
 
DNS Survival Guide.
Qrator Labs
 
DNS-SD
netvis
 
AWS User Group - Perth - April 2021 - DNS
James Bromberger
 
Ad fundamentals
Rajesh Pushparaj
 
Hybrid IT With Azure's Cloud Services
InCycleSoftware
 
Microsoft Active Directory Fundament.ppt
anishmohd123
 
The Good Parts / The Hard Parts
Noah Zoschke
 
Dragonflow Austin Summit Talk
Eran Gampel
 
コンテンツ配信: CloudFront & 名前解決サービス: Route 53 詳細 -ほぼ週刊AWSマイスターシリーズ第3回-
SORACOM, INC
 
VPC by Default時代のアクセス制御
真吾 吉田
 
C* Summit 2013: Netflix Open Source Tools and Benchmarks for Cassandra by Adr...
DataStax Academy
 
Understanding Azure Networking Services
InCycleSoftware
 
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Docker, Inc.
 
.NET Developer Days - So many Docker platforms, so little time...
Michele Leroux Bustamante
 
Kubernetes Multitenancy Karl Isenberg - KubeCon NA 2019
Karl Isenberg
 
To Serverless and Beyond
ScyllaDB
 
Ad

More from Adrian Cole (6)

PDF
HTTP/2 What's inside and Why
Adrian Cole
 
PDF
Efficient HTTP Apis
Adrian Cole
 
PPTX
Using and contributing to the next Guice
Adrian Cole
 
PPT
jclouds overview
Adrian Cole
 
PPT
When small problems become big problems
Adrian Cole
 
KEY
I got 99 problems, but ReST ain't one
Adrian Cole
 
HTTP/2 What's inside and Why
Adrian Cole
 
Efficient HTTP Apis
Adrian Cole
 
Using and contributing to the next Guice
Adrian Cole
 
jclouds overview
Adrian Cole
 
When small problems become big problems
Adrian Cole
 
I got 99 problems, but ReST ain't one
Adrian Cole
 

Recently uploaded (20)

PDF
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PPT
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PPTX
Stamford - Community User Group Leaders_ Agentblazer Status, AI Sustainabilit...
Amol Dixit
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PPT
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Doc9.....................................
SofiaCollazos
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Stamford - Community User Group Leaders_ Agentblazer Status, AI Sustainabilit...
Amol Dixit
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 

Living on the edge

Editor's Notes

  • #37: Adrian Cockroft championed the project in Netflix, also acting as a design mentor.Jeff Damick was the first pre-oss developer, also helping adjust UltraDNS.Colm helped design data structures and vetted concepts against Amazon Route53. Everett helped implement OpenStack and Rackspace DNS services.Shane helped shine up the commandline tool, particularly yaml config.Justin helped with single-jar syntax for gradleCameron wrote gradle scripts to setup Eclipse and Idea for Dagger processingDavid maintains Feign, the http interface layer used by denominator.