Teorie a praxe v J2EE světě
Připadá vám J2EE stack jako složitá technologie? Mě tedy ano a vždycky to vysvětluji tím, že se jedná o technologii, která byla navržena k řešení opravdu enterprise výzev jako scalability, fail over apod. Prostě ty EJB mají svůj důvod, stejně jako distribuované transakce a nebo RMI. Každá aplikace přece potřebuje nějak řídit transakce, mít nějaký managovatelný komponentový model a taky možnost vzdáleného volání, které se jeví jako lokální. Pokud máte podobnými poučkami vypláchnutý mozek z chytrých knih a tutoriálu, pak je možná trocha praktického vystřízlivění.
Předem, většina výše zmíněných technologií má v J2EE stacku svoje místo o tom netřeba diskutovat. Bohužel praxe občas ukazuje, že některé z těchto technologií se v praxi ukázaly jako překonané. Připadá vám eBay jako dostatečně referenční materiál o tom, jaká technologie z J2EE stacku jsou opravdu použitelné pro ty největší aplikace? Pokud se vám eBay nezdá referenční, tak přidávám pár údajů z jejího provozu.
- denně obslouží 1 miliardu page view
- 26, slovy dvacet šest, miliard vykonaných SQL za den
- 3 miliardy volání API na měsíc
Teď je na řadě otázka, jaké technologie z J2EE stacku by jste zvolili, kdybyste byli hypoteticky architekty eBay. Udělejte si malý soukromý seznam…
Máte ho? Tak dobře budeme odmazávat podle toho co v eBay nepoužívají. Já bych určitě na prvním místě tipoval JTA a především distribuované transakce. Špatně, nic takového v eBeay nepoužívají, většina DB operací jede v auto-comit módu! Pak bych použil EJB, přece jenom jim to musí řádně škálovat a to určitě na úrovni každého volání API. Opět špatně. Můžete klidně tipovat dál a svoje výsledky si můžete porovnat s prezentací o architektuře eBay od Dana Pritchetta z eBay.
Celkově vzato, jediná J2EE technolohgie zmíněná v této prezentaci jsou Servlety. Ač to není přímo zmíněno, tak bych hádal ještě JMS, JMX a možná JCA. Ta prezentace je opravdu velice zajímavá, protože se málokdy podaří nahlédnout pod pokličku architektury jiných aplikací, než které tvoříte. Ještě pár odrážek, které mě zaujaly.
- celá aplikace je kompletně stateless
- práce náročná na CPU je přesunuta z databáze na aplikaci (referenční integrity, joiny, řazení)
- výstupním formátem business logiky je XML, které se XSL transformacemi žene ven jako HTML
- vlastní OR nástroj
Pokud jste si výše zmíněnou prezentaci prošli, pak možná nevěříte vlastním očím. Tahle prezentace totiž vyvrací většinu toho co si můžete přečíst v chytrých knížkách o J2EE. V podstatě tu jsou dvě možnosti, buďto je z J2EE něco v nepořádku a nebo je eBay tak atypickým projektem, že tam i J2EE se svými možnostmi selhává. Odpověď nechávám na ctihodném čtenáři…
Související články
Související epizody CZ Podcastu
- #261 · Leadership
O vedení lidí a týmů.
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.
- #1 · Vývojová prostředí v Javě
První díl CZ Podcastu se věnuje vývojovým prostředím pro Javu.