Upload
carsonified-team
View
1.796
Download
3
Embed Size (px)
DESCRIPTION
Presentation from the Future of Web Apps Expo 2008 by Elaine Wherry.
Citation preview
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