I successi ingegneristici di Facebook

In questi giorni si parla esclusivamente di Facebook, merito della quotazione in borsa che dovrebbe iniziare gia domani con la vendita pubblica delle azioni. Questo interessante articolo del NYT pone oggi l'accento su quali siano gli approcci tecnici e ingegneristici che hanno fatto la differenza per Facebook: se ci pensiamo bene questo social network non ha mai subito grandi downtime, ha una distribuzione a livello globale e soprattutto riesce a garantire visite costanti a quasi 1 miliardo di persone, con picchi costanti intorno ai 600 milioni di utenti collegati ogni giorno.

In questi giorni si parla esclusivamente di Facebook, merito della quotazione in borsa che dovrebbe iniziare già domani con la vendita pubblica delle azioni. Questo interessante articolo del NYT pone oggi l’accento su quali siano gli approcci tecnici e ingegneristici che hanno fatto la differenza per Facebook: se ci pensiamo bene questo social network non ha mai subito grandi downtime, ha una distribuzione a livello globale e soprattutto riesce a garantire visite costanti a quasi 1 miliardo di persone, con picchi costanti intorno ai 600 milioni di utenti collegati ogni giorno. 

facebook

E’ evidente che per realizzare da subito un sistema scalabile, capace di sostenere alti carichi, Facebook abbia avuto qualcosa in più di altri: nell’articolo si ricorda ad esempio come MySpace, durante il suo periodo di gloria, avesse spesso problemi di downtime, dovuti principalmente ad una scelta errata della propria architettura (basata prevalentemente su software e sistemi di casa Microsoft). 

Si scopre in realtà che una delle prime mosse di Zuckerberg come CEO della compagnia fu quella di assumere, come direttore del comparto server e operazioni, Jeff Rothschild, un veterano dell’area dello storage management che aveva fatto gavetta nella realizzazione di grandi software aziendali, che non avevano difficoltà a reggere anche alti carichi. Ma non è tutto, Facebook è da sempre stata guardata con sospetto per la sua scelta di utilizzare PHP come linguaggio di programmazione, da molti considerato inadatto per un sito di questa portata, tuttavia ancora oggi questo rimane il principale linguaggio della piattaforma e in più il team di Facebook ha una organizzazione complessa che permette di fare deployment di nuovo codice ogni poco tempo, per singole parti della piattaforma e soprattutto con effetti che possono riguardare solamente una parte ridotta dei propri utenti. 

Friendster ad esempio, il popolare social network di qualche anno fa, usava inoltre un solo database per tutti i propri utenti, un errore di progettazione che aveva costretto a continue soluzioni per evitare downtime e problemi alla base dati. Zuckerberg adottò una soluzione diversa, parti da subito dividendo i vari college dove Facebook si espandeva, su più database, quindi un database per ogni college, in modo da poter tenere sotto controllo dati e gestione del database. 

Facebook da sempre ha avuto un occhio di riguarda all’utilizzo di sistemi altamente scalabili, e come fatto anni prima da Google, ha deciso di utilizzare ampiamente software per l’elaborazione clustered come Hadoop, e relativi plugin quali HBase, in modo da poter affrontare anche l’elaborazione di milioni di dati in real time. Come accaduto ai ragazzi di Mountain View anni prima, anche Facebook ha adottato un approccio basato sul “try and learn”, ovvero un deploy graduale delle proprie soluzioni osservandone gli effetti, considerando che per prima al mondo si è trovata tra le mani un sito web che permetteva di interagire a milioni di persone online, non solo eseguendo ricerche, ma inviando dati e contenuti multimediali.