{"id":90,"date":"2016-09-07T19:50:07","date_gmt":"2016-09-07T17:50:07","guid":{"rendered":""},"modified":"2018-09-17T21:51:53","modified_gmt":"2018-09-17T19:51:53","slug":"nechajte-to-na-mulicu-alebo-mule-in-action","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/nechajte-to-na-mulicu-alebo-mule-in-action\/","title":{"rendered":"Nechajte to na mulicu alebo Mule in Action"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/s4f65ds4.jpg\" alt=\"Obr\u00e1zok\" width=\"186\" height=\"200\" \/>Ke\u010f vst\u00fapite do sveta korpor\u00e1tnych syst\u00e9mov, nepochybne naraz\u00edte na ur\u010dit\u00fa skupinu probl\u00e9mov. Dostanete toti\u017e za \u00falohu implementova\u0165 proces, ktor\u00fd komunikuje s nieko\u013ek\u00fdmi samostatn\u00fdmi syst\u00e9mami. M\u00e1 vola\u0165 HTTP sie\u0165ov\u00fa slu\u017ebu, potom posla\u0165 spr\u00e1vu cez JMS, nahra\u0165 s\u00fabor cez FTP a n\u00e1sledne pou\u017ei\u0165 SMS br\u00e1nu na poslanie SMS-ky. A e\u0161te omnoho viac. Dobr\u00e1 spr\u00e1va je, \u017ee nemus\u00edte v\u0161etko programova\u0165 od nuly. Vlastne v\u00e1m sta\u010d\u00ed vytvori\u0165 konfigur\u00e1ciu pre softv\u00e9r, ktor\u00fd je na integr\u00e1ciu ako stavan\u00fd. Napr\u00edklad Mule. Dnes sa na neho pozrieme spolu s knihou <a href=\"http:\/\/www.bookdepository.com\/Mule-in-Action\/9781617290824\">Mule in Action<\/a>.<!--more--><!--break--><\/p>\n<p>Mule je softv\u00e9r, ktor\u00e9ho hlavnou \u00falohou je integrova\u0165. Je ide\u00e1lny pre heterog\u00e9nne prostredie, <span style=\"background: transparent;\">kde ostatn<\/span><span style=\"background: transparent;\">\u00fd<\/span><span style=\"background: transparent;\"> softv\u00e9r komunikuje <\/span>nejako inak. Mule to v\u00f4bec nevad\u00ed, zvl\u00e1da r\u00f4zne protokoly, komunik\u00e1cie, aj form\u00e1ty spr\u00e1v. Tie\u017e dok\u00e1\u017ee implementova\u0165 vetvenie a cykly v procese a kade\u010do in\u00e9. Je to ten k\u00fasok sklada\u010dky puzzle, ktor\u00fd v\u00e1m v strede ch\u00fdba. A je jedno, ak\u00fd tvar potrebujete, lebo Mule sa zvl\u00e1dne prisp\u00f4sobi\u0165.<\/p>\n<p>Mule je softv\u00e9r dod\u00e1van\u00fd firmou Mulesoft. Z\u00e1kladn\u00fdm kame\u0148om cel\u00e9ho ich softv\u00e9rov\u00e9ho rie\u0161enia je Mule runtime engine. To je to srdce cel\u00e9ho syst\u00e9mu, ktor\u00e9mu poviete, \u010do presne m\u00e1 robi\u0165 a kde, \u010do a kedy vola\u0165. To Mule vie na z\u00e1klade XML konfigur\u00e1cie, ktor\u00fa mu mus\u00edte pripravi\u0165 (firma pon\u00faka aj v\u00fdvoj\u00e1rske rozhranie, kde namiesto toho viete pou\u017e\u00edva\u0165 grafick\u00fd dizajn\u00e9r). T\u00e1to konfigur\u00e1cia obsahuje tzv. flow, \u010do je vlastne defin\u00edcia procesu, ktor\u00e1 m\u00e1 nejak\u00fd vstupn\u00fd bod (prijatie spr\u00e1vy alebo jej z\u00edskanie zo zdroja) a viacero v\u00fdstupn\u00fdch bodov (to je pr\u00edpad, kedy Mule niekde nejak\u00fa spr\u00e1vu posiela).<\/p>\n<p>Pr\u00e1ca s Mule znamen\u00e1 pochopenie \u0161tyroch abstrakci\u00ed:<\/p>\n<p><strong>1. Message source<\/strong> \u2013 zdroje spr\u00e1v alebo vstupn\u00e9 body do procesu<\/p>\n<p><strong>2. Message processor<\/strong> \u2013 transformuj\u00fa spr\u00e1vy alebo ich posielaj\u00fa niekde mimo syst\u00e9m<\/p>\n<p><strong>3. Exchange patt<\/strong><strong>e<\/strong><strong>rns<\/strong> \u2013 definuj\u00fa, ako sa komunikuje s ostatn\u00fdmi syst\u00e9mami. Existuj\u00fa len dva typy:<br \/>\nOne-way \u2013 teda odosla\u0165 a ne\u010daka\u0165 za odpove\u010fou (asynchr\u00f3nne)<br \/>\nRequest-Response \u2013 teda odosla\u0165 a \u010daka\u0165 za odpove\u010fou (synchr\u00f3nne)<\/p>\n<p><strong>4. Endpoint URIs<\/strong> \u2013 v\u0161etky body, na ktor\u00e9 Mule pristupuje k extern\u00fdm syst\u00e9mov (ke\u010f s nimi komunikuje) s\u00fa zadefinovan\u00e9 pomocou URI. Pr\u00edklad m\u00f4\u017ee by\u0165: <a href=\"http:\/\/localhost:8080\/invoices\">http:\/\/localhost:8080\/invoices<\/a>. Toto URI v sebe obsahuje typ protokolu, adresu servera, aj cestu na danom serveri.<\/p>\n<p>Tak\u017ee tvorba procesu v podstate znamen\u00e1, \u017ee sa zadefinuje vstupn\u00fd bod (tzv. inbound endpoint) a n\u00e1sledne s\u00e9ria procesorov, pr\u00edpadne vetvenie alebo cyklenie. Procesor je jednotka, ktor\u00e1 spr\u00e1vu nejako transformuje alebo po\u0161le v nejakej forme do in\u00e9ho syst\u00e9mu (potom je to tzv. outbound endpoint). Tieto endpointy predstavuj\u00fa logick\u00fd vstup a v\u00fdstup procesu, pri\u010dom vo vn\u00fatri s\u00fa napojen\u00e9 na konektor.<\/p>\n<p>Konektor je to, \u010do ur\u010duje sp\u00f4sob komunik\u00e1cie s in\u00fdm syst\u00e9mov. Teda ak\u00fd protokol sa pou\u017eije, pr\u00edpadne ako bude vyzera\u0165 posielan\u00e1 spr\u00e1va. Mule obsahuje preddefinovan\u00fa sadu protokolov, ktor\u00e1 sa del\u00ed na dve skupiny: transportn\u00e9 (FTP, HTTP, JMS) a cloudov\u00e9 (\u0161peci\u00e1lne konektory pre zverejnen\u00e9 API tret\u00edch str\u00e1n \u2013 napr. pre Twiter alebo Facebook). Samozrejme je mo\u017en\u00e9 zadefinova\u0165 si vlastn\u00e9 druhy konektorov.<\/p>\n<p>Okrem toho Mule zvl\u00e1da:<\/p>\n<ul>\n<li>r\u00f4zne transform\u00e1cie spr\u00e1v \u010di u\u017e bin\u00e1rne alebo textov\u00e9<\/li>\n<li>odchytenie a spracovanie v\u00fdnimky<\/li>\n<li>transakcie<\/li>\n<li>kryptovanie<\/li>\n<li>r\u00f4zne bezpe\u010dnostn\u00e9 scen\u00e1re (LDAP, Java EE security filter)<\/li>\n<\/ul>\n<p>Mule je mo\u017en\u00e9 nasadzova\u0165 hne\u010f v nieko\u013ek\u00fdch scen\u00e1roch: ako samostatn\u00fa war aplik\u00e1ciu, ako s\u00fa\u010das\u0165 inej war aplik\u00e1cie alebo ho spusti\u0165 ako samostatn\u00fd server. Dokonca v poslednom pr\u00edpade vie n\u00e1sledne hostova\u0165 in\u00e9 aplik\u00e1cie.<\/p>\n<p>V pr\u00edpade, \u017ee sa n\u00edm rozhodnete v\u00e1\u017ene zaobera\u0165 tak v\u00e1m odpor\u00fa\u010dam knihu Mule in Action. Pomerne preh\u013eadne postupuje od \u00fapln\u00fdch za\u010diatkov a\u017e ku zlo\u017eitej\u0161\u00edm t\u00e9mam ako je debugovanie, optimaliz\u00e1cia alebo napojenie in\u00fdch n\u00e1strojov tam, kde Mule nesta\u010d\u00ed (pre riadenie flowu na z\u00e1klade komplikovan\u00fdch pravidiel sa d\u00e1 pou\u017ei\u0165 extern\u00fd Rules engine, pre procesy, kde je potrebn\u00e1 \u013eudsk\u00e1 interakcia zase jBPM at\u010f.). Od za\u010diatku do konca je ka\u017ed\u00e1 nov\u00e1 t\u00e9ma zobrazen\u00e1 aj s pr\u00edkladom nejak\u00e9ho flowu, \u010do napom\u00e1ha pochopeniu. Kniha tie\u017e obsahuje omnoho viac okrajov\u00fdch t\u00e9m, ktor\u00e9 sa do tohto \u010dl\u00e1nku ani nezmestili.<\/p>\n<p>Mule nie je \u017eiadna strieborn\u00e1 gu\u013eka (na up\u00edrov a in\u00e9 pr\u00ed\u0161ern\u00e9 projekty), ale jeho flexibilita a v\u00fdbava na r\u00f4zne scen\u00e1re stoj\u00ed naozaj za uv\u00e1\u017eenie. V prostred\u00ed, kde ka\u017ed\u00fd syst\u00e9m rozpr\u00e1va inou re\u010dou a kde to treba nejako spoji\u0165 aj s logikou naviac (kedy a \u010do kde posla\u0165 a kedy nie) je Mule ide\u00e1lny. S ve\u013ekou z\u00e1klad\u0148ou existuj\u00facich konektorov a mo\u017enos\u0165ou ho \u010falej roz\u0161irova\u0165 dok\u00e1\u017ee vybavi\u0165 kade\u010do. Ka\u017ed\u00fd integra\u010dn\u00fd architekt by o tomto n\u00e1stroji mal ma\u0165 aspo\u0148 hrub\u00fa predstavu.<\/p>","protected":false},"excerpt":{"rendered":"<p>Ke\u010f vst\u00fapite do sveta korpor\u00e1tnych syst\u00e9mov, nepochybne naraz\u00edte na ur\u010dit\u00fa skupinu probl\u00e9mov. Dostanete toti\u017e za \u00falohu implementova\u0165 proces, ktor\u00fd komunikuje s nieko\u013ek\u00fdmi samostatn\u00fdmi syst\u00e9mami. M\u00e1 vola\u0165 HTTP sie\u0165ov\u00fa slu\u017ebu, potom posla\u0165 spr\u00e1vu cez JMS, nahra\u0165 s\u00fabor cez FTP a n\u00e1sledne pou\u017ei\u0165 SMS br\u00e1nu na poslanie SMS-ky. A e\u0161te omnoho viac. Dobr\u00e1 spr\u00e1va je, \u017ee nemus\u00edte [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-90","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":2,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":141,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/90\/revisions\/141"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}