Scaling Patterns for November 2019 Netflix’s Edge › system › files › presentation-slides ›...

Preview:

Citation preview

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

Justin Ryanjryan@netflix.com

Twitter: @quidryan

Thank You.

Recommended