Přejít k navigační liště

Zdroják » Různé » Jaký software pohání Facebook?

Jaký software pohání Facebook?

Články Různé

Mark Zuckerberg před časem zveřejnil některé informace o tom, jaký software používá Facebook, aby zvládl půl miliardy uživatelů. S takovým množstvím uživatelů nelze postavit službu na běžných technologiích a „silném železe“. Facebook proto, jako některé podobné služby, „přiohnul“ některé nástroje pro své použití.

Facebook byla původně uzavřená univerzitní síť, kterou založil Mark Zuckerberg na univerzitě v Harvardu. Letos mu bylo 26 let a stále stojí v čele dominantní sociální sítě současnosti. Nynější šéf Facebooku navíc při jednom z nedávných rozhovorů prozradil několik zajímavých faktů. Facebook se v červenci dočkal svého pětsetmiliontého uživatele, zaměstnává asi 1400 pracovníků a obrat společnosti bude letos okolo 1 miliardy dolarů. Facebook už není žádný drobeček, kterým býval kdysi na Harvardu. K hostování webové služby takového rozsahu je třeba desítek tisíc fyzických serverů a software, který tohle vše uhlídá.

Hlavní výzvou je škálovatelnost

To bezesporu, když uvážíme, že Facebook servíruje svým uživatelům 570 miliard stránek měsíčně. Facebook je také největší fotogalerií na světě, počet fotek v rámci této sociální sítě je větší než celkový součet fotek všech ostatních fotogalerií na webu včetně serveru flickr.com a ostatních. Každý měsíc nahrají uživatelé na Facebook 3 miliardy nových fotek. Facebook posílá uživatelům každou vteřinu 1,2 milionu fotek k prohlížení. Celkem je sdíleno každý měsíc 25 miliard jednotek obsahu (status zprávy, komentáře a další).

Front-end běží na LAMP

Z pohledu uživatele Facebooku jde stále o tradiční LAMP web, tedy kombinaci operačního systému Linux, webového serveru Apache, databáze MySQL a skriptování PHP. První pohled ale může klamat. Inženýři Facebooku totiž vytvořili vlastní kompilátor PHP, který převádí zdrojový kód do strojového kódu, což podstatně zvyšuje výkon celé aplikace. Stejně tak byl operační systém Linux optimalizován pro specifické potřeby Facebooku. Populární databáze MySQL je využívána primárně pro ukládání klíčů a hodnot (key-value), složitější operace nad uloženými daty, jako například SQL operace typu JOIN a podobné pokročilejší dotazy, jsou prováděny na webových serverech, kde se lépe optimalizuje jejich výkon.

Memcached

Memcached si získává po celém světě obrovskou popularitu hlavně díky tomu, jak dokáže zrychlit běh extrémně navštěvovaných webových služeb. De facto jde o distribuovaný úložný systém, který Facebook využívá jako tzv. cache vrstvu mezi webovými servery a databázemi MySQL. Data jsou tak v mnoha případech servírována z memcached serverů, nemusí se tak načítat z databáze, což by celou operaci značně zpomalilo. Tento postup je nutností hlavně u služeb, které se dnes pyšní módním přívlastkem „real-time“. Stejně jako u ostatních programů i u Memcached provedl Facebook za poslední léta řadu optimalizací. V současné době Facebook využívá tisíce memcached serverů, které mají v každém okamžiku desítky terabajtů uložených („kešovaných“) dat. Pravděpodobně jde o největší instalaci softwaru Memcached na světě.

HipHop pro PHP

PHP jako skriptovací jazyk rychlostí příliš nevyniká, což byl pro Facebook problém. Byl vyčleněn zvláštní tým inženýrů, na začátku pouze trojčlenný, s úkolem vytvořit kompilátor umožňující přeložit PHP kód do kódu, který je možné snadněji optimalizovat. Za 18 měsíců byl na světě HipHop, kompilátor PHP do C++. To umožnilo Facebooku citelně zefektivnit výkon webových serverů oproti původnímu neoptimalizovanému skriptování PHP.

Haystack

Haystack je objektový sklad s vysokou výkonností, který pro Facebook obstarává vše potřebné okolo fotek a jejich servírování uživatelům. Tento „sklad“ má o práci vystaráno. Facebook totiž hostuje více než 20 miliard fotek, každou ukládá ve 4 různých rozlišeních, což dává dohromady 80 miliard obrázků. Prvním úkolem Haystacku je fotky uchovávat. Druhým neméně podstatným úkolem je fotky předávat uživatelům k prohlížení, kdy je zásadní dostatečný výkon celého systému. Jak již bylo zmíněno, návštěvníci si vyžádají každou vteřinu 1,2 milionu fotek. Systém byl opět několikrát optimalizován, aby podával lepší výkon. Hlavním trikem přitom bylo spojování více menších souborů do jednoho velkého, který byl pak odesílán či přijímán Haystackem. Oproti standardnímu řešení se tak podařilo snížit počet nutných input/output operací o 90 procent.

BigPipe

BigPipe je systém pro paralelní generování webových stránek, který Facebook vytvořil pro vlastní potřebu. Jako u jiných paralelních systémů i zde je výhodou jednak rychlost zpracování, kdy jednotlivé části stránky jsou generovány nezávisle na sobě, a také menší chybovost, kdy při výpadku jedné části stránky jsou vygenerovány zbývající části webové stránky. Například chat je generován zvlášť, stejně tak Novinky, které tvoří ústřední část úvodní stránky Facebooku.

Cassandra

Cassandra je ve službách mnohých webových služeb současnosti. Kromě Facebooku ji používá například server Digg.com. Jde o distribuovaný úložný systém a jeden z výsledků NoSQL hnutí. Facebook používá tuto technologii pro prohledávání poštovních zpráv.

Hadoop a Hive

Hadoop je tzv. map-reduce implementace, která umožňuje Facebooku provádět výpočtové operace s obrovskými objemy dat uloženými na clusterové infrastruktuře. Facebook využívá Hadoop pro analýzu dat, kterých, jak všichni tušíme, má skutečně obrovské množství. Hive je pak technologie, s jejíž pomocí můžeme pokládat SQL dotazy v prostředí Hadoopu. Obě uvedené technologie využívají například Yahoo nebo Twitter.

Gatekeeper

Facebook také vyvinul zajímavý systém Gatekeeper. Ten zajišťuje testování nových funkcí sociální sítě, když dané skupině uživatelů ukazuje nové funkce, zatímco většina uživatelů vidí původní obsah. Podle zpětné vazby tak může Facebook dále upravovat nové funkce před ostrým spuštěním všem uživatelům. Stejně tak je možné některé funkce Facebooku dočasně vyřadit z provozu v případě, že serverům docházejí síly a vytížení celého systému je nad únosnou mezí.

Jak dál?

Kam bude směřovat dále Facebook? To je otázka pro samotný Facebook a námět na další článek. Jasné je jedno: se 100 miliony nových uživatelů každý půlrok nemůže Facebook ustrnout v inovování a dalších optimalizacích systému. Naopak musí hledat nové cesty a technologie, jak umožnit bezproblémový růst této sociální sítě i do budoucna.

Článek vyšel i na blogu společnosti ACTIVE 24 

Komentáře

Subscribe
Upozornit na
guest
22 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
v6ak

Na co potřebují 4 různá rozlišení jedné fotky? Jedno na náhled, druhé na „velkou“ fotku (stejně mi to přijde jako kukátko, když mám 1600*900 displej). A co ta zbylá dvě?

Rdm

V poslední době se články o tom co pohání Facebook nějak vyrojily. Není snad žádný jiný web, o jehož technologiích by bylo napsáno tolik co o Facebooku. Přitom Facebook mi tedy nepřipadá zrovna jako zajímavý web…

-tom-

mně jo, vzhledem k enormní zátěži, kterou musí zvládnout :-)

Noem

Kdyby uměl hledat, tak by to byla enormní zátěž. Tak jako Google, to je daleko těžší. Takhle je to pouze o servirovani temer statickeho obsahu a servirovani z databaze podle klicu.

František Kučera

Za tu enormní zátěž si ale můžou sami. Téhle centralizaci Internetu vůbec nefandím.

Beda

WTF? Jak si za enormní zátěž můžou sami? Není snad cílem každýho komerčního serveru mít co největší návštěvnost, aby jim to generovalo co největší zisk?

Aleš Roubíček

Ano, není.

v6ak

Ale pak to musí brát se vším všudy…

v6ak

Já jsem sice taky proti centralizaci, ale ne až tak kvůli té zátěži, ale kvůli věcem jako třeba kombinace vendor lock-in s monstrózním sběrem osobních dat. Když tyto dvě věci spojíme, je to velké zlo, protože jsou zároveň lidé tlačeni dávat data jednomu jedinému poskytovateli. Ale to už začínám OTovat, že?

František Kučera

OT to není, aspoň ne vzhledem k mému předchozímu komentáři – mně ta centralizace vadí ze stejných důvodů – ta extrémní zátěž a nutnost ji nějak pracně řešit, to je jen vedlejší efekt – hlavní, co mi na tom vadí je ta technologická koncentrace (vše v jednom systému, závislost na něm – to se dá ještě řešit – HA, failover) a hlavně organizační koncentrace – příliš mnoho dat a uživatelů pod kontrolou jednoho ekonomického subjektu (a je celkem jedno, jestli je to Facebook, Google, Microsoft atd.).
Jenže co s tím dělat? Když si chce někdo provozovat obří systémy, tak mu v tom nelze bránit. Když mu někdo cpe svoje osobní data a stává se na něm závislý, tak je to taky jeho věc a já mu to nemůžu zakazovat. Řešením je leda se toho osobně neúčastnit a nepodporovat to – a naopak vytvářet internet v tom stylu, v jakém bych ho chtěl mít – velké množství nezávislých uzlů, které spolu komunikují otevřenými protokoly a formáty…

v6ak

Technologická koncentrace mi až tak nevadí, spíš ta organizační. A hlavně ta nedobrovolnost. Nevadí mi globální index webu a dokonce mi nevadí GMail, protože jde o svobodnou volbu (podpora ostatních mailových serverů), ale vadí mi třeba mnohem menší ICQ jakožto vendor lock-in.
Jinak, abych to upřesnil, není až tak důležitý otevřený client-server protokol, jako otevřený server-server protokol. Myslím, že zde začíná kamufláž absence otevřených server-server protokolů pomocí otevřených a někdy i větším celkem standardizovaných client-server API. A říkají tomu otevřenost.

honza

Jaká centralizace? Vy nějakou vidíte? Kde je „centrum“ netu?

František Kučera

Centralizace nemusí znamenat, že je nějaké jedno „centrum“ webu. Mluvím o centralizaci/de­centralizaci jako o trendech. Příkladem decentralizace je RSS/Atom kanál – každý má svůj na svém serveru, nebo obecně na jakémkoli serveru a uživatel si novinky stahuje z různých míst do svého agregátoru (čtečky). Příkladem centralizace je Twitter – lidi nemají vlastní servery, je jen jeden server (resp. systém patřící jedné firmě), přes který se cpou novinky. Přestože existují i alternativy jako identi.ca a další služby/softwary, jedná se o trend centralizace – místo aby jednotlivé informační kanály byly rozložené mezi mnoho serverů (decentralizované), jsou koncentrované na jeden server/systém (samozřejmě existuje řada poskytovatelů informací, kteří se k této centralizaci nepřipojili a provozují si vlastní systémy).
S Facebookem je to podobné – místo aby lidé měli vlastní server, blog, galerii sdílenou s okruhem kamarádů, nebo nějaký regionální server (líbímseti.cz), dochází k centralizaci k jednomu poskytovateli služby (Facebook). Samozřejmě i zde je řada lidí, kteří tento trend nechtějí podporovat a provozují si vlastní servery (ať už proto, že jim poskytuje lepší služby, práva, pohodlí, soukromí, nebo prostě proto, že nechtějí podporovat centralizaci a koncentraci „moci“ nad uživateli a jejich daty).

honza

fb ani twitter není žádná centralizace, ale poskytovatel služby. Tuto službu může ale nemusí všichni využívat. Dokud si může kdokoliv zřídit podobnou nebo lepší službu a nabízet ji veřejně, nejedná se o žádnou centralizaci. Proč by běžní uživatelé měli mít účtý na 10ti serverech a spravovat zvlášť galerie, blogy atd, když to můžou mít vše v jednom? Běžní uživatelé neprovozují vlastní servery. A kdyby FB třeba zanikl, hned se vyrojí dalších xy facebooků…takže na tom není nic centrálního, jen se prostě jedná o server, který shodou náhod využívá masa bfu…

Dc

Ono hlavna vyhoda pre obycajnych ludi pri tychto „centralizovanych sluzbach/serveroch“ je ze je to na jednom mieste, jednej adrese a nemusia vyhladavat kade tade po nete priatelov, informaciet atd. Pre laika je jednoduchsie ked mu kamarat povie najdi si ma na fb ako povedat mu nejaku specificku sluzbu, ako sa do nej prihlasi a este ako ho tam vyhlada.
To ze z fb a podobnych sluzieb sa stalo centrum bola slobodna volba ludi. Ano
teraz je to trochu tazsie pretoze tam ludi nepriamo tlaci okoloie a ostatny
priatelia a znamy.

Rdm

existují i jiné servery s „enormní“ zátěží a nikdo o nich nepíše (akamai, youtube atd..)
tahle facebook mánie už začíná být opravdu střelená…

avo

To že existujú servery, o ktorých nikto nepíše nie je dôvod na to, aby sa nepísalo o serveroch žiadnych – to je trochu absurdná logika.
Druhá vec je že facebook je niečím, čo ľudia nazývajú fenomén. Môže sa ti to páčiť, môže sa ti to nepáčiť, ale je to tak. A ja si rád prečítam o železe infraštruktúre a technológiách jedného z najväčších fenoménov dneška.
Strelená nie je facebook mánie ale „antifacebook mánie“, ktorá spôsobí, že pod každým článkom o facebooku sa *musí* objaviť komentár, kde sa dočítam, že facebook sux, že facebook zbiera osobné dáta pre CIA, že facebook si tento článok nezaslúži lebo nejaký XY server tu je už XY rokov a tiež nikto o ňom nepíše.

Michal Augustýn

A že komentující nemá účet na Facebooku a ani to neplánuje :)

petiar

Jemná parafráza na nedávny vtip o užívateľoch Apple:
„Viete ako spoznáte že dotyčný nemá účet na Facebook-u? Povie vám to!“
;-)

Kuromaru

lol :D

Rdm

Nikde jsem neuvedl, že se nemá psát o žádných serverech, právě naopak, nějaký seriál o tom na čem běží některé velké služby by mě zajímal. Jenže ne, novináři musí honit návštěvnost, tak každých 14 dní vydají článek o tom, že Facebook běží na upravené verzi PHP…
PS. to, že FB sbírá data pro CIA slyším prvně, měl jsem za to, že ty data zneužívá pouze jeho zakladatel :)
PPS. a co je na FB fenomenálního? Max. to, že někdo vzal líbim se ti, přebarvil ho na modro a vydává ho za Web 2.0…

dc

Hmm no moc som sa z tohto clanku nedozvedel. Akurat tak pomenovanie nejakych technologii ktore si vyvynuli a ich hruby popis. Ale vzhladom na to ze toto chce byt odborny web, cakal by som aspon trochu detailnejsie popisanie technologii.
Napriklad detailnejsie rozpisanie databaze a nie len ze pouzivaju MySQL ,struktura, ako maju rozvrhnute clustre, balance loading a cachovanie. Detailne informacie samozrejme asi niesu dostupne ale aspon nieco hlbsie a popripade aj pravdepodobny odhad ako taka sluzba moze fungovat. A dalsie, web servery (blanace loading, konfiguracie), servre na prekodovanie uploadovaneho videa, ako funguje administracia takeho kolosu (rozhranie, problemy atd.). A nemusia to byt cisto len informacie vydolovane z Fb ale aj moznosti ako sa taka sluzba da riesit (ak neni jasna informacia ako to ma Fb vyriesene).

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.