14. září 2009

Distribuované transakce bez JEE kontejneru

Dlouho dobu jsem si myslel, že pokud potřebuji řídit transakce přes více datových zdrojů, pak se nikdy neobejdu bez plnohodnotného JEE kontejneru resp. serveru.

Před pár lety jsem na projektu potřeboval propojit do jedné transakce události ze dvou datových zdrojů (databáze, souborový systém) a bez znalosti dané problematiky jsem si sám napsal jednoduchý mechanismus, který mi dokázal v 98% případů zaručit, že se uloží buď obě události a nebo žádná. Ve zbylých dvou procentech případů to nefungovalo, ale to mi z pohledu logiky aplikace moc nevadilo. Pro mě bylo důležitější, že jsem si vystačil pouze se Springem a Tomcatem, a že to celé běhalo celkem rychle.

Proč o tom píšu? Nedávno jsem si všimnul, že samotný Spring bude mít tento mechanismus zabudovaný přímo v jádře.

Já se vždy snažím vyhnout "těžkým" řešením při návrhu aplikací a zde je hezky vidět, že i distribuované transakce se dají řešit "lehkou" cestou. Je ale potřeba si předem jasně říci, co je pro nás nejdůležitější - zda 100% spolehlivost bez výjimek nebo rychlost celého transakčního systému nebo výběr technologií. Nejde bohužel splnit všechny tři kritéria najednou k plné spokojenosti, je potřeba si vybrat jedno a ostatní k tomu přizpůsobit.

Doplňující články:

Žádné komentáře: