wi-01
pátek, 15 listopad 2013 01:00

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

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

 

S problémem takzvané „sněhové koule" jsem se v posledních projektech pro české finanční instituce setkal již několikrát. Jedná se o webové projekty realizované několik let, které z pohledu softwarové architektury přinášejí zásadní problémy. Je velice těžké oddělit kompetence jednotlivých dodavatelů a provádět flexibilní dílčí změny v řešení vzhledem k nesprávné softwarové architektuře. Následně dochází často k absolutní závislosti na dodavateli a jeho znalostech i v klíčových obchodních procesech.

Za využití známých principů třívrstvé architektury, Vám v tomto článku nastíním jak lze minimalizovat tyto neduhy.

Třívrstvá architektura, je softwarová architektura, která řešení rozděluje na tři vrstev: prezentační vrstvu, vrstva funkční/procesní logiky a datová úložiště. Každá jednotlivá vrstva plní svůj úkol a je možné je vyvíjet, udržovat a měnit nezávisle na sobě, za předpokladu zachování neměnného (zpětně kompatibilního) rozhraní mezi jednotlivými vrstvami.

  • Prezentační vrstva: nebo také vrstva uživatelského rozhraní je odpovědná za interakci s obsluhou – sběr/zobrazení informací v uživatelsky čitelné a přívětivé podobě.
  • Vrstva „business“ logiky: nese odpovědnost za přenos informací mezi prezentační a datovou vrstvou, včetně začlenění potřebné rozhodovací logiky či transformací předávaných dat.
  • Datová vrstva: implementuje persistentní úložiště dat, který je typický za využití (RDBMS) nebo (NoSQL).

Tento princip také 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.
  • 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.

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 (MVP) 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í.

 

Kontakt

phone

TELEFON
+420 731 407 301 
+420 725 499 618

email EMAIL
info@web-integrator.cz
address Wi s.r.o.
Bubenská 1
170 00 Praha 7
fb google-plus s-firmy