…traduzione dell’articolo “Exploring the software behind Facebook, the world’s largest site”..
La maggior parte degli approcci tradizionali di web server risultano impraticabili per Facebook che ormai per le sue dimensioni e caratteristiche necessità di ‘attenzione particoloare‘.
Gli ingegneri lavorano constantemente affinchè Facebook continui ad erogare ai suoi utenti un servizio veloce, fruibile e sicuro; e non è un’impresa facile dati i numeri che girano intorno a questo ormai famosissimo Social Network.
Prima di addentrarci in alcuni significativi dettagli vediamo quali sono questi numeri a dir poco incredibili:
- Facebook server 570 milioni di pagine viste ogni mese
- Ci sono un quantitativo di foto su Facebook il cui totale supera tutti i siti di raccolta foto come Filckr..
- Più di 3 milioni di foto vengono caricate mensilmente.
- Il sistema di Facbook serve più di 1.2 milioni di foto al secondo. Questi dati non includono le immagini servite dal CDN di Facebook.
- Più di 25 milioni di contenuti (aggiornamenti, commenti ecc.) vengono condivisi ogni giorno.
- Facebook ha più di 30.000 server, e questo è un dato dell’anno scorso!
IL SOFTWARE CHE SOSTIENE FACEBOOK NEL SUO LAVORO
Nel corso del tempo Facebook è dovuto cambiare ed estendere le sue operazione e incorporare nel suo ‘motore’ sempre più elementi e servizi.
Facciamo alcuni esempi:
- Facebook utilizza come linguaggio di programmazione il PHP, ma è stato necessario costruire un compilatore capace di introdurre codice nativo nel suo web
server, così da migliorare le performance;
- Facebook utilizza Linux come sistema operativo, ma è opportunamente ottimizzato per raggiungere i suoi target (sopratutto in termini di networking)
- Facebook utilizza Mysql come data base server ma si avvale di ulteriori software per supportare le performance di accesso alle informazioni (in altre parole l’uso di Memcasched risulta fondamentale per rendere veloci gli accessi agli storage a milioni di utenti).
Ma passiamo ai dettagli e andiamo a presentare alcuni dei più importanti software di cui si avvale Facebook per fornire servizi sempre più veloci,
con prestazioni avanzate e tecnologici.
In questa prima parte parleremo di Memcached.
MEMCACHED
Memcashed (http://memcached.org/) è al momento uno dei più famosi software che supportano applicazioni web.
E’ in sostanza un sistema di memory cashing distribuito del quale Facebook, ma non solo lui, utilizza come cashing layer tra i web server e i Db server MySql
(questo per ovviare all’accesso al db che solitamente non è mai velocissimo).
Nel corso degli anni, Facebook ha fatto un sacco di ottimizzazioni per il software Memcasched come ad esempio ottimizzare il network stack solo per menzionarne uno.
Nella prossima puntata parleremo di HipHop per PHP e Haystack, BigPipe e Cassandra.







Un approfondimento a ‘memcached’, http://net.tutsplus.com/tutorials/php/faster-php-mysql-websites-in-minutes/