08 10 12 Meebo Ajaxworld Preso

Preview:

Citation preview

confidential

scaling the synchronous webscaling the synchronous web

confidential

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

Elaine WherryCo-Founder, VP Products

www++

2 3 4 5 6 7

traditional versusnontraditional...traditional versusnontraditional...

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 plugins

msn

jabber

yahoo

oscar (aim)

gaim 1.5.0ui & core & services

yahoo

gaim 1.5.0core & services

protocol plugins

msn

jabber

yahoo

oscar (aim)

meebo network layer

confidential

#1: simpler is betterDon’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 casethis one doesn’t work

Setting yourself up for success – easier to optimizesomething 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 homerun!#3: quick fix or 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

uidlg

menubutton

element

IMDlg BuddyListDlg

EventMgr NetworkMgr

meeboApp meeboAppmeeboApp

meeboui

utilajax

PubSub

Buddy BuddyList Account

EventMgr NetworkMgr

dlg

menubutton

element

iPhoneiPhoneFirefox

#4: useful abstractions

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

abstractions allow you to reuse existingcomponents to scale to new challenges

it’s hard to know where the useful abstractionsare 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

http://flickr.com/photos/23327394@N05/2247502690/sizes/o/ (synchronized swimming)http://www.flickr.com/photos/exlibris/1031926094/ (traditional wedding)http://www.flickr.com/photos/callmemurphy/15877783/ (elvis)http://www.tadgear.com/edged%20tools/tad_gear_titanium_folding_spork.htm (spork)http://flickr.com/photos/deeleea/527574056/sizes/o/ (cat bottleneck)http://flickr.com/photos/pinelife/2580999964/sizes/l/ (quick fix)http://petitinvention.files.wordpress.com/2008/04/stinky_trash-petitinvention.jpg (trash icon)http://technet.microsoft.com/en-us/library/cc722911.aspx (windows dlg)http://flickr.com/photos/simonkimber/1096654635/ (traffic light tree)http://www.flickr.com/photos/jumblejet/2685719879/sizes/l/ (elephant veggie art)