Politik

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

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

[tags]Sociala medier, Web 2.0, social media, Twitter, bloggar, blogs, Craigs List, Silicon Valley, Facebook, Digg, Apache Thirft, Facebook, Facebook Öppen Kod [/tags]

7 thoughts on “Bakom förlåten: Facebooks mycket spännande öppna mjukvaruarkitektur

  1. Bosse

    Lennart: Angående PHP och objektorientering så tror jag vi har diskuterat det en gång tidigare. Det var något om att arv inte fungerade fullt ut i PHP men jag minns inte exakt hur det var, minns iaf att jag testade det hela. Men PHP är i vilket fall ett mycket användbart språk som dessutom stöds av de flesta webbhotell. Så producerar man mindre sajter som ska läggas ut på något webbhotellskonto tycker jag nog (fortfarande) att PHP och MySQL, och alla öppna kod-lösningar som bygger på det paret, är det naturligaste valet. Möjligen kan ASP.NET vara ett alternativ om hotellet ifråga även kör med Windowsservrar, då får man ju också köra med “riktiga” programmeringsspråk som C# ;-).

    Din favorit Ruby-on-Rails är säkert ett suveränt alternativ för lite större satsningar med andra och dyrare serverlösningar.

    1. Lennart

      Bosse: Helt riktigt att PHP är ett lättanvänt språk för mindre och även inte så små projekt. Precis som du säger så har alla webbhotell stöd för PHP och vi fåf heller inte glömma att PHP är “P” et i den allmänt förekommande LAMP-stacken. När Mark Zuckerberg började hacka på Facebook så använde han PHP och Facebook använder fortfarande PHP.

      Men, objektorienterade språk som Ruby on Rails och tidigare SmallTalk har enorma fördelar eftersom koden blir mer kompakt och lättförståelig.

    1. Lennart

      Petter: Vad jag vet så är alla datatyper inte objekt, som strings, arrays, nummer. Men om dom har blivit det i PHP 5.3 så säg gärna till.
      PHP har steg för steg blivit mer objektorienterat, det är sant, men själva programmeringsmodellen är ännu inte objektorienterad vad jag vet.

Comments are closed.