
- Esplorando il Software di Facebook
Altri aspetti che aiutano Facebook a lavorare meglio
In questa serie di articoli abbiamo parlato di alcuni dei software che compongono il sistema di Facebook e lo aiutano nell’erogare un servizio sempre più performante. Ma un tale sistema che prevede una movimentazione di grandi dimensioni di dati è pur sempre un compito complesso, per cui abbiamo pensato di elencare un paio di cose in più che Facebook fa per mantenere il suo servizio integro e privo di intoppi.
1) Rilasci graduali
Facebook ha un sistema definito Gatekeeper che consente di eseguire codice diverso per diversi gruppi di utenti (si introducono fondamentalmente diverse condizioni nella base di codice). Ciò consente al team di sviluppo di Facebook di effettuare rilasci graduali di nuove funzionalità, come test A / B, attivare alcune funzionalità solo per i dipendenti Facebook, ecc.
Gatekeeper permette anche di fare qualcosa che si chiama Facebook “lancia oscura”, che è quello di attivare gli elementi di una certa caratteristica dietro le quinte prima che vengano messe on line (in praica senza che gli utenti se nè accorgano in quanto non ci saranno comunque elementi corrispondenti UI).
Questo agisce come un test di stress del mondo reale e consente di esporre i colli di bottiglia e altri settori problematici prima che una funzione è ufficialmente lanciata. Dark è fato solitamente ogni due settimane prima del lancio effettivo.
2) Profilink del Sistema Live
Facebook segue con attenzione i suoi sistemi; è abbastanza interessante che monitora anche le prestazioni di ogni singola funzione PHP in ambiente di produzione live. Questa profilazione del contesto live PHP viene fatto utilizzando uno strumento open source chiamato XHProf.
3) Disattivazione graduale di performance aggiunte
Se Facebook si imbatte in problemi di prestazioni, ci sono un numero elevato di livelli che lo lascia a poco a poco disabilitare funzioni meno importanti per migliorare le prestazioni delle funzionalità del Core di Facebook.
4) Le cose che non ho citato
Non ho approfondito molto la parte hardware in questi articoli, ma, naturalmente, è anche questo un aspetto importante quando si tratta discalabilità.
Ad esempio, come molti altri siti che gestiscono enormi quantità di dati, Facebook utilizza un CDN per aiutare a servire i contenuti statici.
Poi naturalmente c’è un enorme centro dati che Facebook sta costruendo in Oregon per migliorarel a scalabilità con i server.
E a parte i software che ho già accennato, vi è naturalmente una quantità elevata di altri software coinvolti in tutto il sistema di Facbook.
Tuttavia, spero di essere stato in grado di evidenziare i software più importanti e le scelte fatte da Facebook, sopratutto spero che questi aspetti possano essere di aiuto a tutti coloro che ogni gkiorni devono confrontarsi con grossi sistemi e che a loro volta si trovano a prendere delle decisioni tecnologiche spesso non facili.
…Infine…Facebook e l’open souce
Non posso completare questo articolo senza menzionare quanto Facebook sia amico e ha ‘sposato’ l’open source. O forse si dovrebbe dire, “ama”.
Non solo Facebook ha utilizzato (e contribuendo al suo sviluppo) il software open source come Linux, Memcached, MySQL, Hadoop, e molti altri, ma ha anche reso molto del suo software sviluppato internamente disponibile come open source.
Esempi di progetti open source che provenivano da Facebook includono HipHop, Cassandra, Thrift e Scribe.
Facebook ha anche open-source Tornado, una rete ad alte prestazioni quadro server sviluppato dal team di FriendFeed (che Facebook ha acquistato nel mese di agosto 2009).
(Un elenco di software open source che è coinvolto con Facebook si possono trovare nella pagina di Facebook Open Source).