Facebook beží stále na PHP a MySQL

Jeden z najväčšich webov súčasnosti (jún 2010) (ak nie najväčší) - Facebook, je založený, a stále beží na open-source-ovej platforme skriptovacieho jazyka PHP, databázy MySQL a webovom (HTTP) servri Apache.

Mnohí priaznivci a fanúškovia, hlavne webových a databázových technológií od firmy Microsoft veľmi radi artikulujú názor, že PHP, MySQL a Apache sú dobré akurát tak na malé riešenia. Čím myslia hlavne web, na ktorý pristupujú radovo desiatky, či stovky užívateľov.
Podľa nich, ak chceme riešiť "veľké" projekty, musíme použiť výhradne produkty od Microsoft-u (MS SQL Server, IIS a platformu .NET na webové aplikácie). Tí otvorenejší z nich, opatrne prípúšťajú aj iné komerčné riešenia. Ale použiť open-source-ové platformy na veľké projekty je vraj nereálne, nerozumné a výsledný neúspech projektu je vraj istý.
Facebook a ním použité technológie a prístup dokazuje, že správne zvolené open-source-ové riešenie nie je o nič nevhodnejšie na akýkoľvek veľký projekt ako iné top komerčné riešenia, za ktoré ich výrobcovia (a rôzni díleri, či konzultanti) požadujú mastné poplatky.

Takže späť ku Facebook-u.
V minulom roku (2009) sa celý Facebook skladal približne z 30-tich tisíc serverov. Užívatelia Facebook-u zobrazia každý mesiac vyše 550 miliard stránok. Na Facebook doposiaľ nahrali užívatelia viac fotografií než je na všetkých ostatných internetových fotogalériach dokopy (včítane mega galérie Flickr), a každý mesiac užívatelia nahrajú ďalšie 3 miliardy fotografií a obrázkov. Každú sekundu Facebook nejakým spôsobom spracuje vyše milióna obrázkov a fotografií. Každý mesiac je na Facebook-u zdieľaných viac ako 25 miliard položiek (statusy, profily, walls, komentáre, ...). Takže aký väčší projekt si možno ešte predstaviť?

Facebook je postavený na známej kombinácii LAMP (Linux ako operačný systém, Apache ako webový HTTP server, MySQL ako databáza a databázový engine a PHP ako jazyk, v ktorom sú napísané aplikácie a obslužné funkcie). Táto kombinácia na Facebook-u je stále aktuálna. Aj keď táto technológia nie je jediná. Vzhľadom na svoju veľkosť, návštevnosť a prevádzku vývojári Facebook-u pridali ďalšie technológie k tomuto spoľahlivému základu. Skúsme sa pozrieť aké sú to rozšírenia:

1.) kód aplikácií písaný v PHP jazyku je vo väčšine prekompilovaný do C++, do natívneho kódu servrov, prostredníctvom programu HipHop for PHP. Z interpretovaného jazyka PHP je teda vytvorený skompilovaný program, ktorý zvýšil rýchlosť a výkon. HipHop vyvinuli za 18 mesiacov traja (!) vývojári z Facebook-u.

2.) Facebook používa stále na svojích servroch operačný systém Linux, ktorý je však tiež optimalizovaný (hlavne pre sieťový výkon)

3.) stále sa používa databáza MySQL ako jednoduché úložisko dát (viete si predstaviť to množstvo dát pre to množstvo užívateľov?). Pokročilejšia databázová logika je presunutá do iných častí. Vývojári obmedzili prístup k datám do databáz na minimum s tým, že veľké množstvo dát je cache-ovaný systémom Memcached, ktorý beží na tisíckach servrov a sú na nich uložené terabajty dat. (Memcached používajú aj iné veľké webové servre, ktorých tisícky užívateľov potrebuje rýchlejší prístup k datám.)

4.) je použitý špeciálny systém Haystack, ktorý pomáha uchovávať a spracovávať obrovské množstvo fotografií (vyše 20 miliárd fotografií je uchovaných v štyroch rôznych rozlíšeniach, tzn.že obrázkov je vyše 80 miliárd)

5.) (šikovní) ľudkovia z Facebook-u vyvinuli aj systém BigPipe, čo je systém, ktorý obsluhuje webové dynamické stránky (tzn.stránky, ktoré vznikajú v čase, na základe aktuálnej požiadavky). Každá časť stránky na Facebook-u je tvorená samostatným modulom, ktorý vo Facebook-u nazývajú - pagelet.
Každý takýto pagelet je generovaný paralelne s inými pagelet-mi, a takýto pagelet je zobrazený aj v prípade, že iné časti (pagelety) sú akýmkoľvek spôsobom poškodené, nemôžu sa zobraziť, alebo nefungujú.

6.) ďalší open-source projekt Cassandra má za úlohu distribuovať storage systém (uchovávanie a spôsob uchovávania dát) a je mohutne využívaný pri vyhľadávaní informácií užívateľmi Facebook-u

7.) prihlasovanie do systému je riešené (posilnené) cez ďalší špeciálny systém Scribe.

8.) open-source-ová platforma Hadoop slúži na prepočítavanie a optimalizáciu prístupov k obrovskému rozsahu dát a analyzujú sa data a prístupy k nim.

9.) Facebook-om upravené riešenie Hive, vďaka ktorému je zjednodušený prístup pomocou SQL dotazov v spolupráci so systémom Hadoop. Oba riešnia Hadoop aj Hive sú na platforme open-source pod projektom Apache a používa ich množstvo ďalších služieb (napr.Yahoo, Twitter)

10.) celé riešenie Facebook používa niekoľko programovacích jazykov, v závislosti na type služby a riešení. PHP platforma je používaná pre front-end (to čo užívateľ, resp.správca systému vidí), platforma Erlang je použitá na chat-ovacie služby a niektoré ďalšie funkcionality sú naprogramované v jazyku Java a C++. Niektoré časti sú riešené na platforme Ruby.
Vývojári z Facebook-u sú autormi framework-u Thrift, ktorý má za úlohu práve spájať riešenia v týchto rôznych použitých jazykoch. Je to akýsi interfejs, cez ktorý vedia tieto jazyky komunikovať navzájom. Facebook uvoľnil toto riešenie pre svet samozrejme ako open-source.

11.) HTTP urýchľovač (accelerator) Varnish slúži ako load-balancer, rozdeľuje záťaž medzi jednotlivými webovými servrami, ktoré sú neustále dotazované miliónmi uživateľských dotazov. Je to ďalšie z open-source-ových riešení.

12.) systém Gatekeeper, ktorý umožňuje spúšťať odlišný kód pre odlišné skupiny užívateľov, nastavení. Vďaka tomuto systému je možné aktivovať vybraté časti kódov, bez toho aby tieto museli byť aktivované napr.nejakým užívateľským interfejsom, a takto sa vlastne testujú tieto bloky kódu a hľadajú sa úzke miesta v naprogramovanom kóde a algoritmoch ešte predtým, než je tento kód nasadený do reálnej prevádzky (sú to tzv.dark launches).

13.) používa sa nástroj XHProf na monitorovanie systému a zisťovanie výkonnosti takmer každej funkcie napísanej napr.v PHP jazyku

14.) Facebook používa ešte niekoľko ďalších vylepšení a rozšírení, napr.špeciálne naprogramovanú knižnicu JavaScript-ov Facebook Animation, ktorá je využívaná pri mnohých animáciách, s ktorými sa stretávame na stránkach sociálnej siete. Knižnica flvtool++, ktorá uľahčuje a zrýchluje prácu s metadátami FLV súborov (Flash-ové videá). Pre vývojárov aplikácii pre iPhone implementovali vo Facebook-u nástroj a knižnice Three20. Pre urýchlenie reakcie http servrov a zvýšenia počtu konekcií sa používa framework pre web servre Tornado napísaný v jazyku Python. Ľudkovia vo Facebook-u používajú aj množstvo ďalších open-source-ových nástrojov (väčšina vývojárskych počítačov beží na operačnom systéme Linux, namiesto Wodr-u používajú OpenOffice a namiesto Outlook-u zase Mozilla Thunderbird, atď., atď.
 
15.) celý Facebook beží z hardware-ového pohľadu prevážne na virtuálnych servroch vybudovaných v data centrách, z ktorých najväčšie je v Oregone. Jednotlivé servre je možné bezbolestne presúvať z jedného fyzického stroja na iný, robiť zálohy a klonovať jednotlivé stroje aj s celým obsahom, ktorý na nich beží.

Takže ako vidno, Facebook je veľkým priateľom open-source-ových technológií a riešení a vzhľadom na ich podarený projekt a jeho celosvetové masívne rozšírenie a použitie je oprávnené tvrdiť, že autori a prevádzkovatelia Facebook-u vedia čo robia.

3 komentárov:

eMDi povedal(a)...

pekne napisane a vrelo suhlasim ... meteo.sk sice nedosahuje taku navstevnost (len cca 40 000 - 50 000 UIP denne, bezi na dvoch strojoch (sync + pre istotu ...) a v pohode zvlada (samozrejme bezim na linuxe aj doma a aj v praci ;) )

Anonymný povedal(a)...

ty kokso, tie čísla, štatistiky o tom FB, to je fakt pravda? Veď sú to neskutočné čísla.

Anonymný povedal(a)...

no je vidět, že to jsou pěkný patlalové...

Zverejnenie komentára

 
Copyright © DownloadingBirds