Google
 
Web www.usabloggen.se

Bakom förlåten: Facebooks mycket spännande öppna mjukvaruarkitektur

Skrivet av Lennart on December 12, 2011
Posted Under: Datorspråk,Silicon Valley

De allra flesta människor i världen känner till Facebook. Betydligt färre har en aning om var det ligger, nämligen på Sun Microsystems gamla högkvarter på 14 Hacker Way i Menlo Park, CA 94025 .

Ännu färre vet hur Facebooks mjukvaruartikektur ser ut.

Steve Campbell har skrivit en bra översikt som verkar vara relativt autentisk, med vissa missar som jag har vidareutvecklat och rättat: How Does Facebook Work? The Nuts and Bolts .

I grunden ligger fortfarande den klassiska LAMP-stacken som Mark Zuckerberg använde när han började hacka pÃ¥ Facebook pÃ¥ Harvard. Att man inte har övergett den är minst sagt förvÃ¥nande för “P”-et i LAMP är datorsprÃ¥ket PHP som varken är objektorienterat eller speciellt effektivt.

Men för att optimera sin PHP-kod så har man utvecklat HipHop for PHP, som är en källkod- transformator för PHP. HipHop förvandlar källkod skriven i PHP till optimerad C++ kod som man sen kör igenom en c++-kompilatorn g++ för att kompilera C++-koden till maskinkod.

HipHop är alltså en genial lösning på Facebooks PHP-problem som gör det möjligt att bevara den PHP-kod som finns men optimera den med mellan två och sex gånger.

Idag har man dessutom begränsat PHP till den kod som direkt används på webben och på serversidan använder man idag betydligt mer effektiva språk som C++, Java och Python. (som f.ö. även används mycket på Google).

Databasen MySQL används tydligen fortfarande och är inte den bästa och inte ens kompatibel med den viktiga SQL-92-standarden.

MySQL är liksom de flesta SQL-databaser inte effektiv för distribuerade databassystem så Facebook utvecklade sitt eget distribuerade databassystemet för sin Facebook Messaging platform, som man sen skänkte till Apache under namnet: Apache Cassandra, som man dock övergav för ett år sen.

Idag använder man sig istället av Apache HBasesom är baserat på Googles BigTable och är en s.k. NoSQL öppen kod distribuerad databas skriven i Java. Den är utvecklat som en del av Apaches utomordentliga viktiga Apache Hadoop projekt som idag används över hela Silicon Valley.

För att göra alla Facebook-användarnas webbsidor så snabba som möjligt så använder man även: Memcached.

Caching är en teknologi som de flesta webbsajter använder, däribland min egen blogg. Det gÃ¥r ut pÃ¥ att man, för att citera Wikipedian tar en “kopia av senast använda data, eller ofta använda data, som temporärt mellanlagras i ett snabbt minne för att kunna Ã¥teranvändas i framtiden. Syftet är att snabba upp exekveringstiden genom att undvika att man mÃ¥ste hämta samma data pÃ¥ nytt via ett lÃ¥ngsamt nätverk eller frÃ¥n ett lÃ¥ngsammare minne, eller att man mÃ¥ste utföra tidskrävande beräkningar av samma värden igen. Syftet kan ocksÃ¥ vara att avlasta en hÃ¥rt belastad resurs, exempelvis en server eller annan central enhet.”

Men den mest strategiska produkten som används på Facebook är Apache Thrift ett strategiskt projekt som skapades på Facebook och sen skänktes till Apache.

Apache Thrift används som ett ramverk för s.k. Remote Procedure Call (RPC) mellan olika datorspråk på olika datorer eller i olika s.k. adressutrymmen. Vilket alltså betyder att Facebook använder Thrift för att kunna köra kod skriven i andra språk direkt från PHP, som t.ex. svenska Erlang för Facebooks Chat och även det funktionella programspråket Haskell.

Mer om Facebooks använding av Öppen Kod på den här länken:Open Source

Facebooks mjukvaruarkitektur är mycket märklig och ett paradexempel på den helt avgörande ställning som Öppen Kod har i dagens Silicon Valley. Vi ser hur Facebook gång på gång utvecklar sina egna mjukvaruteknologier, men istället för att patentera dom eller hålla dom hemliga, som t.ex. Apple gör, så skänker man dom helt enkelt till de Öppna Kod-rörelsen, väl medvetna om att man på det sättet kommer att få mångdubbelt tillbaks eftersom det betyder att även andra programmerare utanför Facebook kommer att bidra till de öppna kodprojekten.

En mycket intressant och inte minst öppen mjukvaruarkitektur alltså som visar hur enastående viktig den öppna kodrörelsen har blivit idag.

Och under all mjukvara ligger alltså Facebooks datahallar, som den som man nu kommer att bygga i Luleå och som kommer att ge arbetstillfällen för 50 operatörer, inte fler. Mer om Facebooks hårdvaruarkitektur vid ett senare tillfälle.

Axplock från den nordiska pressen:

Dagen.se – kultur,News, News, ITavisen.no, ITavisen.no, ITavisen.no, ITavisen.no, ITavisen.no

Svenska bloggar om: , , , , , , , , , , , ,

6 Comments

Kommentera gärna. Första kommentaren modereras, sen är det fritt fram. Svenska bokstäver: å,ä,ö,Å,Ä,Ö

XHTML: Du kan använda de här taggarna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>