Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Přednáška pro PDI 8. prosince 2015 Marek Rychlý Přednáška pro PDI, 8. prosince 2015 1 / 32
Obsah 1 Cesta k ESB Problémy accidental architecture 2 Marek Rychlý Přednáška pro PDI, 8. prosince 2015 2 / 32
Problémy accidental architecture Sběrnice pro rozsáhlou decentralizovanou integraci aplikací. (propojení rozhraní autonomních systémů různých formátů, technologií a lokací) Pro asynchronní komunikaci pomocí zasílání zpráv. (představuje tzv. Message-oriented Middleware, MOM) Pro implementaci páteře SOA architektury. (respektuje principy SOA, tj. volnou vazbu, standardizaci, znovupoužitelost, atd.) Postavená na standardech komunikace a integrace komponent. (JMS, JCA, JBI, WS-*, SOAP, WSDL, XML, XSLT, XPath, XRef, XQuery,... ) Implementovaná mnoha způsoby v mnoha produktech. (Windows Azure SB, Oracle ESB, JBoss ESB, Mule ESB, Spring Integration,... ) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 4 / 32
Proč ESB? Cesta k ESB Problémy accidental architecture Globální podniky/organizace chtějí/musí integrovat lokální systémy. Postupná integrace zavedených řešení vede k accidental architecture. Přenos dat z jedné komponenty na druhou řešen hromadně a dávkově. (typicky automaticky jednou denně, nebo dokonce manuálně přes CSV atp.) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 5 / 32
Problémy accidental architecture Problémy accidental architecture : Mnoho rozhraní Postupná integrace vyžaduje tvorbu nových rozhraní a spojení. (napojení apl. C na A zn. zachování původních rozhraní A a přidání nového C-A) Nejhorší případ (každý s každým) pro n apl. je n(n 1)=2 spojení. (pro 5 apl. je to 10 spojení, pro 13 je to 78, ale pro 100 už 4.950 spojení) Velký počet rozhraní zvyšuje náklady na jejich údržbu i riziko selhání. (problém závislostí např. při zavedení nové verze apl., bezpečnosti, atd.) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 6 / 32
Problémy accidental architecture Problémy accidental architecture : ETL integrace (I) Populární integrace pomocí Extract, Transform, & Load (ETL) via FTP. (apl. S periodicky exportuje do souboru, který si přes FTP stahuje a načítá apl. W) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 7 / 32
Problémy accidental architecture Problémy accidental architecture : ETL integrace (II) Zpoždění mezi integrací aplikací přes ETL může způsobit chybu. (než se propaguje změna počtu kusů na centrálním skladu z pobočky na jinou pobočku, tak tam mezitím může někdo objednat/vrátit chybějící kusy) Běžně se řeší nad-dimenzováním skladových zásob! zbytečné náklady (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 8 / 32
Problémy accidental architecture Problémy accidental arch. : Centrální hub&spoke Řešení je zavést centrální komunikační platformu/ hub. (tj. middleware, centrální server nebo sběrnici) Problém je, že centrální hub vyžaduje důvěru zúčastněných. (není možné, pokud jsou účastníci konkurenti, nebo nechtějí centralizovat data) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 9 / 32
Problémy accidental architecture Další problémy a požadavky na middleware/esb Schopnost vytvářet elektronické trhy. (e-marketplaces and vertical trading hubs) Schopnost zavést monitoring a řízení vyžadované legislativou. (např. v USA: Sarbanes-Oxley, the PATRIOT Act, and FCC regulations) Schopnost reálného monitoringu součinnosti systémů a businessu. (tzv. Business Activity Monitoring, BAM; bez měření není řízení) Eliminace zbytečného zpracování, transformace a předávání dat. (tzv. Straight-Through Processing, STP) Schopnost (postupné) integrace legacy systémů. (nelze vše zbořit a postavit znovu, je nutno integrovat postupně existující) Bezpečnost a spolehlivost. (šifrování, podepisování, zaručené doručení, transakce, selektivní autorizace, atd.) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 10 / 32
Postupný vývoj middleware k ESB ESB = best-practices v Enterprise Application Integration (EAI). ( Mater artium necessitas, tj. nouze je matka vynalézavosti ; W. Horma, 1519) Zobecňuje koncept Java Message Service (JMS) v Java EE. ( Point-to-Point Messaging queues a Publish/Subscribe Messaging domains ) Vychází z aplikačních serverů/kontejnerů hostujících komponenty. (kontejner poskytuje prostředí/standardizované rozhraní pro komponenty) Snaží se šetřit, dobře zdůvodnit a optimalizovat náklady na IT. (prasknutí internetové bubliny, ekonomická krize, outsourcing IT, atd.) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 12 / 32
JMS modely komunikace zasílání zpráv v ESB (pub-sub vs. p2p a hierachie témat v pub-sub; diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 13 / 32
ESB kontejner a jeho schopnosti Integrované systémy jsou napojeny přes ESB kontejner. (kontejner hostuje systémy jako ESB komponenty a poskytuje rozhraní k ESB) V jednom kontejneru může být provozováno současně více komponent. (tyto komponenty spolu mohou komunikovat přímo, nemusí přes ESB) (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 14 / 32
Rozhraní a obsah ESB kontejneru ESB kontejner může hostovat různé druhy komponent. (vč. speciálních komponent pro modifikaci a řízení ESB zpráv) Kontejner poskytuje komponentě různé druhy rozhraní. (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 15 / 32
ESB endpoint připojení komponenty do kontejneru ESB kontejner nabízí různé způsoby připojení hostovaných komponent (nativní JMS, HTTP&SOAP pro Web-services, různé adaptéry vč. file/db-adapters či JMS pro C++/C#/.NET) ESB však podporuje jen asynchronní komunikaci/zasílání zpráv. (synchronní komunikaci lze nasimulovat, ale je to nespolehlivé/hrozí timeout) (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 16 / 32
Napojení různých komponent/systémů na ESB (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 17 / 32
Message Oriented Middleware (MOM) ESB funguje jako MOM. (API a protokol komunikace s MOM po vzoru JMS, vizte modely komunikace na str. 13) (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 18 / 32
MOM a volná vazba rozhraní propojených komponent Komunikace zasíláním zpráv umožňuje volnou vazbu (loose coupling). (komunikující komponenta zná pouze sběrnici, nikoliv protistranu komunikace) Sběrnice zajišt uje doručení zpráv ve vhodném formátu. (kompatibilita vysílajícího a přijímacího rozhraní transformací zpráv na sběrnici) Rozhraní komponenty je nezávislé na jeho použití protistranou. (každé komponentě pak stačí pouze jedno rozhraní; tedy máme celkem n rozhraní pro n komponent, ve srovnání s n(n 1)=2 rozhraními přímé komunikace na str. 6) (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 19 / 32
Spolehlivé doručení zpráv v MOM/ESB Sběrnice využívá úložiště průchozích zpráv pro jejich spolehlivé doručení. (zpráva je uložena a doručena jedenkrát, až je příjemce připraven a podaří se to) Odesílatel se může spolehnout na jisté asynchronní doručení v ESB. (implementace/inspirace ze standardu WS-ReliableMessaging) (P2P a pub-sub komunikace; diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 20 / 32
Lokální transakce nad zprávami v MOM/ESB Spolehlivé doručení umožňuje transakční komunikaci s ESB. (transakce vždy odesílatel-esb nebo příjemce-esb, nikoliv odesílatel-příjemce) V jedné transakci lze sdružit odeslání a příjem několika zpráv. (je to skutečně transakce, tj. pro komunikovaná data platí ACID) Transakci lze provést dvoufázově, např. v kombinaci s DB operací. (tzn. do transakce lze zahrnout jiné zdroje, např. transakční databáze, ty však musí respektovat XOpen/XA two-phase-commit transaction protocol ) (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 21 / 32
Request/reply komunikace v MOM/ESB U asyn. zprávy s požadavkem odpovědi, je nutno vědět kam odpovídat. (zpráva obsahuje hlavičku replyto s adresou příjemce odpovědi) Odpověd může obdržet ten kdo se tázal, nebo i úplně někdo jiný. (lze tak zprávu skrz příjemce zpracovat a přeposlat jinam) (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 22 / 32
VETO a VETRO integrační vzory VETO = V + E + T + O Validate ověříme zda je zpráva validní, jinak odmítneme Enrich doplnění obsahu zprávy o chybějící data (např. údaje zákazníka z jeho ID, město z PSČ, atp.) Transform konverze zprávy do cílového (nebo kanonického) formátu Operate vlastní zpracování zprávy cílovou aplikací/komponentou VETRO = VETO + R Route po transformaci zprávu směrujeme ke správné aplikaci/komponentě (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 23 / 32
Validate, Enrich & Transform; Two-Step XRef Pattern Pro VET využívá ESB formát XML zpráv a nástroje pro práci s XML. (pro validaci XML Schema/Schematron, obohacení XRef a transformaci XSLT) Snaha rozdělit komponenty vykonávající více z VETRO operací. (pak je možno využít standardní komponenty pro jednotlivé operace) Two-Step XRef Pattern pro přípravu XML a jeho doplnění o data. (XML se připraví ze vstupu transformací XSLT a pak doplní pomocí XRef) (před a po aplikaci vzoru; diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 24 / 32
Směrování (routing) zpráv v ESB Podobně jako pro VET, tak i pro R ve VETRO je standardní komponenta. (např. komponenta Mediator se směrovacími pravidly, či BPEL proces s popisem orchestrace, tj. postupného volání jednotlivých služeb/komponent/aplikací ESB) Směrování na základě itineráře ve zprávě či posouzením obsahu zprávy. (tzv. Itinerary-based Routing, IBR, vs. Content-based Routing, CBR) Při IBR je možno itinerář upravovat/doplňovat při průchodu ESB. (komponenty-aplikace ESB naplánují do itineráře, co se se zprávou dále stane) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 25 / 32
Paralelní zpracování zpráv v ESB CBR a IBR může zprávu také duplikovat/rozdělit pro paralelní zpracování. (zpráva či její části jsou pak zpracovávány v rámci ESB souběžně) Paralelní zpracování (a jeho výsledky) je možno opět spojit. (opačnou operací/komponentou k split je join ) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 26 / 32
(I) Na začátku je accidental architecture. (tzn. přímá propojení aplikací; ETL s periodickou synchronizací a daty v CSV či, v lepším případě, v XML; skryté závislosti a manuální předávání dat mimo systém) Obtížná správa, monitoring a řízení, další integrace ) neudržitelné. (diagramy převzaty z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 27 / 32
(II) ESB se zavede v jednom místě a transparentně při pohledu zvenčí. Pro napojení na stará (legacy) rozhraní se využijí adaptéry. (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 28 / 32
(III) Postupně (a za běhu) se zavádí ESB do sousedních oblastí. Zvenčí je celé řešení transparentní a bez (větších) výpadků. (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 29 / 32
(IV) ESB lze zavádět postupně i v rámci jedné oblasti. (aplikace mohou stále ještě komunikovat přímo s aplikacemi ostatních oblastí) Zachování přímé komunikace vhodné pro těžko adaptovatelná rozhraní. (nebo např. při potřebě synchronní komunikace stylu RPC, nebo napojení partnerů, na které nemáme vliv, tedy nemůžeme lehce adaptovat) (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 30 / 32
(V) Nakonec je celá organizace integrovaná pomocí ESB. Partnerské aplikace mimo organizaci pak komunikují také s ESB. (diagram převzat z David A. Chappell: Enterprise Service Bus, 2004 ) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 31 / 32
Shrnutí a závěr Cesta k ESB ESB je řešení pro integraci rozsáhlých systémů organizací. (geograficky rozsáhlé, s autonomními částmi, heterogenní, atp.) ESB využívá zavedených a ověřených technologií. (JMS, JCA, JBI, WS-*, SOAP, WSDL, XML, XSLT, XPath, XRef, XQuery,... ) ESB není řešení vhodné pro všechny, použití je třeba zvážit. (nevýhodou je třeba vyšší režie na komunikaci, tedy ztráta výkonu) Marek Rychlý Přednáška pro PDI, 8. prosince 2015 32 / 32