Sådan klarer Facebook 300 millioner brugere

Oprettet d.

Hvordan holder man styr på 300 millioner brugere? Facebook giver her et sjældent indblik i den tekniske infrastruktur bag et af verdens mest besøgte websteder.
 

30.000 servere og 25 terabyte logfiler om dagen. Så meget skal der til for at holde et af verdens absolut mest populære sociale netværk kørende. Facebook og de andre internet-giganter er normalt meget hemmelighedsfulde omkring deres tekniske infrastruktur – hverken Microsoft eller Google vil fortælle, hvor mange servere de har eller hvor de er placeret. Men Facebooks teknologichef Jeff Rothschild har helt usædvanligt åbnet op for posen og afsløret en lang række detaljer omkring tjenestens tekniske infrastruktur. Det skete under en præsentation på University of California i San Diego, som kan hentes i sin fulde længde (75 minutter) på nettet.

Facebook har mere end 300 millioner brugere, og heraf er der mindst 200 millioner aktive brugere, hvis man skal tro tjenestens egne tal. Det bliver til 200 milliarder sidevisninger om måneden. Til sammenligning har en dansk tjeneste som Arto omkring 130 millioner sidevisninger på en måned. Så der er meget, meget langt op til Facebook. Hver eneste dag udveksles en milliard chat-beskeder over Facebook og tjenesten håndterer 100 millioner søgeforespørgsler.

Det store spørgsmål er så, hvordan Facebook håndterer denne enorme trafik uden at bryde sammen. Rothschild fortæller at Facebook har omkring 30.000 servere. For at holde denne enorme serverpark kørende har selskabet ansat omkring 300 teknikere – statistisk set har hver tekniker altså ansvaret for én million brugere.

En af de mest populære tjenester på Facebook er foto-applikationen, hvor der i øjeblikket er gemt 20 milliarder billeder i fire forskellige opløsninger. Det faktiske antal gemte billeder er altså 80 milliarder, og hver måned vokser tallet med 2-3 milliarder. Hvert sekund leverer Facebook op til 600.000 billeder.

Rothschild afslører at Facebook i første omgang brugte kommercielle NFS-servere til at lagre og levere billederne, men filsystemerne var for langsomme. I stedet har Facebook udviklet sit eget cache-system og distribuerer nu billederne over et Content Delivery Network (CDN). Facebook har også udviklet sit eget open source filsystem, Haystack, så det nu er muligt at levere billeder fire gange så hurtigt med den samme hardware.

 

Scripter med PHP

Facebook bruger PHP som scriptsprog på sine webservere, og det giver både fordele og ulemper. PHP er nemt at lære, programmere og debugge, men det sluger forholdsvis meget hukommelse og regnetid når koden skal afvikles. Facebook har foretaget sine egne optimeringer af PHP og arbejder i øjeblikket på en compiler, der oversætter PHP til hurtigere C++ kode.

Backend-systemerne hos Facebook kører allerede med C++ suppleret med script-sprog som Python, Ruby og Erlang. Selskabet har også udviklet sit eget system til logfiler, Scribe, som hver eneste dag skal håndtere omkring 25 terabyte data.

Men den helt centrale del af Facebooks it-infrastruktur er caching-systemet – en videreudvikling af Memcached – der skaber forbindelse til tusindvis af MySQL-servere, fordelt på flere regnecentre. Rothschild fortæller at man startede med 20 MySQL-servere på hver deres egen fysiske maskine, og siden er der så løbende tilføjet flere maskiner.

Facebooks tekniske chef erkender at man står overfor store udfordringer i dag. Tidligere handlede det om, hvordan man skulle håndtere den næste million brugere. I dag skal man finde ud af, hvordan man skal klare de næste 300 millioner brugere. Facebook har bygget sin infrastruktur på open source, og en stor del af den software, som firmaet selv har udviklet, er også frit tilgængelig for andre udviklere.

Kilde: Af