Hlavní navigace

Jaký software potřebuje Facebook, aby zvládl půl miliardy uživatelů?

[Tisková zpráva] 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 očekává v červenci 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 25 miliard jednotek obsahu (status zprávy, komentáře a další) je sdíleno každý měsíc.

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ý pamětní 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ů s desítkami terabajtů uložených („kešovaných“) dat v každém okamžiku. 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.

Zdroj: Blog společnosti ACTIVE 24 www.hosting.cz

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

DigiZone.cz: Kanál TA3 HD zahájil vysílání

Kanál TA3 HD zahájil vysílání

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Sleva na dítě a manželku pro OSVČ je zpět. Ale..

Sleva na dítě a manželku pro OSVČ je zpět. Ale..

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

120na80.cz: Stoná vaše dítě často? Upravte mu jídelníček

Stoná vaše dítě často? Upravte mu jídelníček

Podnikatel.cz: Alza.cz má StreetShop. Mall.cz více výdejních míst

Alza.cz má StreetShop. Mall.cz více výdejních míst

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Root.cz: Telegram spustil anonymní blog Telegraph

Telegram spustil anonymní blog Telegraph

Vitalia.cz: Nahradí sluch, ale zvuk je zcela jiný

Nahradí sluch, ale zvuk je zcela jiný