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

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, která má nyní 500 milionů uživatelů. Nynější šéf Facebooku navíc při jednom z nedávných rozhovorů prozradil několik zajímavých faktů. Firma 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.


Uveřejněno

v

od

Značky:

Komentáře

4 komentáře: „Jaký software potřebuje Facebook, aby zvládl půl miliardy uživatelů?“

  1. […] This post was mentioned on Twitter by Active24.cz, Lukáš Przeczek. Lukáš Przeczek said: RT @active24cz: Jaký software potřebuje Facebook, aby zvládl půl miliardy uživatelů? http://digs.by/9IDI4Q […]

  2. Delta73 avatar
    Delta73

    Osobne si myslim, ze daleko na vyssej urovni je myspace a i u nas Azet.sk. Facebook je boom, a som zvedavyy, ako dopadne po vstupe na burzu.
    http://www.fm.site90.com/

  3. sliva avatar
    sliva

    Je zajmavé sledovat vývoj dnešních sociílních sítí jak Facebooku Twitteru či český obdob typu Lide.cz….. Uvidíme jak dlouho uživatelé udrží tato Facebook a Twitter než příde něco nového a neokoukaného.

  4. Tomáš Kuzár avatar

    Internetovi giganti su technologicky ozaj obdivuhodne ukazy. Staci sa pozriet slajdy, kde FB predstavuje casti svojej architektury.