Quali sono le tecnologie, open source, che consentono a cinquecento milioni di utenti di intrattenere relazioni personali attraverso il più noto e imponente social network?
David Recordon, senior open programs manager presso Facebook, delinea per sommi capi la struttura attuale del network, fornendo informazioni di carattere tecnico.
Quale linguaggio di programmazione per il back-end viene utilizzato l´immancabile linguaggio di scripting PHP, accoppiato alla tecnologia creata dallo stesso Facebook e poi resa disponibile su GitHub chiamata HipHop: tale tecnologia consente di tradurre i sorgenti PHP in C++, di modo che quest´ultimo possa poi esser compilato mediante g++, operazione che, secondo lo stesso Facebook, permette al codice sviluppato di utilizzare metà del carico CPU rispetto al modulo PHP del webserver Apache. Oltre al codificatore, HipHop comprende una reimplementazione del sistema di runtime di PHP e la riscrittura della maggior parte delle estensioni più utilizzate.
Sempre secondo Facebook, tale tecnica consente di ottenere i vantaggi di PHP (velocità di scrittura del codice e semplicità) e quelli di un linguaggio compilato; dopo avere, infatti, testato anche la via della riscrittura in Java, questo linguaggio è stato scartato con decisione, per via della sua intrinseca lentezza (e relativa maggior complessità di programmazione). Scartati sono stati anche gli "ottimizzatori" Zend compiler, APC et similia.
I programmatori possono testare sul campo il progetto seguendo le istruzioni dello wiki del website.
Per ciò che concerne lo storage e le operazioni connesse, Facebook immagazzina i dati degli utenti in migliaia di database MySQL, sebbene la natura relazionale dello stesso RDBMS non venga considerata, in quanto, utilizzando Memcached per mappare i dati in array associativi (hash table) in memoria RAM, le operazioni sui dati vengano effettuate dalla stessa applicazione PHP & HipHop.
Altre tipologie di dati sono invece immagazzinate in database NoSQL quali Cassandra (sempre visto come storage di dati "key/value").
David Recordon, invece, non specifica quale sia il webserver utilizzato, né una scansione con nmap mi ha permesso di ottenere tale informazione: il contributo dei lettori sarà decisamente apprezzato.
Infine, come semplice annotazione sulle tecniche Web 2.0 "avanzate" adottate dal programma, è possibile notare (mediante l´estensione Firebug di Firefox) l´utilizzo della modalità di comunicazione Comet.