L'architettura di Stack Overflow, {codemotion} Milano 2014

L'architettura di Stack Overflow, {codemotion} Milano 2014

L'architettura di Stack Overflow, presentata a {codemotion} Milano in Novembre 2014.

3fd9e5b2c59170ec3d74dde30d233fa4?s=128

Marco Cecconi

November 29, 2014
Tweet

Transcript

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

  2. ARCHITETTURA? CHE E’?

  3. None
  4. None
  5. Cresciuti a 130 siti (+20%) Da 56º a 44º network

    più visitato al mondo (-12)
  6. None
  7. *source: Quantcast, Alexa ~50º  network  per  traffico*   (fra imdb.com

    e t.co)
  8. None
  9. None
  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. http://stackexchange.com/performance

  22. Agile  

  23. BAT!CAVERNA Ciclo scrivi-compila-testa sul computer di casa Richieste feature

  24. DEV.SO Test su server di produzione git push BAT!CAVERNA

  25. BAT!CAVE DEV.SO META.SE Utenti testano su meta.stackexchange.com (“baking”) git push

    BAT!CAVERNA 1-click deploy
  26. DEV.SO META.SE AZZ! git revert git push BAT!CAVERNA 1-click deploy

  27. DEV.SO NETWORK META.SE 1-click deploy git push 1-click deploy In

    produzione! Tonnellate di utenti lo usano… BAT!CAVERNA
  28. BAT!CAVE DEV.SO NETWORK META.SE 1-click deploy git push 1-click deploy

    …e richiedono nuove feature! BAT!CAVERNA
  29. Vai  veloce  e  scassa  le  cose*   * Non la

    home page o pagine domande :-)
  30. Vai  veloce  e  scassa  le  cose*   * Non la

    home page o pagine domande :-)
  31. Abuso  dell’uso  della  cache  

  32. None
  33. None
  34. None
  35. Il  nostro  amico/nemico:   Il  Garbage  Collector   (“spazzin”)  

  36. None
  37. None
  38. None
  39. None
  40. None
  41. None
  42. Abusiamo della cache per aiutare il GC

  43. None
  44. None
  45. Abusiamo del compilatore per aiutare il GC

  46. None
  47. None
  48. None
  49. None
  50. IRepository<Order>  orderRepository  =            container.Resolve<IRepository<Order>>();  

      Order  order  =  orderRepository.Get(35); La buona, vecchia dependency injection
  51. None
  52. IRepository<Order>  repository  =      new  ValidatingOrderRepository  (    

         new  SecurityRepository<Order>  (              new  LoggingRepository<Order>  (                  new  CachingRepository<Order>  (                      new  NHibernateRepository<Order>  ()                  )              )          )      );         Order  order  =  repository.Get(35);
  53. Il  nostro  sorgente  

  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. YAGNI*   * You Ain’t Gonna Need It!

  61. Librerie  e  open  source  

  62. None
  63. None
  64. None
  65. Wrap  code  in  libraries     and  open  source  it

     
  66. None
  67. None
  68. PROGRAMMAZIONE DA “SUPEREROI”

  69. None
  70. LIVELLO STRUMENTI: HATTORI HANZŌ

  71. •     La  performance  è  una  feature   •   

     Always.  Be.  Shipping.   •     Usate  le  vostre  circostanze.   •     Rilasciate  O/S  le  vostre  librerie   •     3  monitor  grandi  da  far  schifo.     MORALE DELLA FAVOLA
  72. None
  73. Marco Cecconi @sklivvz http://sklivvz.com Stiamo assumendo nuovi ninja da ovunque

    nel mondo!