scaling patterns for november 2019 netflix’s edge › system › files › presentation-slides ›...
TRANSCRIPT
Justin Ryan, Senior Software Engineer @ NetflixTwitter: quidryan, LinkedIn: www.linkedin.com/in/justin-charles-ryan
Scaling Patterns for Netflix’s EdgeNovember 2019
Scaling Patterns for Netflix’s EdgeJustin Ryan
Laundry
Scaling Patterns for Netflix’s EdgeJustin Ryan
Laundry
Scaling Patterns for Netflix’s EdgeJustin Ryan
Laundry
Scaling Patterns for Netflix’s EdgeJustin Ryan
Laundry
Scaling Patterns for Netflix’s EdgeJustin Ryan
Space-Time Compromise
Scaling Patterns for Netflix’s EdgeJustin Ryan
Laundry
Scaling Patterns for Netflix’s EdgeJustin Ryan
ScalingQ
3 20
11
Q3
2019
Scaling Patterns for Netflix’s EdgeJustin Ryan
Scaling
Edge
Scaling Patterns for Netflix’s EdgeJustin Ryan
Scaling Problems
— Debuggability
— Infrastructure
— Managing
Scaling Patterns for Netflix’s EdgeJustin Ryan
Scalability
Scaling Patterns for Netflix’s EdgeJustin Ryan
Trade Offs
Scaling Patterns for Netflix’s EdgeJustin Ryan
Policies
Scaling Patterns for Netflix’s EdgeJustin Ryan
Accessible
Scaling Patterns for Netflix’s EdgeJustin Ryan
Five Use Cases
— Melnitz— Mantis— Passport— Device Types— Sharding
Scaling Patterns for Netflix’s EdgeJustin Ryan
Logged In
Scaling Patterns for Netflix’s EdgeJustin Ryan
Cookies
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz
Trust Cookie Cookie Expiration
Scaling Patterns for Netflix’s EdgeJustin Ryan
Cookies L7 Proxy Account
Service
API
ExpiredYes
No
Scaling Patterns for Netflix’s EdgeJustin Ryan
Boom
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz
Copyright Columbia Pictures
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz
Set<CustomerId> Cookie Expiration
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz Bloom Filter: Compact Set which
can answer the question is an object
“Possibly in Set”?
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz L7 Proxy Account
Service
API
Bloom Filter
ExpiredYes
NoMaybe
No
Scaling Patterns for Netflix’s EdgeJustin Ryan
MelnitzAccount Service Auth
Event
Melnitz A
DB
Melnitz B
1m
L7 Proxy
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz
Scaling Patterns for Netflix’s EdgeJustin Ryan
Melnitz Trade Offs
— Probabilistic Data Structure
— Off the Shelf Components
Scaling Patterns for Netflix’s EdgeJustin Ryan
Five Use Cases
— Melnitz - Distributed Bloom Filter— Mantis— Passport— Device Types— Sharding
Scaling Patterns for Netflix’s EdgeJustin Ryan
Mantis
Scaling Patterns for Netflix’s EdgeJustin Ryan
Mantis 2 million request per second *
3 kilobytes per request *
10 micro-services =
57 GB/s =~ 4.6 PB / day
Scaling Patterns for Netflix’s EdgeJustin Ryan
Naive Approach
Service Elastic SearchKibana
Scaling Patterns for Netflix’s EdgeJustin Ryan
Mantis
Scaling Patterns for Netflix’s EdgeJustin Ryan
Mantis Master
Mantis
Service
MantisAgent
Mantis Source Job
Elastic Search
Kibana
Kafka
Scaling Patterns for Netflix’s EdgeJustin Ryan
Mantis Master
Service
Mantis
Mantis Source Job
Elastic Search
Browser
MantisAgent
Kafka
Scaling Patterns for Netflix’s EdgeJustin Ryan
Avoid Work
Scaling Patterns for Netflix’s EdgeJustin Ryan
Mantis Trade Offs
— Mantis Query Language
— Scale Solution to Zero
Scaling Patterns for Netflix’s EdgeJustin Ryan
Five Use Cases
— Melnitz - Distributed Bloom Filter— Mantis - Event Querying— Passport— Device Types— Sharding
Scaling Patterns for Netflix’s EdgeJustin Ryan
Passport
Scaling Patterns for Netflix’s EdgeJustin Ryan
Service Plan
API
L7 P
roxy
Mid Tier A
Mid Tier B
Mid Tier C
Passport
Scaling Patterns for Netflix’s EdgeJustin Ryan
Passport
Service Plan
API
L7 P
roxy
Mid Tier A
Mid Tier B
Mid Tier C
Scaling Patterns for Netflix’s EdgeJustin Ryan
Cache
Service Plan
API
L7 P
roxy
Mid Tier A
Mid Tier B
Mid Tier C
Scaling Patterns for Netflix’s EdgeJustin Ryan
Cache
API
L7 P
roxy
Mid Tier A
Mid Tier B
Mid Tier C
Service Plan
Scaling Patterns for Netflix’s EdgeJustin Ryan
Cache
API
L7 P
roxy
Mid Tier A
Mid Tier B
Mid Tier C
Service Plan
Scaling Patterns for Netflix’s EdgeJustin Ryan
Passport
Scaling Patterns for Netflix’s EdgeJustin Ryan
Passport Trade Offs
— Data Passing
— Heavy Data Structures
Scaling Patterns for Netflix’s EdgeJustin Ryan
Five Use Cases
— Melnitz - Distributed Bloom Filter— Mantis - Event Querying— Passport - Heavy Data Structure— Device Types— Sharding
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device TypesNFAPPL-01-IPAD7=5-09BEC57F64CA5F837C75F924B94D
NFAPPL-01-IPAD3=4-15B2D9B33A994CC373017A9C6586
NFAPPL-02-IOS2=4-FT7WHG8H2UR2MCJ4YKR3P0DFH6
NFANDROID1-PRV-P-GOOGLPIXEL=2-7351-0F441DF98B8D99074
NFANDROID1-PRV-4339-0E50FC7582396F5C4496ED935F2F48ED
13951007
964
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Mid-Tier F
Mid-Tier E Mid-Tier D
Mid-Tier C
Mid-Tier BMid-Tier A
DTS
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Mid-Tier CMid-Tier BMid-Tier A
DTS PubSub
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Mid-Tier CMid-Tier BMid-Tier A
DTS PubSub
Device Types Device TypesDevice Types
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Types
Scaling Patterns for Netflix’s EdgeJustin Ryan
Device Type Trade Offs
— Business Tuned Fallbacks
— Leverage Existing Infrastructure
Scaling Patterns for Netflix’s EdgeJustin Ryan
Five Use Cases
— Melnitz - Distributed Bloom Filter— Mantis - Event Querying— Passport - Heavy Data Structure— Device Types - Device Grouping— Sharding
Scaling Patterns for Netflix’s EdgeJustin Ryan
Sharding
Scaling Patterns for Netflix’s EdgeJustin Ryan
MSL — Message Security Layer == MSL
— Secure Messaging Framework
Scaling Patterns for Netflix’s EdgeJustin Ryan
Sharding MSL
L7 P
roxy APIAPIAPIAPIAPIAPI
Scaling Patterns for Netflix’s EdgeJustin Ryan
Sharding MSL
L7 P
roxy
MSL
APIAPIAPI
Scaling Patterns for Netflix’s EdgeJustin Ryan
CPU Cost Per Request
- CPU to RPS ratio- Load Average
31% decrease
Scaling Patterns for Netflix’s EdgeJustin Ryan
Latency
30% decrease
20% p99 decrease
Scaling Patterns for Netflix’s EdgeJustin Ryan
Sharding MSL- % of Wall Clock in GC- GC Pause Time
Scaling Patterns for Netflix’s EdgeJustin Ryan
Sharding
3 = 1 + 1
Scaling Patterns for Netflix’s EdgeJustin Ryan
Sharding Trade Offs
— Operational Overhead
Scaling Patterns for Netflix’s EdgeJustin Ryan
Five Use Cases
— Melnitz - Distributed Bloom Filter— Mantis - Event Querying— Passport - Heavy Data Structure— Device Types - Device Grouping— Sharding - Runtime Refactoring
Scaling Patterns for Netflix’s EdgeJustin Ryan
Bonus Trade Offs
— Do the laundry
Scaling Patterns for Netflix’s EdgeJustin Ryan
References — github.com/Netflix◆ eureka◆ zuul◆ mantis◆ msl
— Spinnaker— Apache Pulsar— Google Guava (Bloom Filter)