eBay, Java a škálovatelnost
Jak to vypadá, když se za pomocí J2EE vytváří webová aplikace, jejíž databáze obsahuje přes dva petabajty dat (peta = 10245) a jejíž dvě stě milionů registrovaných uživatelů jejím prostřednictvím v kterýkoli čas nabízí okolo sta miliónů položek?
Architektura eBay
- na nejhrubší úrovni rozděleno na databázovou vrstvu, aplikační vstvu, vyhledávací systém a operations
- Aplikační vrstva:
- nedrží stav (tedy žádné sessions, natož stateful session beans)
- schválně jsem se podíval na HTTP hlavičky, zaujala mě cookie jménem “nonsession”
- schválně jsem se podíval na HTTP hlavičky, zaujala mě cookie jménem “nonsession”
- asi 100 funkčních celků, v terminologii eBay “apps” (někdo by možná řekl “business services”), dohromady to dělá cca 15,000 serverů
- aplikační servery spolu nekomunikují, běží nezávisle na sobě (což lze snadno díky předchozímu bodu)
- nedrží stav (tedy žádné sessions, natož stateful session beans)
- Databázová vrstva:
- rozdělena vertikálně na něco přes 70 funkčních celků (databází). Ty jsou dále řezány horizontálně podle hlavního klíče pro daný logický celek
- většina náročných obvykle databázových operací se provádí na aplikační vrstvě; zmiňují se joiny, kontrola referenční integrity, třídění. Nepěstují se žádné uložené procedury (sem tam nějaký jednoduchý trigger)
- eBay nepoužívá transakce (tedy kromě PayPalu, který pod eBay taky patří)
- v praxi to znamená, že je vymezena skupina životně důležitých dat, které musí být vždy v konzistentním stavu, u ostatních se garantuje pouze “best effort”
Kdy se hodí Java?
Zajímavé jsou použité technologie: J2EE (konkrétně WebSphere) a Oracle, čímž se eBay výraně odlišuje od různých Flickrů a podobné havěti. Co mají ale tyto weby s eBay společné, jsou architektonické patterny, které se na hony vzdalují představě správné J2EE aplikace z dob EJB2.0. Ale na tom samozřejmě není nic divného.
Proč tedy v eBay Javu vůbec používají?
Dan Pritchett ve své prezentaci z roku 2006 píše: “[we] rewrote the entire application in J2EE … which gave us chance to architect the code for reuse and separation of duties”. A co si tak vzpomínám, to byl možná hlavní důvod, proč jsem se kdysi dávno po nějakých pěti letech s Perlem a PHP pouštěl do psaní webových aplikací v Javě.
Odkazy
Nejsem programátor, nevidím do toho, ale s ebayem pracuju. Nemohu tvrdit, že by mne ebay ozářil rychlostí a reakčností. Tím netvrdím, že za to může použití javy, ale také může.