[jsdc 2016] codex: conditional modules strike back
TRANSCRIPT
![Page 1: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/1.jpg)
Alex Liu
A N E T F L I X E N G I N E E R I N G O R I G I N A L
codex
conditionaL ModuleS Strike bacK
![Page 2: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/2.jpg)
![Page 3: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/3.jpg)
![Page 4: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/4.jpg)
#netflixeverywhere
![Page 5: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/5.jpg)
![Page 6: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/6.jpg)
![Page 7: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/7.jpg)
![Page 8: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/8.jpg)
contentsI. The Problem
II. Codex: Conditional Bundling
III. Scaling for Netflix
IV. Looking to the Future
![Page 9: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/9.jpg)
i. the Problem
![Page 10: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/10.jpg)
It's all about building JS bundles.
![Page 11: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/11.jpg)
// bundle.js var a = require('a'); var b = require('b');
bundle.js
![Page 12: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/12.jpg)
// bundle.js var a = require('a'); var b = require('b');
bundle.js
![Page 13: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/13.jpg)
var bundles = [ 'bundle.js' ];
bundle.js
home.jsprofile.jsfeed.js album.js signup.js
![Page 14: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/14.jpg)
home.js profile.js feed.js
signup.js account.js setting.js
album.js photo.js login.js
var bundles = [ 'home.js', 'profile.js', 'feed.js', 'signup.js' 'account.js', 'settings.js', 'album.js', 'photo.js', 'login.js' ];
![Page 15: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/15.jpg)
var bundles = [ 'home.js', 'profile.js', 'feed.js', 'signup.js' 'account.js', 'settings.js', 'album.js', 'photo.js', 'login.js' ];
/home /profile /feed
![Page 16: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/16.jpg)
var bundles = [ 'home.js', 'profile.js', 'feed.js', 'signup.js' 'account.js', 'settings.js', 'album.js', 'photo.js', 'login.js' ];
/home /profile /feed
home.js profile.js feed.js
![Page 17: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/17.jpg)
![Page 18: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/18.jpg)
html5shiv es5-shim
![Page 19: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/19.jpg)
var bundles = [ 'home.js', 'homeIE.js', 'profile', 'profileIE', 'feed.js', 'feedIE.js' 'signup.js', 'signupIE.js', ... ];
![Page 20: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/20.jpg)
var bundles = [ 'home.js', 'homeIE.js', 'profile', 'profileIE', 'feed.js', 'feedIE.js' 'signup.js', 'signupIE.js', ... ];
![Page 21: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/21.jpg)
var bundles = [ 'home.js', 'homeIE.js', 'profile', 'profileIE', 'feed.js', 'feedIE.js' 'signup.js', 'signupIE.js', ... ];
/home
![Page 22: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/22.jpg)
var bundles = [ 'home.js', 'homeIE.js', 'profile', 'profileIE', 'feed.js', 'feedIE.js' 'signup.js', 'signupIE.js', ... ];
/home
![Page 23: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/23.jpg)
var bundles = [ 'home.js', 'homeIE.js', 'profile', 'profileIE', 'feed.js', 'feedIE.js' 'signup.js', 'signupIE.js', ... ];
/home
home.js
NO
![Page 24: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/24.jpg)
var bundles = [ 'home.js', 'homeIE.js', 'profile', 'profileIE', 'feed.js', 'feedIE.js' 'signup.js', 'signupIE.js', ... ];
/home
home.js homeIE.js
YESNO
![Page 25: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/25.jpg)
Netflix AB testing!
![Page 26: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/26.jpg)
AB Test w/ multiple cells
Cells Control (Cell 1) Cell 2 Cell 3
Movie Cover Art
![Page 27: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/27.jpg)
AB Test w/ multiple cells
Cells Control (Cell 1) Cell 2 Cell 3
Movie Cover Art
14% 6%
![Page 28: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/28.jpg)
Netflix AB testing!
![Page 29: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/29.jpg)
Netflix AB testing!
![Page 30: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/30.jpg)
home.js
![Page 31: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/31.jpg)
home.js
newSearch.jsoldSearch.js
![Page 32: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/32.jpg)
home.js
oldSearch.js
![Page 33: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/33.jpg)
home.js
oldSearch.js
![Page 34: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/34.jpg)
home.js
newSearch.js
![Page 35: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/35.jpg)
home.js
newSearch.jsoldSearch.js
![Page 36: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/36.jpg)
home.js
newSearch.jsoldSearch.js
jQuery React~80KB ~120KB
![Page 37: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/37.jpg)
larger bundle size: • file sizes • time to download • memory usage • time to interactive (TTI)
![Page 38: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/38.jpg)
old school Lego bricks were generic
![Page 39: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/39.jpg)
new Lego is about specialization
![Page 40: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/40.jpg)
hard to reuse specialized bricks
![Page 41: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/41.jpg)
home.js
newSearch.jsoldSearch.js
![Page 42: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/42.jpg)
home.js
newSearch.jsoldSearch.js
![Page 43: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/43.jpg)
home.js
newSearch.jsoldSearch.js
![Page 44: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/44.jpg)
// starting to look like a // lot of bundles... var bundles = [ 'homeNewSearch.js', 'homeNewSearchIE.js', 'homeOldSearch.js', 'homeOldSearchIE.js', ... ];
![Page 45: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/45.jpg)
// starting to look like a // lot of bundles... var bundles = [ 'homeNewSearch.js', 'homeNewSearchIE.js', 'homeOldSearch.js', 'homeOldSearchIE.js', ... ];
4x variations already!
![Page 46: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/46.jpg)
Netflix runs hundreds of AB tests
![Page 47: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/47.jpg)
Netflix runs hundreds of AB tests
but we personalize on many other dimensions too
![Page 48: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/48.jpg)
![Page 49: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/49.jpg)
![Page 50: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/50.jpg)
|S1| ⋅ |S2| ⋅ ⋅ ⋅ |Sn| = |S1 × S2 × ⋅ ⋅ ⋅ × Sn|
![Page 51: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/51.jpg)
|S1| ⋅ |S2| ⋅ ⋅ ⋅ |Sn| = |S1 × S2 × ⋅ ⋅ ⋅ × Sn|
3100 = 5.1537752e47
![Page 52: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/52.jpg)
![Page 53: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/53.jpg)
40,000,000,000 bricks to reach the
![Page 54: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/54.jpg)
40,000,000,000 bricks to reach the
7,600,000,000,000,000 bricks to reach
![Page 55: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/55.jpg)
40,000,000,000 bricks to reach the
7,600,000,000,000,000 bricks to reach
Enough bricks to reach 6.7812832e32 times.
![Page 56: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/56.jpg)
that’s a #$*%^ ton of bundles!
![Page 57: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/57.jpg)
https://xkcd.com/303/
![Page 58: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/58.jpg)
Website's full bundle is 10MB+
![Page 59: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/59.jpg)
how do we deal with conditional modules?
![Page 60: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/60.jpg)
ii. codex conditional Bundling
:
![Page 61: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/61.jpg)
what if we generate on-demand?
![Page 62: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/62.jpg)
what if we generate on-demand?
1. identify the UI variation 2. generate the bundle
![Page 63: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/63.jpg)
how do we identify the UI variation?
![Page 64: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/64.jpg)
AB Tests
![Page 65: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/65.jpg)
AB Tests
![Page 66: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/66.jpg)
AB Tests
![Page 67: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/67.jpg)
truthsnoun, plural [trooth z, trooths]
a bucket of boolean flags used to build a personalized Netflix experience
![Page 68: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/68.jpg)
{ "webfonts": false, "instantSearch": true, "socialFeatures": false, "motionBanner": true, "html5video": true, "customScrollbar": true }
![Page 69: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/69.jpg)
{ "webfonts": false, "instantSearch": true, "socialFeatures": false, "motionBanner": true, "html5video": true, "customScrollbar": true }
inputs and outputs are NOT 1:1
![Page 70: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/70.jpg)
![Page 71: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/71.jpg)
![Page 72: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/72.jpg)
how do we generate the bundle?
![Page 73: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/73.jpg)
home.js
newSearch.jsoldSearch.js
![Page 74: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/74.jpg)
// home.js if (truths.isNewSearch === true) { require('./newSearch'); } else { require('./oldSearch'); }
![Page 75: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/75.jpg)
home.js
newSearch.jsoldSearch.js
![Page 76: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/76.jpg)
home.js
newSearch.jsoldSearch.js
conditioncondition
![Page 77: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/77.jpg)
home.js
newSearch.jsoldSearch.js
conditioncondition
![Page 78: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/78.jpg)
conditioncondition
![Page 79: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/79.jpg)
isNewSearch!isNewSearch
![Page 80: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/80.jpg)
// home.js if (truths.isNewSearch === true) { require('./newSearch'); } else { require('./oldSearch'); }
![Page 81: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/81.jpg)
home.js
newSearch.jsoldSearch.js
isNewSearch!isNewSearch
![Page 82: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/82.jpg)
home.js
newSearch.js
newEntryPoint.js
oldSearch.js
!isNewSearch isNewSearch
![Page 83: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/83.jpg)
git
![Page 84: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/84.jpg)
git
![Page 85: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/85.jpg)
git
codex(node.js module)
![Page 86: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/86.jpg)
git
codexartifact
(node.js module)
![Page 87: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/87.jpg)
artifact
![Page 88: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/88.jpg)
artifact
![Page 89: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/89.jpg)
artifact
![Page 90: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/90.jpg)
{ "home.js": { "deps": [ "dep1.js", "dep2.js", "dep3.js", ], "conditionalDeps": { "newSearch.js": { "name": "isNewSearch", "value": true },
![Page 91: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/91.jpg)
"dep3.js", ], "conditionalDeps": { "newSearch.js": { "name": "isNewSearch", "value": true }, "oldSearch.js": { "name": "isNewSearch", "value": false } } } }
![Page 92: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/92.jpg)
"dep3.js", ], "conditionalDeps": { "newSearch.js": { "name": "isNewSearch", "value": true }, "oldSearch.js": { "name": "isNewSearch", "value": false } } } }
![Page 93: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/93.jpg)
it's a conditional map!
![Page 94: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/94.jpg)
web/v1 web/v2 web/v3 web/v4
![Page 95: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/95.jpg)
artifacttruths
![Page 96: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/96.jpg)
![Page 97: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/97.jpg)
![Page 98: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/98.jpg)
<html/>
http://codex.nflxext.com/web/v1/83af
![Page 99: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/99.jpg)
http://codex.nflxext.com/web/v1/83af
![Page 100: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/100.jpg)
<script/>
http://codex.nflxext.com/web/v1/83af
![Page 101: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/101.jpg)
<script/>
http://codex.nflxext.com/web/v1/83af
![Page 102: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/102.jpg)
<script/> <script/>
codex
? i got this!
http://codex.nflxext.com/web/v1/83af
![Page 103: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/103.jpg)
codex
http://codex.nflxext.com/web/v1/83af http://codex.nflxext.com/{team}/{version}/{truths}
![Page 104: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/104.jpg)
codexweb/v1
http://codex.nflxext.com/web/v1/83af http://codex.nflxext.com/{team}/{version}/{truths}
![Page 105: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/105.jpg)
codex { 83: newSearchTest, af: isChrome }
web/v1
http://codex.nflxext.com/web/v1/83af http://codex.nflxext.com/{team}/{version}/{truths}
![Page 106: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/106.jpg)
home.js
![Page 107: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/107.jpg)
oldSearch.js
home.js
![Page 108: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/108.jpg)
oldSearch.js
home.js
![Page 109: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/109.jpg)
oldSearch.js
home.js
![Page 110: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/110.jpg)
newSearch.jsoldSearch.js
home.js
![Page 111: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/111.jpg)
home.js
newSearch.jsoldSearch.js
response times <= 80ms
![Page 112: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/112.jpg)
codex
http://codex.nflxext.com/web/v1/83af
![Page 113: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/113.jpg)
<script/>
codex
here you go
http://codex.nflxext.com/web/v1/83af
![Page 114: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/114.jpg)
<script/> <script/>
codex
cached! here you go
http://codex.nflxext.com/web/v1/83af
![Page 115: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/115.jpg)
Recap• Build Time: build conditional graph (artifact)
• Run Time: apply truths to artifact
• Conditional bundling is transparent, universal, configuration free!
![Page 116: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/116.jpg)
iii. Scaling For Netflix
![Page 117: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/117.jpg)
web/v1 web/v2 tv/v5 tv/v7
![Page 118: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/118.jpg)
Storage Metadata
![Page 119: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/119.jpg)
Amazon S3Amazon DynamoDB
Storage Metadata
![Page 120: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/120.jpg)
Build Time: Codex Artifact Management
![Page 121: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/121.jpg)
web/v1
Build Time: Codex Artifact Management
![Page 122: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/122.jpg)
web/v1web/v1
Build Time: Codex Artifact Management
saved!
![Page 123: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/123.jpg)
SAVED!
web/v1web/v1
Build Time: Codex Artifact Management
saved!
![Page 124: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/124.jpg)
Build Time: Codex Artifact Management
![Page 125: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/125.jpg)
activate web/v1 web/v1
activated!
Build Time: Codex Artifact Management
![Page 126: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/126.jpg)
Run Time: Codex Bundler
![Page 127: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/127.jpg)
web/v1
here are the active build ids
Run Time: Codex Bundler
![Page 128: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/128.jpg)
here are the artifacts
web/v1
here are the active build ids
Run Time: Codex Bundler
![Page 129: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/129.jpg)
here are the artifacts
web/v1
here are the active build ids
Run Time: Codex Bundler
![Page 130: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/130.jpg)
prod prod-new canary
![Page 131: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/131.jpg)
16GB ought to be enough for us!__🙂
![Page 132: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/132.jpg)
codex
![Page 133: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/133.jpg)
codex
![Page 134: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/134.jpg)
codex
![Page 135: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/135.jpg)
400+ artifacts!
![Page 136: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/136.jpg)
400+ artifacts!
…and we ran out of memory
![Page 137: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/137.jpg)
32GB ought to be enough for us!__🤔
![Page 138: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/138.jpg)
800+ artifacts!
![Page 139: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/139.jpg)
800+ artifacts!
…and we ran out of memory
![Page 140: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/140.jpg)
64GB ought to be enough for us…?__😭
![Page 141: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/141.jpg)
1600+ artifacts!
![Page 142: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/142.jpg)
1600+ artifacts!
…and we ran out of memory. again.
![Page 143: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/143.jpg)
1600+ artifacts!Our teams will use as
much as we give them.
…and we ran out of memory. again.
![Page 144: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/144.jpg)
![Page 145: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/145.jpg)
Q: What's cheap, plentiful, and fast
enough?
![Page 146: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/146.jpg)
Q: What's cheap, plentiful, and fast
enough?A: Disk.
![Page 147: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/147.jpg)
codex
LevelDB
![Page 148: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/148.jpg)
codex
LevelDB
![Page 149: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/149.jpg)
100% CPU usage.
![Page 150: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/150.jpg)
what's the problem?
![Page 151: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/151.jpg)
~68%
![Page 152: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/152.jpg)
v8::internal::Runtime_ParseJson
![Page 153: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/153.jpg)
codex
LevelDB
![Page 154: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/154.jpg)
codex
LevelDB
JSON.parse
![Page 155: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/155.jpg)
JSON.parse is slow. And blocks the CPU!
![Page 156: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/156.jpg)
codex
LevelDB
JSON.parse
LRU Cache: Saving the CPU
![Page 157: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/157.jpg)
codex
LevelDB
JSON.parse
LRU Cache: Saving the CPU
![Page 158: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/158.jpg)
codex
LevelDB
JSON.parse
LRU Cache: Saving the CPU
![Page 159: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/159.jpg)
codex
LevelDB
JSON.parse
LRU Cache: Saving the CPU
![Page 160: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/160.jpg)
codex
LevelDB
JSON.parse
LRU Cache: Saving the CPU
![Page 161: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/161.jpg)
![Page 162: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/162.jpg)
![Page 163: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/163.jpg)
![Page 164: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/164.jpg)
Breaking change to conditional graph
traversal algorithm!
![Page 165: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/165.jpg)
http://codex.nflxext.com/web/v1/83af
![Page 166: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/166.jpg)
http://codex.nflxext.com/web/v1/83af
old algorithm?
new algorithm?
![Page 167: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/167.jpg)
old algorithm?
new algorithm?
http://codex.nflxext.com/1.0.0/web/v1/83afhttp://codex.nflxext.com/2.0.0/web/v1/83af
![Page 168: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/168.jpg)
1.0.0
2.0.0
zuul
![Page 169: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/169.jpg)
zuul 1.0.0
2.0.0
![Page 170: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/170.jpg)
zuul 1.0.0
2.0.0
![Page 171: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/171.jpg)
![Page 172: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/172.jpg)
Good for now.
![Page 173: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/173.jpg)
Good for now.
Continue to look for engineering wins.
![Page 174: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/174.jpg)
What about operational resiliency?
![Page 175: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/175.jpg)
eu-west-1
us-west-2
us-east-1
![Page 176: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/176.jpg)
![Page 177: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/177.jpg)
eu-west-1
us-west-2
us-east-1
![Page 178: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/178.jpg)
eu-west-1
us-west-2
???
![Page 179: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/179.jpg)
eu-west-1
us-west-2
???
![Page 180: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/180.jpg)
eu-west-1
us-west-2
???
![Page 181: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/181.jpg)
???
???
???
![Page 182: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/182.jpg)
<script/> <script/>
codex
![Page 183: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/183.jpg)
<script/>
codex
???
![Page 184: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/184.jpg)
codex
<script/>
???
![Page 185: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/185.jpg)
Recap• Management plane necessary at scale
• Performance is critical (TTI)
• Redundancy across 3 AWS zones
• Resilient against CDN failure
![Page 186: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/186.jpg)
iv. Looking To The Future
![Page 187: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/187.jpg)
why not {bundler}?
![Page 188: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/188.jpg)
how do we support tree
shaking?
![Page 189: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/189.jpg)
don't be afraid to challenge common
convention.
![Page 190: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/190.jpg)
don't make assumptions about the upper limits.
![Page 191: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/191.jpg)
don't optimize before you understand the system.
![Page 192: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/192.jpg)
use the scientific method:
1. gather data 2. formulate hypothesis 3. test hypothesis 4. repeat
![Page 193: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/193.jpg)
engineer for fault tolerance
![Page 194: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/194.jpg)
Netflix scale is challenging.
![Page 195: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/195.jpg)
https://www.flickr.com/clement127/ https://www.flickr.com/jose_antonio_hidalgo_jimenez/ https://www.flickr.com/reiterlied/
Lego Photo Credits
![Page 196: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/196.jpg)
Image Credits
![Page 197: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/197.jpg)
Image Credits
![Page 198: [JSDC 2016] Codex: Conditional Modules Strike Back](https://reader037.vdocuments.site/reader037/viewer/2022102322/5880945d1a28ab9d738b4f13/html5/thumbnails/198.jpg)
Image Credits
Artist: alecive (Alessandro Roncone) Iconset Homepage: https://github.com/alecive/FlatWoken