Gestione strategica di una webapp
domenica, 19 aprile 2009 | di Gianluca | Archiviato in Analisi Superficiali, Internet
Grazie alle potenzialità di internet qualche giorno fa ho avuto modo di seguire in differita una conferenza che si è tenuta al Qcon di San Francisco qualche mese fa, dove il responsabile dell’infrastruttura tecnica di Facebook spiega come viene gestita l’infrastruttura tecnica a casa loro. [Fonte]
E’ un caso che mi è interessato studiare perchè si tratta – fuori da ogni discussione su utilità, opportunità, determinanti dei profitti del Social Network – di un sito internet che sta crescendo in maniera spaventosa, e quindi è interessante per me che in passato mi sono occupato di questioni tecniche affini, capire quale è la loro strada nel mantenere alta l’affidabilità e bassi i costi operativi.
Non voglio scendere troppo nel tecnico per evitare di annoiare i pochi pazienti lettori di questo spazio, chi è interessato può consultare la fonte, le conclusioni più interessanti che ne traggo io pero’ sono sostanzialmente due :
1) L’importanza della “recency” nel progetto dell’infrastruttura. Quando ho scritto la mia tesi di laurea la scorsa estate mi sono imbattuto in uno studio di amazon che dimostrava come un singolo secondo di latenza aggiuntiva su un sito internet potesse impattare gli acquisti online del 20-30% (ora non ricordo i dati precisi). Per questa ragione, consapevoli che l’esperienza dell’utente peggiora molto quando il sito carica lentamente, e dovendo allo stesso tempo investire il minimo indispensabile nella potenza complessiva del sistema,in un sito come Facebook per tenere bassi i costi pare sia importantissimo tenere a disposizione del sistema solo i dati più recenti (pochi mesi), mentre a quelli più vecchi è accettabile accedere anche in maniera lenta o con qualche errore qui e lì: visto che il 99% delle transazioni vengono effettuate consultando dati recenti sono questi che devono essere replicati tra i vari datacenter che usa l’azienda e resi disponibili in pochi decimi di secondo agli utenti. Per tutto il resto (e si tratta di una mole enorme di dati) si puo’ trovare il modo di “ottimizzare”.
2) La morte dell’RDBMS, il database relazionale, così come in molti lo conosciamo. In queste situazioni di elevato carico e di pattern di utilizzo prevedibili è molto più facile memorizzare solo una serie di chiavi e record. Secondo il CTO di facebook ogni tentativo di costruire complesse relazioni tra le basi di dati si è rivelato lento e molto costoso in termini di infrastruttura: loro al momento utilizzano esclusivamente mySQL e identificano ogni oggetto esclusivamente con il suo codice alfanumerico (ogni singolo oggetto sul sito ne ha uno), senza costruire particolari relazioni tra i vari oggetti che, pur permettendo eventualmente di far cose interessanti, costituiscono un costo e una lentezza inaccettabili a voler tener bassi i costi.
Poi ci sono altre prospettive tecniche più o meno interessanti che lascio volentieri scoprire agli addetti ai lavori interessati.