pondělí 28. května 2007

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...