nav line

Jak uplatnit principy třívrstvé architektury v rámci web integračního projektu

Třívrstvá architektura je jedním ze základních paradigmatů softwarového vývoje. Tento návrhový vzor je možné s výhodou použít u webintegračních projektů jako základ celkové architektury řešení.

V posledních projektech pro české finanční instituce jsem se několikrát setkal s problémem „sněhové koule“. Webové projekty, často realizované několik let, se proměnily na „molochy“, které z pohledu softwarové architektury přinášejí zásadní problémy. Vzhledem k nesprávné softwarové architektuře je velice těžké oddělit kompetence jednotlivých dodavatelů a provádět flexibilní dílčí změny v řešení. Často pak také dochází k totální závislosti na dodavateli a jeho znalostech i v obchodně klíčových procesech.

V tomto článku se tak snažím nastínit řešení minimalizující tyto neduhy za využití známých principů třívrstvé architektury.

Třívrstvá architektura (three-tier architecture) je softwarová architektura, která odděluje prezentační vrstvu, vrstvu funkční/procesní logiky a datového úložiště. Jednotlivé vrstvy plní samostatné úkoly a je možné je vyvíjet, udržovat a měnit nezávisle, za předpokladu zachování neměnného (zpětné kompatibilního) rozhraní mezi jednotlivými vrstvami.

  • Prezentační vrstva – neboli vrstva uživatelského rozhraní je odpovědná za interakci s obsluhou – sběr informací a naopak jejich zobrazení v uživatelsky čitelné a přívětivé podobě.
  • Vrstva „business“ logiky – je odpovědná za přenos informací mezi prezentační a datovou vrstvou a to včetně začlenění potřebné rozhodovací logiky nebo transformací předávaných dat (výpočty, agregace informací z více datových zdrojů atp).
  • Datová vrstva implementuje persistentní úložiště dat typicky za využití relační (RDBMS) nebo jiného typu databáze (NoSQL).

Princip přináší některé zásadní výhody:

  1. Možnost nezávislé správy jednotlivých vrstev. Při zachování integračních vazeb je možné provádět i zásadní změny v jednotlivých vrstvách bez nutnosti zásahu do vrstev dalších.
  2. Sizing jednotlivých vrstev je možné uzpůsobit požadavkům na jejich výkonnost bez ohledu na vrstvy další.
  3. Bezpečnostní nastavení jednotlivých vrstev lze přizpůsobit jejich použití a požadavkům na ně.
  4. Správné rozdělení jednotlivých vrstev umožnuje oddělit znalosti nutné pro jejich správu a alokovat na ně vhodné zdroje bez zbytečných překryvů a s ohledem na složitost jednotlivých vrstev.
  5. Jasné oddělení kompetencí v případě zapojení více dodavatelů. Jednotlivé vrstvy a rozhraní mezi nimi lze s výhodou využít jako hranice kompetencí mezi dodavateli jednotlivých částí řešení.

Adaptace třívrstvé architektury na potřeby web integračního projektu

Web integrační projekt (nejčastěji firemní portál) má svá specifika, kterým je potřeba přizpůsobit i celkovou architekturu takového řešení. S výhodou lze využít principů třívrstvé architektury aplikované na abstraktní úroveň nutnou pro modelování celého řešení.

Schéma třívrstvé architektury u webintegračního projektu

Ze schématu je patrné, že z hlediska abstrakce je postoupeno na vyšší úroveň, kdy základní prvek je systém (jako příklad uvedeno CRM a ERP). Ten poskytuje potřebnou funkcionalitu svému okolí. Sám může být opět třívrstvý.

Schéma také naznačuje rostoucí složitost jednotlivých vrstev směrem „dolů“ a rostoucí nároky na výkonnost (ve smyslu obslouženého počtu požadavků) a flexibilitu směrem „nahoru“.

Zmíněno je také typické rozložení jednotlivých vrstev architektury v rámci síťové infrastruktury vlastníka projektu.

Prezentační vrstva

Prezentační vrstva je v rámci webintegračního projektu rozsáhlá a zahrnuje jak uživatelskou interakci na různých cílových zařízeních (Vícekanálový – multichannel přístup), tak i nástroje pro správu této vrstvy - systém pro správu obsahu (Content Management Systems - CMS), vhodnou portálovou platformu, sloužící jako základ pro vývoj specifické funkcionality. Tato vrstva je klíčová z pohledu role webového integrátora.

Prezentační vrstva tedy zahrnuje:

  • Vhodnou informační architekturu reflektující cíle portálu.
  • Uživatelské rozhraní optimalizované pro určené verze cílových zařízení a prohlížečů a kontext jejich použití. Nejčastěji samozřejmě v podobě výstupního HTML/CSS/JavaScript kódu. Nutné je v konkrétních případech zvážit i využití jiných technologií – například nativních aplikací pro mobilní, dotyková, desktopová nebo jiná zařízení.
  • Podporu uživatelské interakce v podobě vkládání dat a jejich zobrazování.
  • Rozhraní umožňující další integraci ve strukturované podobě – různé formy XML výstupů/feedů (RSS, RSS 2.0, Google Sitemap apod.), webových služeb (SOAP, REST) nebo aplikačního rozhraní (API).
  • Nástroje pro měření chování uživatelů.
  • Platformu poskytující dostatečné funkce pro sestavení řešení a vývoj specifické funkcionality.
  • Nástroj pro pohodlnou správu struktury a obsahu s přihlédnutím ke specifikům konkrétního projektu – CMS.
  • Prostředky pro zajištění dostatečné výkonnosti celého řešení vzhledem k očekávané návštěvnosti.
  • Bezpečnostní prvky a opatření zajišťující fungování projektu v prostředí internetu.
  • Specifickou funkcionalitu bez provázání na interní systémy vlastníka portálu. Jedná se o drobné, nezávislé funkční celky (moduly) doplňující vlastnosti portálu.
  • Funkcionalitu z hlediska SEO a dalších on-line marketingových aktivit.

Do prezentační vrstvy jednoznačně nepatří veškeré datové transformace s dopadem na interní systémy zadavatele, které bezprostředně souvisí s obchodními aktivitami vlastníka portálu a obsahující netriviální business logiku a know-how. Tyto je nutné oddělit do vrstvy business logiky.

Prezentační vrstva je typicky implementována dle návrhového vzoru MVC (Model-View-Controller) a jeho odvozenin s tím, že místo přímé vazby na datový model se napojuje na business vrstvu zpřístupněnou prostřednictvím servisních komponent tvořící servisní model aplikace.

Prezentační vrstva se také velice často realizuje externě. Je proto nutné jasně stanovit bezpečnostní pravidla, odpovědnosti a zejména zamezit ztrátě know-how v případě nevhodného vyvedení business logiky k externímu partnerovi, bez zajištění sdílení znalostí nebo jasného exit plánu.

Vrstva business logiky

Tato vrstva je klíčová z pohledu transformace dat mezi prezentační a datovou vrstvou. Zde by měla být zvolena silná platforma umožňující sběr, transformaci a následnou distribuci informací oběma směry. Tato vrstva je klíčová z pohledu role systémového integrátora.

Z pohledu webové integrace by měla business vrstva obsahovat:

  • Odstínění prezentační vrstvy od datové vrstvy.
  • Jasně definované a zdokumentované rozhraní (typicky ve formě webových služeb nebo v případě jedné aplikační technologii tříd rozhraní). Tyto formy (byť s obměnou pro konkrétní užití) rozhraní je možné využít jak pro webovou prezentační vrstvu, tak i pro jiné formy klientských zařízení (mobilní nativní aplikace, specializovaný HW) a komunikačních kanálů.
  • Úložiště sdílených informací v rámci jednotlivých systémů z datové vrstvy a kanálů z prezentační vrstvy.
  • Dočasné úložiště informací, které je nutné pro využití v prezentační vrstvě a technicky nelze zajistit jejich dostupnost přímo z datové vrstvy.

Vrstva business logiky je klíčová z hlediska držení interního know-how. Měla by být silně analyticky podchycena na straně vlastníka, včetně důkladné dokumentace a zastupitelnosti. Vyvádění know-how mimo firmu by se mělo minimalizovat nebo důkladně smluvně ošetřit, včetně exit plánu.

Vrstva datová

Vrstva jádrových systémů, které zajišťují cílové uložení informací a zajišťují další práci s nimi. Tato vrstva bývá často velice heterogenní s problematickou vzájemnou návazností některých částí (systémů). Pro snížení počtu integračních vazeb se využívá business vrstva, která tak umožňuje provázání interního systému pouze na jeden další uzel. Datová vrstva je klíčová pro vendory interních systémů, jejich implementátora a systémové integrátory.

Datová vrstva by tedy měla obsahovat:

  • Interní systémy s primárními daty (produktové katalogy, business parametry, dokumenty apod.), případně cílová úložiště pro některé typy entit (uživatel, objednávka, faktura apod.).
  • Specializovaná interní datová úložiště.
  • Vybrané externí systémy zapojené do základních obchodních aktivit.
  • Specializované reportovací nástroje, pracující v rámci nebo nad vybranými daty ze systémů.

Datová vrstva leží mimo přímou kompetenci webového integrátora a je typicky zajišťována specializovanými subjekty.

Přínosy pro webintegrační projekt

Výše uvedené dělení poskytuje pro webintegrační projekt několik zásadních výhod:

  1. Udržení klíčového know-how v rámci business vrstvy u vlastníka projektu a snížení jeho závislosti na dodavateli prezentační vrstvy.
  2. Jasně hranice kompetencí mezi jednotlivými dodavatelskými subjekty (ať už interními, nebo externími).
  3. Možnost flexibilně reagovat na měnící se potřeby trhu v rámci různých komunikačních kanálů prezentační vrstvy s minimalizací dopadů do „core“ systémů v datové vrstvě.
  4. Možnost zvolit adekvátní technologie a maximalizovat využití jejich potenciálu v rámci jednotlivých vrstev a to včetně provozního prostředí.
  5. Zvýšení bezpečnosti oddělením jednotlivých vrstev s jasným a zabezpečeným rozhraním.

Osobně považuji za klíčový první bod, jehož nedodržení přináší největší problémy a velká rizika pro vlastníka projektu. V praxi často nastává stav, kdy prezentační a business vrstva je spojena v jedno. Důsledkem toho stavu je vyvedení know-how a jeho postupná ztráta a to i u klíčových procesů, vysoká míra závislosti na dodavateli, problematická flexibilita změn – každé další rozšíření zvětšuje „sněhovou kouli“. Na otázku „Co se stane, když váš dodavatel zkrachuje?“ potom není odpověď. U společností, jejichž obrat je v rostoucí míře tvořen online kanálem, je nalezení odpovědi na tuto otázku klíčové z hlediska jejich vlastního přežití.

Ohodnoťte článek

Jak uplatnit principy třívrstvé architektury v rámci web integračního projektu

Související články

Vyhledávání na blogu

Webová integrace

Webová integrace jako nová oblast pro business „velkých" webových agentur.

o webové integraci

Profily blogujících