SlideShare a Scribd company logo
1 of 114
Scaling A/B testing
on Netflix.com with
welcome
Alex Liu
@stinkydofu @mjr578
Micah Ransdell
a/b testing
data-driven
product development
Test 1
A
B
Test 1
A
B
C
D
E
F
G
Test 1
A
B
C
D
E
F
G
Test 2
A
B
C
D
E
F
G
Test 3
A
B
C
D
E
F
G
Test 4
A
B
C
D
E
F
G
Test 5
A
B
C
D
E
F
G
Test 6
A
B
C
D
E
F
G
Test 7
A
B
C
D
E
F
G
Test 1
A
B
C
D
E
F
G
Test 2
A
B
C
D
E
F
G
Test 3
A
B
C
D
E
F
G
Test 4
A
B
C
D
E
F
G
Test 5
A
B
C
D
E
F
G
Test 6
A
B
C
D
E
F
G
Test 7
A
B
C
D
E
F
G
2,097,152
unique experiences across
seven tests
hundreds
of new A/B tests per year
984545041164535
824477853104281
030346308437926
36618855...
2,105 566 685
CSS JSTemplates
2.5 million
unique css/js packages
per push cycle
<html/>
<link/>
<script/>
problem:
conditional dependencies
➔ Iterate Quickly
➔ Complex Concepts, Minimal Code
➔ Give the Power to the People
Why Node?
➔Templating
Packaging
Bonus Round
Templating
Payment
Test
Testing the addition of
Direct Debit
Payment
Test
Testing the addition of
Direct Debit
Payment
Test
Testing the addition of
Direct Debit
Payment
Test
Testing the addition of
Direct Debit
Payment
Test
Testing the addition of
Direct Debit
payment template
Control Cell 2 Cell 3 Cell 4 Cell 5
if if ifif if
payment templatepayment template
Control Cell 2 Cell 3 Cell 4 Cell 5
if if ifif if
payment template
Control Cell 2 Cell 3 Cell 4 Cell 5
if if ifif if
payment_method_cc payment_method_dd
payment templatepayment template
Control Cell 2 Cell 3 Cell 4 Cell 5
if if ifif if
payment_method_cc payment_method_dd
payment template
Control Cell 2 Cell 3 Cell 4 Cell 5
payment_method_cc payment_method_dd
if if if if if
payment template
Control Cell 2 Cell 3 Cell 4 Cell 5
payment_method_cc payment_method_dd
if if if if if
payment
template
Control Cell 2 Cell 3 Cell 4 Cell 5
payment_method_cc payment_method_dd
?
payment
template
Control Cell 2 Cell 3 Cell 4 Cell 5
payment_method_cc payment_method_dd
payment_method.json
payment
template
Control Cell 2 Cell 3 Cell 4 Cell 5
payment_method_cc payment_method_dd
payment_method.json
require(‘nf-template-resolver’)
Resolver Rules
Template Resolver
Mappings
require(‘nf-template-loader’)
Resolver
Template
Inclusion
Template Loader
Template
Cache
➔ Developers can combine rules
➔ Improves template legibility
➔ Increases template reuse
Benefits
Templating
➔Packaging
Bonus Round
Packaging
everything
is a module
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
685
files...?
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
oldSearch newSearch
dep1 dep2 dep3 dep4 dep5 dep6
sub-dep sub-dep sub-dep sub-dep sub-dep sub-dep sub-depsub-dep
app.js
problem:
conditional dependencies
RequestBuild
require(‘nf-include-when’)
oldSearch.js
newSearch.js
anatomy of a rule
require(‘nf-asset-registry’)
app.js
app.js
oldSearch.js
newSearch.js
jquery
registry
what’s in the
registry?
nf-include-when
require(‘nf-packager’)
Step 1: Get the full
dependency tree for the
requested package from the
registry.
Step 2: Run the rules.
Step 3: Filter out all deps
that resolved false.
Step 3: Filter out all deps
that resolved false.
Step 3: Filter out all deps
that resolved false.
✓
✓
Step 4: Filter out all
extraneous sub-deps.
Step 5: Concatenate the
files.
registry
javascript / css
Build
Request registry
rulespackage
➔ Leverage build time tools
➔ Leverage the server when you can
➔ Divide and conquer with modules
Take aways
Templating
Packaging
➔Bonus Round
Bonus Round
be creative
with the registry
dependency
counting
dependency
pruning
file
sizes
CSS modules
@import
CSS
analysis
and now, the
coolest part...
templates
mappings
css
javascript
templates
mappings
css
javascript
templates
mappings
css
javascript
UI Bundle
UI BundleUI Bundle
UI Bundle
UI Bundle
UI BundleUI Bundle
UI BundleUI Bundle UI Bundle
anytime
deploy UI bundles
we never touch
the file system
< 5ms
average response time
➔ Static analysis FTW
➔ Independent UI deployments
➔ Requests never touch the file system
➔ Fast package response times
Wins
final thoughts
learn by doing
move faster
fail fast
I have not failed.
I’ve just found 10,000 ways
that won’t work.”
Thomas Edison
“
simplify
thank you
questions?
Alex Liu
@stinkydofu @mjr578
Micah Ransdell

More Related Content

What's hot

Ecom01 behavior summary_2nd-edition
Ecom01 behavior summary_2nd-editionEcom01 behavior summary_2nd-edition
Ecom01 behavior summary_2nd-edition
Kjartan Fridriksson
 

What's hot (20)

Basics of AB testing in online products
Basics of AB testing in online productsBasics of AB testing in online products
Basics of AB testing in online products
 
Recommendation system
Recommendation systemRecommendation system
Recommendation system
 
4 Steps Toward Scientific A/B Testing
4 Steps Toward Scientific A/B Testing4 Steps Toward Scientific A/B Testing
4 Steps Toward Scientific A/B Testing
 
The Power of A/B Testing
The Power of A/B TestingThe Power of A/B Testing
The Power of A/B Testing
 
Practical Introduction to A/B Testing
Practical Introduction to A/B TestingPractical Introduction to A/B Testing
Practical Introduction to A/B Testing
 
Experimentation Platform at Netflix
Experimentation Platform at NetflixExperimentation Platform at Netflix
Experimentation Platform at Netflix
 
Ab testing 101
Ab testing 101Ab testing 101
Ab testing 101
 
Lean Analytics: Using Data to Build a Better Business Faster
Lean Analytics: Using Data to Build a Better Business FasterLean Analytics: Using Data to Build a Better Business Faster
Lean Analytics: Using Data to Build a Better Business Faster
 
Ecom01 behavior summary_2nd-edition
Ecom01 behavior summary_2nd-editionEcom01 behavior summary_2nd-edition
Ecom01 behavior summary_2nd-edition
 
The Search for Product-Market Fit
The Search for Product-Market FitThe Search for Product-Market Fit
The Search for Product-Market Fit
 
A/B Testing with Yammer's Product Manager
A/B Testing with Yammer's Product ManagerA/B Testing with Yammer's Product Manager
A/B Testing with Yammer's Product Manager
 
128 High Converting Growth Hacks - the most epic growth hacking list
128 High Converting Growth Hacks - the most epic growth hacking list128 High Converting Growth Hacks - the most epic growth hacking list
128 High Converting Growth Hacks - the most epic growth hacking list
 
Business Models Template E145
Business Models Template E145Business Models Template E145
Business Models Template E145
 
5. Grands principes de conception
5. Grands principes de conception5. Grands principes de conception
5. Grands principes de conception
 
Optimize Your Funnel By Getting Inside Your Buyer's Head
Optimize Your Funnel By Getting Inside Your Buyer's HeadOptimize Your Funnel By Getting Inside Your Buyer's Head
Optimize Your Funnel By Getting Inside Your Buyer's Head
 
Migration services (DB2 to Teradata)
Migration services (DB2  to Teradata)Migration services (DB2  to Teradata)
Migration services (DB2 to Teradata)
 
SXSW 2016 - Everything you think about A/B testing is wrong
SXSW 2016 - Everything you think about A/B testing is wrongSXSW 2016 - Everything you think about A/B testing is wrong
SXSW 2016 - Everything you think about A/B testing is wrong
 
How Startups Can Build a Recruiting Machine
How Startups Can Build a Recruiting MachineHow Startups Can Build a Recruiting Machine
How Startups Can Build a Recruiting Machine
 
Ultimate Guide to Funnel Optimization
Ultimate Guide to Funnel OptimizationUltimate Guide to Funnel Optimization
Ultimate Guide to Funnel Optimization
 
ChatGPT Prompt Engineering
ChatGPT Prompt EngineeringChatGPT Prompt Engineering
ChatGPT Prompt Engineering
 

Viewers also liked

Viewers also liked (6)

[JSDC 2016] Codex: Conditional Modules Strike Back
[JSDC 2016] Codex: Conditional Modules Strike Back[JSDC 2016] Codex: Conditional Modules Strike Back
[JSDC 2016] Codex: Conditional Modules Strike Back
 
Node Interactive Debugging Node.js In Production
Node Interactive Debugging Node.js In ProductionNode Interactive Debugging Node.js In Production
Node Interactive Debugging Node.js In Production
 
Observable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSObservable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJS
 
To Err Is Human
To Err Is HumanTo Err Is Human
To Err Is Human
 
Slaying Monoliths with Node and Docker
Slaying Monoliths with Node and DockerSlaying Monoliths with Node and Docker
Slaying Monoliths with Node and Docker
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prod
 

Similar to Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js

Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Masayuki Matsushita
 

Similar to Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js (20)

ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix OriginalReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
ReactWeek 2019 Conditional Modules & Dynamic Bundling: A Netflix Original
 
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
[NodeConf.eu 2014] Scaling AB Testing on Netflix.com with Node.js
 
Evoloution of Ideas
Evoloution of IdeasEvoloution of Ideas
Evoloution of Ideas
 
Ultimate Git Workflow - Seoul 2015
Ultimate Git Workflow - Seoul 2015Ultimate Git Workflow - Seoul 2015
Ultimate Git Workflow - Seoul 2015
 
Access pattern of tags
Access pattern of tagsAccess pattern of tags
Access pattern of tags
 
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォームPivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
Pivotal Greenplum 次世代マルチクラウド・データ分析プラットフォーム
 
はじめての JFrog Artifactory
はじめての JFrog Artifactoryはじめての JFrog Artifactory
はじめての JFrog Artifactory
 
Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)
 
Skaffold - faster development on K8S
Skaffold - faster development on K8SSkaffold - faster development on K8S
Skaffold - faster development on K8S
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
 
Be a better developer with Docker (revision 3)
Be a better developer with Docker (revision 3)Be a better developer with Docker (revision 3)
Be a better developer with Docker (revision 3)
 
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Optimizing Your CI Pipelines
Optimizing Your CI PipelinesOptimizing Your CI Pipelines
Optimizing Your CI Pipelines
 
GPU-Accelerating UDFs in PySpark with Numba and PyGDF
GPU-Accelerating UDFs in PySpark with Numba and PyGDFGPU-Accelerating UDFs in PySpark with Numba and PyGDF
GPU-Accelerating UDFs in PySpark with Numba and PyGDF
 
Keep your side-effects 
in the right place with 
redux observable
Keep your side-effects 
in the right place with 
redux observableKeep your side-effects 
in the right place with 
redux observable
Keep your side-effects 
in the right place with 
redux observable
 
Kubernetes Failure Stories - KubeCon Europe Barcelona
Kubernetes Failure Stories - KubeCon Europe BarcelonaKubernetes Failure Stories - KubeCon Europe Barcelona
Kubernetes Failure Stories - KubeCon Europe Barcelona
 
Qcon beijing 2010
Qcon beijing 2010Qcon beijing 2010
Qcon beijing 2010
 
Becoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola PaolucciBecoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola Paolucci
 

Recently uploaded

result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Christo Ananth
 

Recently uploaded (20)

(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsRussian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 

Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js