lecture_slides-airbnb-slides.pdf

127
Startup Engineering coursera.org/course/startup Guest Lecture Alex Blackstock & Spike Brehm

description

startup engineering coursera mooc

Transcript of lecture_slides-airbnb-slides.pdf

Page 1: lecture_slides-airbnb-slides.pdf

Startup Engineeringcoursera.org/course/startupGuest Lecture

Alex Blackstock & Spike Brehm

Page 2: lecture_slides-airbnb-slides.pdf
Page 3: lecture_slides-airbnb-slides.pdf
Page 4: lecture_slides-airbnb-slides.pdf
Page 5: lecture_slides-airbnb-slides.pdf

OverviewThe Story

The Stack

The Future

It’s Hack Time!

Page 6: lecture_slides-airbnb-slides.pdf

1THE STORY

Page 7: lecture_slides-airbnb-slides.pdf

Text

Joe

Brian

Nate

Page 8: lecture_slides-airbnb-slides.pdf

2007

Brian movesin with Joe

! Rent increasesThey can’t afford it

Page 9: lecture_slides-airbnb-slides.pdf

! Rent increasesThey can’t afford it

SF Design Conference

Page 10: lecture_slides-airbnb-slides.pdf

SF DESIGNCONFERENCE

NO VACANCY

Page 11: lecture_slides-airbnb-slides.pdf

SF DESIGNCONFERENCE

Page 12: lecture_slides-airbnb-slides.pdf

SF DESIGNCONFERENCE

Page 13: lecture_slides-airbnb-slides.pdf

SF DESIGNCONFERENCE

Page 14: lecture_slides-airbnb-slides.pdf
Page 15: lecture_slides-airbnb-slides.pdf
Page 16: lecture_slides-airbnb-slides.pdf
Page 17: lecture_slides-airbnb-slides.pdf
Page 18: lecture_slides-airbnb-slides.pdf
Page 19: lecture_slides-airbnb-slides.pdf
Page 20: lecture_slides-airbnb-slides.pdf
Page 21: lecture_slides-airbnb-slides.pdf

Big Growth, Big Problems

Fraud

Search

Payments

Trust & Safety

Internationalization

Page 22: lecture_slides-airbnb-slides.pdf
Page 23: lecture_slides-airbnb-slides.pdf

2THE STACK

Page 24: lecture_slides-airbnb-slides.pdf

RailsMySQL

HadoopRedis

CoffeeScriptBackbone

NodeSASS

Framework

DatabaseAnalyticsKey/Value StoreClient Language Client Framework

SSJSStylesheets

Page 25: lecture_slides-airbnb-slides.pdf

Amazon Web ServicesEC2RDS

S3ELB

EMRDynamoDBElasticache

Web ServersDatabaseStorageLoad BalancingCluster ComputingDistributed K/VMemcache

Page 26: lecture_slides-airbnb-slides.pdf

Ever heard of ... ?

ZooKeeperMesos

RedshiftChef

SphinxWeka

Service DiscoveryResource SharingWarehousingDeploymentSearchData Mining

Page 27: lecture_slides-airbnb-slides.pdf

3THE FUTURE

Page 28: lecture_slides-airbnb-slides.pdf
Page 29: lecture_slides-airbnb-slides.pdf
Page 30: lecture_slides-airbnb-slides.pdf

Let’s talk about webapps

Page 31: lecture_slides-airbnb-slides.pdf
Page 32: lecture_slides-airbnb-slides.pdf

Airbedandbreakfast.com

Page 33: lecture_slides-airbnb-slides.pdf

Airbedandbreakfast.com

Started in 2008

Page 34: lecture_slides-airbnb-slides.pdf

Airbedandbreakfast.com

Started in 2008

Ruby on Rails app

Page 35: lecture_slides-airbnb-slides.pdf

Airbedandbreakfast.com

Started in 2008

Ruby on Rails app

Was Rails 2.3; painful upgrade to 3.x

Page 36: lecture_slides-airbnb-slides.pdf

Airbedandbreakfast.com

Started in 2008

Ruby on Rails app

Was Rails 2.3; painful upgrade to 3.x

Traditional page-based paradigm

Page 37: lecture_slides-airbnb-slides.pdf
Page 38: lecture_slides-airbnb-slides.pdf

website

Page 39: lecture_slides-airbnb-slides.pdf

website v.

Page 40: lecture_slides-airbnb-slides.pdf

website v.webapp

Page 41: lecture_slides-airbnb-slides.pdf

website

server

client

Page 42: lecture_slides-airbnb-slides.pdf

webapp

server

client

Page 43: lecture_slides-airbnb-slides.pdf
Page 44: lecture_slides-airbnb-slides.pdf

past

Page 45: lecture_slides-airbnb-slides.pdf

past v.

Page 46: lecture_slides-airbnb-slides.pdf

past v.future

Page 47: lecture_slides-airbnb-slides.pdf
Page 48: lecture_slides-airbnb-slides.pdf

rich client app

Page 49: lecture_slides-airbnb-slides.pdf

fat client apprich client app

Page 50: lecture_slides-airbnb-slides.pdf

fat client apprich client app

single page app

Page 51: lecture_slides-airbnb-slides.pdf
Page 52: lecture_slides-airbnb-slides.pdf

What is a single page app?

Page 53: lecture_slides-airbnb-slides.pdf
Page 54: lecture_slides-airbnb-slides.pdf
Page 55: lecture_slides-airbnb-slides.pdf
Page 56: lecture_slides-airbnb-slides.pdf

navigate around the app without page refresh

Page 57: lecture_slides-airbnb-slides.pdf

navigate around the app without page refresh

application logic in the client

Page 58: lecture_slides-airbnb-slides.pdf

navigate around the app without page refresh

application logic in the client

fetch data on demand

Page 59: lecture_slides-airbnb-slides.pdf
Page 60: lecture_slides-airbnb-slides.pdf

How do you build a single page app?

Page 61: lecture_slides-airbnb-slides.pdf
Page 62: lecture_slides-airbnb-slides.pdf
Page 63: lecture_slides-airbnb-slides.pdf
Page 64: lecture_slides-airbnb-slides.pdf

Why now?

Page 65: lecture_slides-airbnb-slides.pdf
Page 66: lecture_slides-airbnb-slides.pdf

faster JavaScript runtimes

Page 67: lecture_slides-airbnb-slides.pdf

faster JavaScript runtimes

new browser features (pushState, localStorage, WebGL, etc.)

Page 68: lecture_slides-airbnb-slides.pdf

faster JavaScript runtimes

new browser features (pushState, localStorage, WebGL, etc.)

heightened user expectations

Page 69: lecture_slides-airbnb-slides.pdf
Page 70: lecture_slides-airbnb-slides.pdf

How we do it.

Page 71: lecture_slides-airbnb-slides.pdf
Page 72: lecture_slides-airbnb-slides.pdf

+

Page 73: lecture_slides-airbnb-slides.pdf
Page 74: lecture_slides-airbnb-slides.pdf
Page 75: lecture_slides-airbnb-slides.pdf
Page 76: lecture_slides-airbnb-slides.pdf

provides structure to your JS

Page 77: lecture_slides-airbnb-slides.pdf

provides structure to your JS

MV* (MVC, MVP, MVVM, ...)

Page 78: lecture_slides-airbnb-slides.pdf

provides structure to your JS

MV* (MVC, MVP, MVVM, ...)

Backbone.View, Backbone.Model, Backbone.Collection, Backbone.Router

Page 79: lecture_slides-airbnb-slides.pdf
Page 80: lecture_slides-airbnb-slides.pdf

think about building an application, rather than manipulating HTML

Page 81: lecture_slides-airbnb-slides.pdf
Page 82: lecture_slides-airbnb-slides.pdf
Page 83: lecture_slides-airbnb-slides.pdf
Page 84: lecture_slides-airbnb-slides.pdf
Page 85: lecture_slides-airbnb-slides.pdf
Page 86: lecture_slides-airbnb-slides.pdf
Page 87: lecture_slides-airbnb-slides.pdf
Page 88: lecture_slides-airbnb-slides.pdf

The Easy Way

Page 89: lecture_slides-airbnb-slides.pdf

The Easy Wayv.

Page 90: lecture_slides-airbnb-slides.pdf

The Easy Wayv.The Hard Way

Page 91: lecture_slides-airbnb-slides.pdf

The Easy Way

Page 92: lecture_slides-airbnb-slides.pdf
Page 93: lecture_slides-airbnb-slides.pdf

JS app runs entirely in client

Page 94: lecture_slides-airbnb-slides.pdf

JS app runs entirely in client

Server technology agnostic

Page 95: lecture_slides-airbnb-slides.pdf

JS app runs entirely in client

Server technology agnostic

Poor SEO; not crawlable

Page 96: lecture_slides-airbnb-slides.pdf

JS app runs entirely in client

Server technology agnostic

Poor SEO; not crawlable

Performance hit to download & evaluate JS before rendering

Page 97: lecture_slides-airbnb-slides.pdf

The Hard Wayaka “The Holy Grail”

Page 98: lecture_slides-airbnb-slides.pdf
Page 99: lecture_slides-airbnb-slides.pdf

Routing, rendering, biz logic run on client & server

Page 100: lecture_slides-airbnb-slides.pdf

Routing, rendering, biz logic run on client & server

Re-render in client with pushState; hit refresh, serve full page of HTML

Page 101: lecture_slides-airbnb-slides.pdf

Routing, rendering, biz logic run on client & server

Re-render in client with pushState; hit refresh, serve full page of HTML

Provides SEO

Page 102: lecture_slides-airbnb-slides.pdf

Routing, rendering, biz logic run on client & server

Re-render in client with pushState; hit refresh, serve full page of HTML

Provides SEO

Initial pageload is faster

Page 103: lecture_slides-airbnb-slides.pdf
Page 104: lecture_slides-airbnb-slides.pdf

Enter Rendr.

Page 105: lecture_slides-airbnb-slides.pdf
Page 106: lecture_slides-airbnb-slides.pdf

+

Page 107: lecture_slides-airbnb-slides.pdf

+

Page 108: lecture_slides-airbnb-slides.pdf
Page 109: lecture_slides-airbnb-slides.pdf

Pulls Backbone to the server

Page 110: lecture_slides-airbnb-slides.pdf

Pulls Backbone to the server

Write your application once

Page 111: lecture_slides-airbnb-slides.pdf

Pulls Backbone to the server

Write your application once

Run application in web browser and in Node.js

Page 112: lecture_slides-airbnb-slides.pdf
Page 113: lecture_slides-airbnb-slides.pdf
Page 114: lecture_slides-airbnb-slides.pdf
Page 115: lecture_slides-airbnb-slides.pdf
Page 116: lecture_slides-airbnb-slides.pdf
Page 117: lecture_slides-airbnb-slides.pdf

Check out the blog post.

Page 118: lecture_slides-airbnb-slides.pdf

Check out the blog post.

http://nerds.airbnb.com/weve-launched-our-first-nodejs-app-to-product

Page 119: lecture_slides-airbnb-slides.pdf
Page 120: lecture_slides-airbnb-slides.pdf

Coming soon.

nerds.airbnb.com

Page 121: lecture_slides-airbnb-slides.pdf

4

Page 122: lecture_slides-airbnb-slides.pdf

Never stop hacking

Page 123: lecture_slides-airbnb-slides.pdf

Technological Vigilantism

Page 124: lecture_slides-airbnb-slides.pdf

Cross-functional Collaboration

Page 125: lecture_slides-airbnb-slides.pdf

Creating and Learning Together