artsy at node on the road

15
Craig Spaeth & Brennan Moore Artsy Web Engineering @craigspaeth & @zamiang

Upload: craig-spaeth

Post on 29-Jun-2015

194 views

Category:

Technology


1 download

DESCRIPTION

Slides for a talk given at Node on The Road found here: https://www.joyent.com/developers/videos/node-js-on-the-road-nyc-craig-spaeth-brennan-moore. These outline Artsy's (artsy.net) transition from a monolithic Ruby on Rails stack to a distributed system with Node.js powered front ends.

TRANSCRIPT

Page 1: Artsy at Node on the Road

Craig Spaeth & Brennan MooreArtsy Web Engineering@craigspaeth & @zamiang

Page 2: Artsy at Node on the Road

WHY WE MIGRATED TO NODE

RUBY ON RAILSRUBYONRAILS

API

BACKBONE UI

IOS PROTOTYPE

BACKBONE UI

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WVEB

BROKE

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WVEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WVEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

T

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

MOBILE

WVEB

BROKEN

OBILE W

EB B

ROKEN

MOBILE

WEB

BROKEN

MOBILE

WEB

BROKEN

RUBYONRAILS

AN

ALY

TICS

EMA

L G

ENER

ATO

RS

API

AD

MIN

PA

NEL

CO

DE

IOS APP CMS

Page 3: Artsy at Node on the Road

MOBILE

WEB

BROKEN

MOBILE

WVEB

BROKEN

PROBLEMS WITH BACKBONE + RAILS STACK

• Slow JS testing

• Ruby/JS—lack of re-use

• Hard to understand hybrid stack

• Huge single page app

• Bloated & slow assets

Page 4: Artsy at Node on the Road

INTRODUCING NODE INTO THE STACK

RUBY API

BACKBONEFRONT-END

CMS

Page 5: Artsy at Node on the Road

INTRODUCING NODE INTO THE STACK

CMS

RUBY API

BACKBONEFRONT-END

MOBILE WEB

Redirect mobile User Agents

Page 6: Artsy at Node on the Road

INTRODUCING NODE INTO THE STACK

CMS

RUBY API

MOBILE WEB

DESKTOP WEB

Page 7: Artsy at Node on the Road

Avoiding Death by Rewrite

Gustavo RezendeValquíria, 2009

Page 8: Artsy at Node on the Road

MIGRATING USERS PAGE BY PAGE UNTIL NODE WAS IN FRONT

NEWNODE APP

LEGACYRAILS APP HAPROXY

/browse

/artist/:id

/tag/:id

NEWNODE APP

HAPROXY+ LEGACYRAILS APP

NODE-HTTP-PROXY

Page 9: Artsy at Node on the Road

OUR STACK NOW

RUBY API

NODE TOOLS HOSTING CACHING

NODE SERVER

ASSET CDN

Page 10: Artsy at Node on the Road

MEET EZEL: ARTSY’S JS APP BOILERPLATE

• Philosophy: Modularity, Flexibility, Isomorphic

• Apps: Express sub-apps mounted

• Components: Modules of UI grouping CSS, templates, and JS together

• Simple re-use, small asset package size, test everything in Node

• Ezeljs.com

Page 11: Artsy at Node on the Road

PAIN POINTS IN TRANSITION

• Syncing auth

• Tracking memory usage & leaks

• npmjs.org stability

• Integration testing a distributed architecture

Patrick Lichty

A Failure in �e Interwebz, 2013

Page 12: Artsy at Node on the Road

WINS

Community• npm for server & client

Productivity• 1,000+ tests under 5 mins.• 5 min. deploys, ~5 times a day

Performance• Page load speed cut in half• 40+ Rails servers to 2 Node servers• SEO—Shared rendering server/client

Patrick LichtyA Failure in �e Interwebz, 2013

Loving ParentSuccess Baby, circa. 2007

Page 13: Artsy at Node on the Road

�ank you

@[email protected]/artsy

Page 14: Artsy at Node on the Road

SAMPLE SETUP.JS

Page 15: Artsy at Node on the Road

DIRECTORY STRUCTURE