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)