L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014

Post on 12-Jul-2015

166 views 0 download

Transcript of L'architettura di Stack Overflow - Mario Cecconi - Codemotion Milan 2014

Marco Cecconi @sklivvz

http://sklivvz.com

ARCHITETTURA?

CHE E’?

Cresciuti a 130 siti (+20%)

Da 56º a 44º network più visitato al mondo (-12)

*source: Quantcast, Alexa

~50º  network  per  traffico*  

(fra imdb.com e t.co)

http://stackexchange.com/performance

Agile  

BAT!CAVERNA

Ciclo scrivi-compila-testa sul computer di casa

Richieste feature

DEV.SO

Test su server di produzione

git push

BAT!CAVERNA

BAT!CAVE DEV.SO

META.SE

Utenti testano su meta.stackexchange.com

(“baking”)

git push

BAT!CAVERNA

1-click deploy

DEV.SO

META.SE

AZZ!

git revert

git push

BAT!CAVERNA

1-click deploy

DEV.SO

NETWORK META.SE

1-click deploy

git push

1-click deploy

In produzione! Tonnellate di utenti lo usano…

BAT!CAVERNA

BAT!CAVE DEV.SO

NETWORK META.SE

1-click deploy

git push

1-click deploy

…e richiedono nuove feature!

BAT!CAVERNA

Vai  veloce  e  scassa  le  cose*  

* Non la home page o pagine domande :-)

Vai  veloce  e  scassa  le  cose*  

* Non la home page o pagine domande :-)

Abuso  dell’uso  della  cache  

Il  nostro  amico/nemico:  Il  Garbage  Collector  

(“spazzin”)  

Abusiamo della cache per aiutare il GC

Abusiamo del compilatore per aiutare il GC

IRepository<Order>  orderRepository  =            container.Resolve<IRepository<Order>>();    Order  order  =  orderRepository.Get(35);

La buona, vecchia dependency injection

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

Il  nostro  sorgente  

YAGNI*  

* You Ain’t Gonna Need It!

Librerie  e  open  source  

Wrap  code  in  libraries    and  open  source  it  

PROGRAMMAZIONE DA “SUPEREROI”

LIVELLO STRUMENTI: HATTORI HANZŌ

•     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

Marco Cecconi @sklivvz

http://sklivvz.com

Stiamo assumendo nuovi ninja da ovunque nel mondo!