Scaling the synchronous web - Elaine Wherry

Post on 24-Jan-2015

1.796 views 3 download

description

Presentation from the Future of Web Apps Expo 2008 by Elaine Wherry.

Transcript of Scaling the synchronous web - Elaine Wherry

confidential

scaling the synchronous webscaling the synchronous webOctober 10October 10thth, 2008, 2008

confidential

scaling the synchronous webscaling the synchronous webOctober 10October 10thth, 2008, 2008

Elaine WherryCo-Founder, VP Products

Paul SowdenLead Software Engineer

www++

2 3 4 5 6 7

traditional versus nontraditional...

traditional versus nontraditional...

asynchronous versus synchronous...

asynchronous versus synchronous...

page views versus persistence...

content versus application...

database versus memory...

simpler is better

know your bottlenecks

quick fix or homerun

useful abstractions

#1: simpler is better

protocol pluginsprotocol plugins

msn

msn

jab

ber

jab

ber

yah

oo

yah

oo

oscar (a

im)

oscar (a

im)

gaim 1.5.0ui & core & services

gaim 1.5.0ui & core & services

yah

oo

yah

oo

gaim 1.5.0core & services

gaim 1.5.0core & services

protocol pluginsprotocol plugins

msn

msn

jab

ber

jab

ber

yah

oo

yah

oo

oscar (a

im)

oscar (a

im)

meebo network layermeebo network layer

confidential

#1: simpler is better

Don’t try to solve a scaling problem you don’t have (yet)

Build it as quickly and as inexpensively as possible

You want to save time to iterate upon other ideas in case this one doesn’t work

Setting yourself up for success – easier to optimize something you understand

#2 know your bottlenecks

confidential

tools

stracegdboprofilehttpanalyzermonitoring

confidential

#2: know your bottlenecks

your type of app determines the type of scaling

don’t prematurely optimize

know system at different levels: oprofile, valgrind, gdb

know your bottlenecks: memory, cpu, bandwidth, storage, disk i/o

#3: quick fix or #3: quick fix or homerun!homerun!

confidential

kill –9 <pid>

confidential

confidential

cgifastcgi

mod_meebo

#3: quick fix or homerun

users just want it to work (now)

use the time the quick fix affords you wisely

aim for small or big, avoid the middle

fix the root issue

#4: useful abstractions#4: useful abstractions

meebo

util.jsajax

ui

dlg

menubutton

element

IMDlg BuddyListDlg

EventMgr NetworkMgr

meeboAppmeeboAppmeeboApp

meeboui

utilajax

PubSub

Buddy BuddyList Account

EventMgr NetworkMgr

dlg

menubutton

element

iPhoneiPhoneFirefox

#4: useful abstractions

keep it simple, flexible, so you can adapt quickly to changes and scale with needs

abstractions allow you to reuse existing components to scale to new challenges

it’s hard to know where the useful abstractions are when you start a project

simpler is better

know your bottlenecks

quick fix or homerun

useful abstractions

today

3 years old45 people (2 dogs)35 million uniques per month350 years worth of usage per day200 million messages per day54,000 kiss emoticons each day :-*2.5 hour session length

confidential

thank you