Erl, Thomas: SOA – Kompletní průvodce

Originální titul: Service-Oriented Architecture: Concepts, technology and design
Jazyk: čeština
Rok vydání: 2009
ISBN: 978-80-251-1886-3
Autor: Thomas Erl (nar. 1967), kanadský autor, specializující se na rozvoj a šíření architektonického konceptu servisně orientované architektury software (SOA).

SOA je propagována jako platforma schopná způsobit převrat v podnikových prostředích pomocí webových služeb, a podpořit tak sdružování, pružnost a meziplatformovou harmonii. Kniha prozkoumává klíčové části tohoto konceptu: principy servisní orientace, webové služby (technologie, specifikace a návrh) coby současný prostředek SOA, servisně orientovanou analýzu, návrh SOA včetně tvorby specializovaných vrstev se službami atd.

Základy SOA a webových služeb

Servisní orientace. Představuje ideální vizi, univerzální model, založený na oddělení řídicí a automatizační logiky (= aplikační technologie, která ji automatizuje). To znamená, že logiku nezbytnou pro řešení nějakého problému lze lépe vytvořit, uskutečnit a řídit, pokud ji rozdělíme na kolekci menších vzájemně souvisejících částí. Každá z těchto částí souvisí s nějakým zájmem nebo určitou částí problému. SOA podporuje, aby jednotlivé jednotky logiky (= služby) existovaly autonomně, ale přitom nebyly od sebe izolovány. Tím chce mj. vyjít vstříc sílícím požadavkům na multiplatformní integraci.

Klíčové principy servisní orientace:

  • Volná vazba – služby udržují vazby s minimem závislostí, které vyžadují pouze to, aby si služby sebe vzájemně uvědomovaly. Čím menší je závislost mezi řídicí logikou a aplikační technologií, která ji automatizuje, tím méně dopadů při změnách v kterémkoliv z těchto prostředí. Systémy získávají lepší schopnost reagovat na změny. SOA může zavést abstrakci řídicí logiky a technologie, což vede k volné vazbě mezi těmito doménami.
  • Kontrakt služeb – dohoda na komunikaci, popis služby obsahuje všechny informace potřebné pro komunikaci s danou službou.
  • Samospráva – služby mají kontrolu nad logikou, kterou zapouzdřují. Služby jsou autonomní díky samosprávě už na úrovni výměny zpráv (= zprávy, které si služby vyměňují, jsou natolik inteligentní, aby kontrolovaly způsob svého zpracování přijímající službou, jakmile služba odešle zprávu, ztrácí nad ní kontrolu).
  • Abstrakce – kromě toho, co je popsáno v dohodě služby, zůstávají ostatní logika a implementační detaily skryty. Aplikační logiku lze abstrahovat pomocí vyhrazené vrstvy služeb, zůstává tak pouze funkcionalita nabízená rozhraními služeb.
  • Znovupoužitelnost – možnost opětovného použití služeb i mimo projekt, v rámci kterého je řešení implementováno. Dobrý architektonický návrh je proto nezbytností.
  • Kompozice – díky modulárnímu charakteru lze kolekce služeb uspořádat a složit, aby vytvořily spojené služby. Princip skládání nezávislých komponent/služeb je zásadní zejména s narůstající komplexitou systémů.
  • Bezstavovost – služby minimalizují množství uchovávané informace určené pro nějakou aktivitu. Tento princip přispívá k větší škálovatelnosti (rozšiřitelnosti) systému do budoucna, protože komponenty, které neevidují svůj stav, lze bez jakýchkoliv inicializačních požadavků využít i jinde.
  • Zjistitelnost – služby jsou navrženy tak, aby byly navenek popisné, vyhledatelné.

Implementační platforma pro SOA. SOA a servisní orientace jsou vzory nezávislé na implementaci, které lze realizovat na různých technologických platformách. Současná SOA je však chápána jako architektura, která podporuje servisní orientaci za použití webových služeb (tzv. prvotní model SOA).

Standardizace výměny dat. Pravděpodobně nejvýraznější vlastností webových služeb jsou otevřené standardy pro výměnu dat – zpráva odeslaná z jedné webové služby do druhé cestuje prostřednictvím sady protokolů, které jsou obecnými standardy. Navíc sama zpráva je standardizována svým formátem i  působem popisu vlastního obsahu – SOAP, WSDL, XML, XML Schema. Standard pro komunikaci = možnost komunikace i mezi rozdílnými platformami.

SOAP (Simple Object Access Protocol – standardní formát zpráv, protokol pro výměnu zpráv). Každá zpráva SOAP je zabalena do obalu (tzv. obálka), který odpovídá za uchování všech částí zprávy – hlavička s metadaty, tělo s obsahem zprávy (formátovaná data XML). Úpravy na úrovni komunikace služeb obecně se dějí v SOAP, úpravy na úrovni komunikace konkrétní služby se dějí v rámci WSDL.

Kontrakt služby. Sada podmínek (v podobě dokumentů, metadat, …), které musí splnit a přijmout potenciální žadatel služby. Zahrnuje popis služby (WSDL), který v sobě zahrnuje popis struktury příchozích a odchozích zpráv jednotlivých metod služby (XSD).

WSDL (Web Service Description Language – standardní jazyk pro popis služeb). Každý žadatel služeb používá definici WSDL od poskytovatele služby, aby se ujistil, že odeslané zprávy budou přijaty a pochopeny (tj. odpovídá definice koncového rozhraní – jak službu volat, jaká data vrací atd.). Definice WSDL obvykle zahrnují schémata XSD.

  • XSD (XML Schema – standardní jazyk pro popis struktury XML dokumentu). XSD je zde jako předpis pro data, která se pomocí služby budou předávat, tedy vztah třída-instance.
  • XML (Extensible Markup Language – standardní jazyk/formát pro reprezentaci dat). Dokumenty XML předávané mezi aplikacemi zcela standardizují formát a obsah všech komunikačních dat. Výsledkem je předvídatelná, snadno rozšiřitelná komunikační síť. XML vylepšuje čitelnost dat pro návrháře, analytiky a programátory, data zpráv tak lze lépe udržovat.

Servisní orientace a objektová orientace. Servisní orientace (SO) = zaměření na služby, objektová orientace (OO) = zaměření na objekt.

SOA a rozšíření WS-*

Aktivita služeb. Dle specifikace SOA se aktivitou myslí reprezentace úlohy, která má být provedena prostřednictvím interakce mezi skupinou služeb. Neboli provedení kolekce služeb pro splnění úlohy (podle mě odpovídá procesu?). Specifikace: WS-Coordination.

Orchestrace. Centrální logika zpracování (avšak rozšiřitelná a komponovatelná), řídí jednotlivé požadavky na zpracování a příslušné prostředky, účastníky, události, řídicí pravidla a aktivity. Běžnou implementací orchestrace je model hub-and-spoke (hvězdicová topologie s centrálním hubem). Hlavní specifikací, která standardizuje orchestraci, je jazyk WS-BPEL.

Choreografie. Jedná se o model komunikace/spolupráce mezi podniky (orchestraci, kterou vlastní více entit). Používá se tedy za účelem spolupráce služeb různých poskytovatelů služeb. Je navržen tak, aby umožnil společnostem spolupracovat v prostředí, které nevlastní ani jeden z partnerů. Specifikace: WS-Choreography (WS-CDL).

Korelace. Při volném spojení a bezstavovosti služeb v rámci SOA je potřebný mechanismus pro sjednocení zpráv vyměňovaných v rámci běžné komunikace (dokonce ani základní výměna dotaz-odpověď neposkytuje vestavěné prostředky pro automatické spojení odpovědi s původní žádostí). Korelací se zavádí do vzájemně souvisejících zpráv identifikace (zpravidla do hlavičky SOAP), čímž umožňuje jejich provázání přímo na úrovni zpráv, služby se tak o toto starat nemusejí. Specifikace: WS-Addressing (hlavičky SOAP).

Pět běžných požadavků na zabezpečení:

  • Identifikace – tvrzení o identitě (identifikační informace v hlavičce SOAP),
  • Autentizace – důkaz/prokázání identity (původ zprávy, ověření, zda odesílatel odpovídá identitě),
  • Autorizace – rozhodnutí o oprávněních (co všechno smí odesílatel zprávy dělat),
  • Důvěrnost – ochrana obsahu zpráv před neautorizovaným přístupem (nikdo neautorizovaný neprohlížel zprávu během přenosu),
  • Integrita – neporušenost obsahu zprávy (nikdo nezměnil zprávu během přenosu). Specifikace: WS-Security (+ dodatečné specifikace).

Koncept Single Sign-On (SSO). Protože služby jsou autonomní, na sobě nezávislé, žadatel by se musel autentizovat s každou další žádostí. Centralizované zabezpečení umožňuje, aby se žadatel služby autentizoval pouze jedenkrát a informace kontextu zabezpečení byly sdíleny i s jinými službami, ke kterým může přistupovat (je autorizován).

Ochrana obsahu zpráv při přenosu i přijetí.

  • Zabezpečení na úrovni přenosu. SSL (Secure Socket Layer) je oblíbený prostředek zabezpečení kanálu HTTP, po němž se přenáší zprávy. Ve webových službách lze takto chránit zprávu jen během přenosu mezi koncovými body služeb, zprostředkující služba by tak mohla zasáhnout do obsahu zpráv.
  • Zabezpečení na úrovni samotné zprávy. To představují šifrování a digitální podpisy. XML-Encryption, rozšíření WS-Security, poskytuje funkce pro šifrování celé zprávy nebo jejích vybraných částí. Rozšíření XML-Signature umožňuje k XML dokumentům přidávat zvláštní kus informace, která reprezentuje digitální podpis (svázaný s obsahem dokumentu = ověření podpisu na příjmu je možné pouze nad nezměněným obsahem zprávy). Digitální podpis navíc podporuje koncept nepopiratelnosti (důkaz, že zpráva byla odeslána určitým žadatelem a přijata určitým poskytovatelem služby).

Servisně orientovaná analýza

Ekosystém SOA neboli servisně orientované prostředí. Představuje logickou doménu podniku, na kterou jsou aplikovány principy servisní orientace, může obsahovat řídicí procesy i technologii, která je automatizuje. Servisně orientovaná analýza je dílčím procesem celého životního cyklu zavádění SOA.

Cíle servisně orientované analýzy. Hlavní úkol: najít způsob, jak reprezentovat požadavky na automatizaci řízení prostřednictvím servisní orientace, tj. jaké služby bychom měli vytvořit a jakou logiku zapouzdřovat do každé z nich? Cíle analýzy jsou následující:

  • Definovat podnikové požadavky.
  • Identifikovat systémy automatizace (jak služby souvisí se stávajícími systémy, to je řešeno ve fázi servisně orientovaného návrhu).
  • Dekomponovat obchodní proces na sérii jednotlivých kroků (viz dále bod odvození kandidátů řídicích služeb).
  • Abstrahovat instrumentační (orchestrační) logiku, pokud se vytváří instrumentační vrstva (mezi typy logik vhodných pro tuto vrstvu patří podniková pravidla, logika podmínek, logika výjimek, logika sekvencí).
  • Identifikovat předběžnou sadu kandidátů na servisní operace, ideálně dle principů SOA, tj. s respektem vůči zásadám znovupoužitelnosti, autonomie, bezstavovosti, zjistitelnosti.
  • Seskupit kandidáty na operace služeb do logických kontextů (kandidátské kompozice služeb).
  • Definovat předběžné hranice služeb (musí být explicitní).
  • Identifikovat zapouzdřenou znovupoužitelnou logiku (pomocí modelu).
  • Zabezpečit, aby kontext zapouzdření byl shodný pro zamýšlené použití.
  • Identifikovat předběžné problémy, které mohou narušit autonomii služeb.
  • Definovat libovolné známé předběžné vzory kompozice.
  • Odvození kandidátů služeb řízení, ideálně do samostatné vrstvy (abstrakce domény řídicí a aplikační logiky umožní nezávislý vývoj).
  • Identifikovat kandidáty aplikačních služeb, kandidáty kompozic služeb, seskupení operací aplikačních služeb.

Odvození služeb řízení pomocí modelu BPM (Business Process Management). S příchodem BPM se modely procesů staly centrálním typem dokumentace analýzy řízení, služby řízení pak lze odvodit z logiky průběhu práce procesu. Odtud lze získat služby řízení vztahující se k určité úloze v kontextu procesu. Str. 318-322.

Odvození služeb řízení pomocí modelu entit. Služby vztahující se k entitě zobrazují model entit s obecnými operacemi, které plní různé typy funkcí spojených se zpracováním entity. Vzájemné vztahy entit = komunikace mezi různými typy služeb. Odtud lze získat služby vztahující se k entitě, tedy obecnější služby, vysoce znovupoužitelné různými řídicími procesy.

Modelování služeb. Klíčová je důkladná znalost logiky celkového obchodního procesu organizace. Pravidla pro modelování služeb (str. 342-348):

  • Vzít v úvahu potenciální meziprocesní a vnitroprocesní znovupoužitelnost kandidátů úlohově zaměřených služeb.
  • Zapracovat závislosti, jež svazují logiku s aktuálním procesem nebo s její pozicí v tomto procesu.
  • Modelovat pro meziaplikační použití (kandidáty aplikačních služeb).
  • Identifikovat logické jednotky práce s očekávanými hranicemi (princip autonomie = zlaté pravidlo modelování služeb).
  • Zamezit prokluzování logické hranice (kontrolou stávajících služeb, zda už požadovanou logiku nezahrnují, udržováním a dodržováním standardů atp.).

Model SOE (Services-oriented Enterprise). Servisně orientovaný pohled na podnik je definovaný stavebními bloky, které kategorizují odlišné jednotky logiky pro účely modelování i návrhu. Základní modelovací stavební bloky (kategorie): Aktivita, Služba, Proces. Str. 350.

Máte co říct k této knize? Vyjádřete se v diskusi, komentujte příspěvek.