$30 off During Our Annual Pro Sale. View Details »

Stack Overflow - it's all about performance

Stack Overflow - it's all about performance

Slides of the presentation given in November 2014 at Øredev

Marco Cecconi

November 07, 2014
Tweet

More Decks by Marco Cecconi

Other Decks in Programming

Transcript

  1. Marco Cecconi
    @sklivvz
    http://sklivvz.com

    View Slide

  2. ARCHITECTURE?
    WHAT THE HECK IS
    THAT?

    View Slide

  3. View Slide

  4. View Slide

  5. Grew to 130 sites (+20%)
    Global site rank went from #56 to #44 (-12)

    View Slide

  6. View Slide

  7. *source: Quantcast, Alexa
    #50-­‐ish  network  for  traffic*  
    (between imdb.com and t.co)

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. http://stackexchange.com/performance

    View Slide

  22. Agile  

    View Slide

  23. BAT!CAVE
    Code-build-test cycle
    running on home machine
    feature requests

    View Slide

  24. BAT!CAVE DEV.SO
    Test on the real servers
    git push

    View Slide

  25. BAT!CAVE DEV.SO
    META.SE
    1-click deploy
    Users test on
    meta.stackexchange.com
    (“baking”)
    git push

    View Slide

  26. BAT!CAVE DEV.SO
    META.SE
    1-click deploy
    HALP!
    git revert
    git push

    View Slide

  27. BAT!CAVE DEV.SO
    NETWORK META.SE
    1-click deploy
    git push
    1-click
    deploy
    It’s live! Tons of users use it…

    View Slide

  28. BAT!CAVE DEV.SO
    NETWORK META.SE
    1-click deploy
    git push
    1-click
    deploy
    …and
    provide new
    feature requests

    View Slide

  29. Move  fast  and  break  things*  
    * Not the home page or question page :-)

    View Slide

  30. Move  fast  and  break  things*  
    * Not the home page or question page :-)

    View Slide

  31. Abusing  caching  

    View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. Our  frienemy:  
    The  Garbage  Collector  

    View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. View Slide

  42. Cache abuse to help GC

    View Slide

  43. View Slide

  44. View Slide

  45. Compiler abuse to help GC

    View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. IRepository  orderRepository  =    
           container.Resolve>();  
     
    Order  order  =  orderRepository.Get(35);
    Ye olde dependency injection

    View Slide

  51. View Slide

  52. IRepository  repository  =  
       new  ValidatingOrderRepository  (  
           new  SecurityRepository  (  
               new  LoggingRepository  (  
                   new  CachingRepository  (  
                       new  NHibernateRepository  ()  
                   )  
               )  
           )  
       );  
         
    Order  order  =  repository.Get(35);

    View Slide

  53. Our  source  code  

    View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. YAGNI*  
    * You Ain’t Gonna Need It!

    View Slide

  61. Libraries  and  open  source  

    View Slide

  62. View Slide

  63. View Slide

  64. View Slide

  65. Wrap  code  in  libraries    
    and  open  source  it  

    View Slide

  66. View Slide

  67. View Slide

  68. “SUPERHERO” CODING

    View Slide

  69. View Slide

  70. TOOLS LEVEL: “NINJA”

    View Slide

  71. •     Performance  is  a  feature  
    •     Always.  Be.  Shipping.  
    •     Use  your  circumstances.  
    •     Open  source  your  libraries  
    •     3  obscenely  big  monitors.    
    KEY TAKEAWAYS

    View Slide

  72. View Slide

  73. Marco Cecconi
    @sklivvz
    http://sklivvz.com
    we are hiring new ninjas from anywhere in the world!

    View Slide