Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scaling the synchronous web - Elaine Wherry


Published on

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

Published in: Technology
  • Be the first to comment

Scaling the synchronous web - Elaine Wherry

  1. 1. confidential scaling the synchronous web October 10 th , 2008
  2. 2. scaling the synchronous web October 10 th , 2008 confidential Elaine Wherry Co-Founder, VP Products Paul Sowden Lead Software Engineer
  3. 4. www +
  4. 5. 2 3 4 5 6 7
  5. 7. traditional versus nontraditional... traditional versus nontraditional...
  6. 8. asynchronous versus synchronous ...
  7. 10. asynchronous versus synchronous ... page views versus persistence ... content versus application ... database versus memory ...
  8. 11. <ul><li>simpler is better </li></ul><ul><li>know your bottlenecks </li></ul><ul><li>quick fix or homerun </li></ul><ul><li>useful abstractions </li></ul>
  9. 12. #1: simpler is better
  10. 13. protocol plugins msn jabber yahoo oscar (aim) gaim 1.5.0 ui & core & services
  11. 14. yahoo gaim 1.5.0 core & services protocol plugins msn jabber yahoo oscar (aim) meebo network layer
  12. 17. confidential
  13. 19. #1: simpler is better <ul><li>Don’t try to solve a scaling problem you don’t have (yet) </li></ul><ul><li>Build it as quickly and as inexpensively as possible </li></ul><ul><li>You want to save time to iterate upon other ideas in case this one doesn’t work </li></ul><ul><li>Setting yourself up for success – easier to optimize something you understand </li></ul>
  14. 20. #2 know your bottlenecks confidential
  15. 23. tools <ul><li>strace </li></ul><ul><li>gdb </li></ul><ul><li>oprofile </li></ul><ul><li>httpanalyzer </li></ul><ul><li>monitoring </li></ul>
  16. 25. #2: know your bottlenecks <ul><li>your type of app determines the type of scaling </li></ul><ul><li>don’t prematurely optimize </li></ul><ul><li>know system at different levels: oprofile, valgrind, gdb </li></ul><ul><li>know your bottlenecks: memory, cpu, bandwidth, storage, disk i/o </li></ul>confidential
  17. 26. #3: quick fix or homerun! confidential
  18. 27. kill –9 <pid>
  19. 32. confidential
  20. 33. confidential
  21. 35. cgi fastcgi mod_meebo
  22. 36. #3: quick fix or homerun <ul><li>users just want it to work (now) </li></ul><ul><li>use the time the quick fix affords you wisely </li></ul><ul><li>aim for small or big, avoid the middle </li></ul><ul><li>fix the root issue </li></ul>
  23. 37. #4: useful abstractions
  24. 40. meebo util.js ajax ui dlg menu button element IMDlg BuddyListDlg EventMgr NetworkMgr
  25. 41. meeboApp meeboApp meeboApp meebo ui util ajax PubSub Buddy BuddyList Account EventMgr NetworkMgr dlg menu button element iPhone iPhone Firefox
  26. 42. #4: useful abstractions <ul><li>keep it simple, flexible, so you can adapt quickly to changes and scale with needs </li></ul><ul><li>abstractions allow you to reuse existing components to scale to new challenges </li></ul><ul><li>it’s hard to know where the useful abstractions are when you start a project </li></ul>
  27. 43. <ul><li>simpler is better </li></ul><ul><li>know your bottlenecks </li></ul><ul><li>quick fix or homerun </li></ul><ul><li>useful abstractions </li></ul>
  28. 44. today <ul><li>3 years old </li></ul><ul><li>45 people (2 dogs) </li></ul><ul><li>35 million uniques per month </li></ul><ul><li>350 years worth of usage per day </li></ul><ul><li>200 million messages per day </li></ul><ul><li>54,000 kiss emoticons each day :-* </li></ul><ul><li>2.5 hour session length </li></ul>
  29. 45. thank you confidential