Il social network Facebook ha dovuto, negli ultimi tempi, fare i conti molto spesso con una crescita esponenziale che ha più volte minato alla stabilità ed all’efficienza del servizio. Come noto, Facebook utilizza PHP come linguaggio di sviluppo per la sua web application: come confermano i vertici dell’azienda fondata da Mark Zuckerberg, è molto più facile oggi trovare competenti ingegneri software specializzati in PHP. Inoltre, la semplicità del linguaggio è l’immediata leggibilità del codice prodotto consentono a Facebook, per ammissione degli stessi tecnici, ampie possibilità di crescita.
A causa delle vastissime dimensioni della sua comunità e del traffico generato complessivamente dal sito (Donn Lee, ingenere, ha dichiarato che comincia ad esserci il bisogno di 1-Terabit Ethernet), Facebook ha dovuto scontrarsi ripetutamente con problemi di performance durante l’esecuzione dei suoi script PHP. Quest’oggi la società di Zuckerberg ha rilasciato pubblicamente HipHop for PHP, frutto di due anni di lavoro e già in uso sul social network da circa sei mesi.
Con “HipHop for PHP”, gli sviluppatori di Facebook hanno voluto “prendere il toro per le corna” con l’obiettivo di migliorare le performance di base offerte dal motore di PHP. “HipHop”, che integra anche un componente web server, è una nuova piattaforma che può essere impiegata in realtà di grandi dimensioni per velocizzare l’esecuzione degli script realizzati in PHP.
Da Facebook si vuole precisare come il progetto “HipHop” non sia un tentativo di
“Due sono gli elementi da prendere in considerazione“, ha spiegato David Recordon, senior open programs manager presso Facebook, “il primo è il linguaggio PHP vero e proprio; il secondo è il componente runtine che si occupa di interpretare il linguaggio ed eseguire le varie istruzioni. (…) Lasciando inalterato il linguaggio, ciò che abbiamo modificato è il runtime sottostante attivando un processo di traduzione del codice sorgente in C++ per poi produrre un binario compilato“.
Haiping Zhao, l’ingegnere di Facebook che ha presentato il progetto, ha aggiunto: “i linguaggi di scripting sono conosciuti per la scarsa efficienza in termini di carico sulla CPU ed utilizzo della memoria. In forza di ciò, per Facebook è stato molto difficile gestire gli oltre 400 milioni di pagine viste, generate utilizzando PHP, ogni mese”. Zhao ha comunque rimarcato ancora la semplicità di PHP in termini di rapidità di apprendimento, di sviluppo, di lettura e di debugging. Ponendo sulla bilancia entrambi gli aspetti, quindi, l’obiettivo che si sono prefissi gli sviluppatori del social network è stato quello di migliorare le performance in fase di esecuzione degli script lato server. “HipHop”, come spiega Zhao, consente di ridurre il carico sulla CPU (si parla di un miglioramento che può arrivare sino al 50%, a seconda delle operazioni effettuate da parte dello script PHP). Ciò implica anche una riduzione del numero dei server necessari per gestire un’infrastruttura come quella di Facebook.
Come confermato da Zhao, Facebook ha deciso di rilasciare “HipHop” sotto forma di prodotto opensource.
“HipHop” non deve essere pensato come un vero e proprio compilatore quanto, piuttosto, di un “traduttore” di codice: il sorgente in PHP viene infatti trasformato in codice C++ altamente ottimizzato quindi impiega g++ per compilarlo. Il codice così prodotto è semanticamente identico a quello originale sacrificando solamente alcune funzioni raremente utilizzate a fronte di un marcato miglioramento delle performance.