scaling patterns for november 2019 netflix’s edge › system › files › presentation-slides ›...

70
Justin Ryan, Senior Software Engineer @ Netflix Twitter: quidryan, LinkedIn: www.linkedin.com/in/justin-charles-ryan Scaling Patterns for Netflix’s Edge November 2019

Upload: others

Post on 10-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Justin Ryan, Senior Software Engineer @ NetflixTwitter: quidryan, LinkedIn: www.linkedin.com/in/justin-charles-ryan

Scaling Patterns for Netflix’s EdgeNovember 2019

Page 2: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Laundry

Page 3: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Laundry

Page 4: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Laundry

Page 5: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Laundry

Page 6: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Space-Time Compromise

Page 7: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Laundry

Page 8: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

ScalingQ

3 20

11

Q3

2019

Page 9: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Scaling

Edge

Page 10: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Scaling Problems

— Debuggability

— Infrastructure

— Managing

Page 11: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Scalability

Page 12: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Trade Offs

Page 13: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Policies

Page 14: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Accessible

Page 15: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Five Use Cases

— Melnitz— Mantis— Passport— Device Types— Sharding

Page 16: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Logged In

Page 17: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Cookies

Page 18: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz

Trust Cookie Cookie Expiration

Page 19: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Cookies L7 Proxy Account

Service

API

ExpiredYes

No

Page 20: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Boom

Page 21: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz

Copyright Columbia Pictures

Page 22: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz

Set<CustomerId> Cookie Expiration

Page 23: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz Bloom Filter: Compact Set which

can answer the question is an object

“Possibly in Set”?

Page 24: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz

Page 25: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz L7 Proxy Account

Service

API

Bloom Filter

ExpiredYes

NoMaybe

No

Page 26: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

MelnitzAccount Service Auth

Event

Melnitz A

DB

Melnitz B

1m

L7 Proxy

Page 27: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz

Page 28: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Melnitz Trade Offs

— Probabilistic Data Structure

— Off the Shelf Components

Page 29: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Five Use Cases

— Melnitz - Distributed Bloom Filter— Mantis— Passport— Device Types— Sharding

Page 30: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Mantis

Page 31: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

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

Page 32: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Naive Approach

Service Elastic SearchKibana

Page 33: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Mantis

Page 34: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Mantis Master

Mantis

Service

MantisAgent

Mantis Source Job

Elastic Search

Kibana

Kafka

Page 35: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Mantis Master

Service

Mantis

Mantis Source Job

Elastic Search

Browser

MantisAgent

Kafka

Page 36: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Avoid Work

Page 37: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Mantis Trade Offs

— Mantis Query Language

— Scale Solution to Zero

Page 38: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Five Use Cases

— Melnitz - Distributed Bloom Filter— Mantis - Event Querying— Passport— Device Types— Sharding

Page 39: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Passport

Page 40: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Service Plan

API

L7 P

roxy

Mid Tier A

Mid Tier B

Mid Tier C

Passport

Page 41: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Passport

Service Plan

API

L7 P

roxy

Mid Tier A

Mid Tier B

Mid Tier C

Page 42: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Cache

Service Plan

API

L7 P

roxy

Mid Tier A

Mid Tier B

Mid Tier C

Page 43: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Cache

API

L7 P

roxy

Mid Tier A

Mid Tier B

Mid Tier C

Service Plan

Page 44: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Cache

API

L7 P

roxy

Mid Tier A

Mid Tier B

Mid Tier C

Service Plan

Page 45: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Passport

Page 46: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Passport Trade Offs

— Data Passing

— Heavy Data Structures

Page 47: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Five Use Cases

— Melnitz - Distributed Bloom Filter— Mantis - Event Querying— Passport - Heavy Data Structure— Device Types— Sharding

Page 48: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Types

Page 49: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

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

Page 50: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Types

Page 51: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Types

Page 52: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

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

Page 53: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Types

Mid-Tier CMid-Tier BMid-Tier A

DTS PubSub

Page 54: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Types

Mid-Tier CMid-Tier BMid-Tier A

DTS PubSub

Device Types Device TypesDevice Types

Page 55: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Types

Page 56: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Device Type Trade Offs

— Business Tuned Fallbacks

— Leverage Existing Infrastructure

Page 57: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

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

Page 58: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Sharding

Page 59: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

MSL — Message Security Layer == MSL

— Secure Messaging Framework

Page 60: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Sharding MSL

L7 P

roxy APIAPIAPIAPIAPIAPI

Page 61: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Sharding MSL

L7 P

roxy

MSL

APIAPIAPI

Page 62: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

CPU Cost Per Request

- CPU to RPS ratio- Load Average

31% decrease

Page 63: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Latency

30% decrease

20% p99 decrease

Page 64: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Sharding MSL- % of Wall Clock in GC- GC Pause Time

Page 65: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Sharding

3 = 1 + 1

Page 66: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Sharding Trade Offs

— Operational Overhead

Page 67: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

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

Page 68: Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides › ... · 2020-05-21 · Scaling Patterns for Netflix’s Edge Justin Ryan Device

Scaling Patterns for Netflix’s EdgeJustin Ryan

Bonus Trade Offs

— Do the laundry