ObrázokKeď vstúpite do sveta korporátnych systémov, nepochybne narazíte na určitú skupinu problémov. Dostanete totiž za úlohu implementovať proces, ktorý komunikuje s niekoľkými samostatnými systémami. Má volať HTTP sieťovú službu, potom poslať správu cez JMS, nahrať súbor cez FTP a následne použiť SMS bránu na poslanie SMS-ky. A ešte omnoho viac. Dobrá správa je, že nemusíte všetko programovať od nuly. Vlastne vám stačí vytvoriť konfiguráciu pre softvér, ktorý je na integráciu ako stavaný. Napríklad Mule. Dnes sa na neho pozrieme spolu s knihou Mule in Action.

Mule je softvér, ktorého hlavnou úlohou je integrovať. Je ideálny pre heterogénne prostredie, kde ostatný softvér komunikuje nejako inak. Mule to vôbec nevadí, zvláda rôzne protokoly, komunikácie, aj formáty správ. Tiež dokáže implementovať vetvenie a cykly v procese a kadečo iné. Je to ten kúsok skladačky puzzle, ktorý vám v strede chýba. A je jedno, aký tvar potrebujete, lebo Mule sa zvládne prispôsobiť.

Mule je softvér dodávaný firmou Mulesoft. Základným kameňom celého ich softvérového riešenia je Mule runtime engine. To je to srdce celého systému, ktorému poviete, čo presne má robiť a kde, čo a kedy volať. To Mule vie na základe XML konfigurácie, ktorú mu musíte pripraviť (firma ponúka aj vývojárske rozhranie, kde namiesto toho viete používať grafický dizajnér). Táto konfigurácia obsahuje tzv. flow, čo je vlastne definícia procesu, ktorá má nejaký vstupný bod (prijatie správy alebo jej získanie zo zdroja) a viacero výstupných bodov (to je prípad, kedy Mule niekde nejakú správu posiela).

Práca s Mule znamená pochopenie štyroch abstrakcií:

1. Message source – zdroje správ alebo vstupné body do procesu

2. Message processor – transformujú správy alebo ich posielajú niekde mimo systém

3. Exchange patterns – definujú, ako sa komunikuje s ostatnými systémami. Existujú len dva typy:
One-way – teda odoslať a nečakať za odpoveďou (asynchrónne)
Request-Response – teda odoslať a čakať za odpoveďou (synchrónne)

4. Endpoint URIs – všetky body, na ktoré Mule pristupuje k externým systémov (keď s nimi komunikuje) sú zadefinované pomocou URI. Príklad môže byť: http://localhost:8080/invoices. Toto URI v sebe obsahuje typ protokolu, adresu servera, aj cestu na danom serveri.

Takže tvorba procesu v podstate znamená, že sa zadefinuje vstupný bod (tzv. inbound endpoint) a následne séria procesorov, prípadne vetvenie alebo cyklenie. Procesor je jednotka, ktorá správu nejako transformuje alebo pošle v nejakej forme do iného systému (potom je to tzv. outbound endpoint). Tieto endpointy predstavujú logický vstup a výstup procesu, pričom vo vnútri sú napojené na konektor.

Konektor je to, čo určuje spôsob komunikácie s iným systémov. Teda aký protokol sa použije, prípadne ako bude vyzerať posielaná správa. Mule obsahuje preddefinovanú sadu protokolov, ktorá sa delí na dve skupiny: transportné (FTP, HTTP, JMS) a cloudové (špeciálne konektory pre zverejnené API tretích strán – napr. pre Twiter alebo Facebook). Samozrejme je možné zadefinovať si vlastné druhy konektorov.

Okrem toho Mule zvláda:

  • rôzne transformácie správ či už binárne alebo textové
  • odchytenie a spracovanie výnimky
  • transakcie
  • kryptovanie
  • rôzne bezpečnostné scenáre (LDAP, Java EE security filter)

Mule je možné nasadzovať hneď v niekoľkých scenároch: ako samostatnú war aplikáciu, ako súčasť inej war aplikácie alebo ho spustiť ako samostatný server. Dokonca v poslednom prípade vie následne hostovať iné aplikácie.

V prípade, že sa ním rozhodnete vážne zaoberať tak vám odporúčam knihu Mule in Action. Pomerne prehľadne postupuje od úplných začiatkov až ku zložitejším témam ako je debugovanie, optimalizácia alebo napojenie iných nástrojov tam, kde Mule nestačí (pre riadenie flowu na základe komplikovaných pravidiel sa dá použiť externý Rules engine, pre procesy, kde je potrebná ľudská interakcia zase jBPM atď.). Od začiatku do konca je každá nová téma zobrazená aj s príkladom nejakého flowu, čo napomáha pochopeniu. Kniha tiež obsahuje omnoho viac okrajových tém, ktoré sa do tohto článku ani nezmestili.

Mule nie je žiadna strieborná guľka (na upírov a iné príšerné projekty), ale jeho flexibilita a výbava na rôzne scenáre stojí naozaj za uváženie. V prostredí, kde každý systém rozpráva inou rečou a kde to treba nejako spojiť aj s logikou naviac (kedy a čo kde poslať a kedy nie) je Mule ideálny. S veľkou základňou existujúcich konektorov a možnosťou ho ďalej rozširovať dokáže vybaviť kadečo. Každý integračný architekt by o tomto nástroji mal mať aspoň hrubú predstavu.