Ember At Scale

50

Transcript of Ember At Scale

EMBER AT SCALE

@chadhietala

THIS IS OUR STORY

2013

PRODUCT & TECH BALANCE

WHAT YEAR IS IT?

“If it ain’t broken don’t fix it.”- Someone not in the Javascript community

2014

SOFTWARE ROT

UNIFY & REDUCE COMPLEXITY

CONSIDERATIONS

CENTRALIZED SUPPORT

LESS IS MORE

CHANGE IS THE CONSTANT

SOLVING PROBLEMS

INITIAL RENDER

BASE PAGE RENDERER(BPR)

BIG PIPE

Server Server

STORE AND FORWARD CHUNKED ENCODING

NETWORK BOUNDARY

BPR

Such Web Scale

API ServerEmber App

Browser

Such Web Scale

API ServerEmber App

linkedin.com/profile/123

BPRAPI ServerEmber App

Browser

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>LinkedIn : Profile</title> <link href=“app.css” rel=“stylesheet” type=“text/css" /> </head> <body> <script src=“vendor.js”></script> <script src=“app.js”></script>

Such Web Scale

API ServerEmber App

linkedin.com/profile/123

BPRAPI ServerEmber App

Browser

Such Web Scale

API ServerEmber App

linkedin.com/profile/123

BPRAPI ServerEmber App

Browser

appInstance.visit(‘/profile/123’)

Such Web Scale

API ServerEmber App

linkedin.com/profile/123

BPRAPI ServerEmber App

Browser

appInstance.visit(‘/profile/123’)

[‘/profile/123’, /config/123’]

npm install ember-prefetch

TRADITIONAL EMBER APP

WITH EMBER-PREFETCH

Such Web Scale

{ data: {…} }API ServerEmber App

linkedin.com/profile/123

BPRAPI ServerEmber App

Browser

appInstance.visit(‘/profile/123’)

<code id=“bpr-guid-3243243”>{&quot;data&uote;:{…}}</code> <script class=“bpr-response”> _bpr.response({

request: ‘/profile/123’, status: 200, body: ‘bpr-guid-3243243’})

</script>

Such Web Scale

API ServerEmber App

linkedin.com/profile/123

BPRAPI ServerEmber App

Browser

appInstance.visit(‘/profile/123’)

bit.ly/resource-discovery

ember fastboot --resource-discovery

SERVING THE APP

JVM

Such Web Scale

Base Page Controller

Renderer

Instance

Process Manager

Instance

Channel Channel

Node

API Proxy

Ember Renderer

Ember App

linkedin.com/profile/123

Instance

JVM

Such Web Scale

Base Page Controller

Renderer

Instance

Process Manager

Instance

Channel Channel

Node

API Proxy

Ember Renderer

Ember App

linkedin.com/profile/123

Instance

JVM

Such Web Scale

Base Page Controller

Renderer

Instance

Process Manager

Instance

Channel Channel

Node

API Proxy

Ember Renderer

Ember App

linkedin.com/profile/123

Instance

JVM

Such Web Scale

Base Page Controller

Renderer

Instance

Process Manager

Instance

Channel Channel

Node

API Proxy

Ember Renderer

Ember App

linkedin.com/profile/123

Instance

JVM

Such Web Scale

Base Page Controller

Renderer

Instance

Process Manager

Instance

Channel Channel

Node

API Proxy

Ember Renderer

Ember App

linkedin.com/profile/123

Instance

JVM

Such Web Scale

Base Page Controller

Renderer

Instance

Process Manager

Instance

Channel Channel

Node

API Proxy

Ember Renderer

Ember App

linkedin.com/profile/123

Instance

DEPLOYMENTS

V8

npm install chrome-tracing

OH YEA

linkedin.com/m/Sorry, for the “Please Download The App” interim :(

THANKS

@chadhietala