25. března 2013

Oracle EDN, implementace EDA

SOA Suite je zajímavou kompilací technologií, které, poskládány dohromady, stojí na architektonickém principu SCA (Service Component Architecture). Patří sem například implementace BPELu, business rules a human tasků. A jednou z těchto technologií je i Event Delivery Network (EDN), což je implementace paradigmatu Event Driven Architecture (EDA).

Event Driven Architecture

Even Driven Architecture (EDA) může být alternativou, nebo doplňkem k Servisně orientované architektuře (SOA). Ale EDN se netýká pouze SOA - tento architektonický princip najdeme i uvnitř GUI frameworků, jako je Java Swing, nebo Apache (dříve Adobe) Flex.

Jak už napovídá název, vše se v této architektuře motá kolem událostí. Událost je v EDA first-class citizen. Vlastně je to jediný citizen (obyvatel). Ale co to vlastně ta událost je? Událost je v podstatě zpráva, podobně jako zpráva má hlavičku a tělo. V hlavičce jsou samozřejmě meta-data, např. jméno a typ zprávy, timestamp apod. Zásadní rozdíl je v obsahu těla události (payload), ten bývá zpravidla velmi malý a měl by obsahovat pouze popis faktu, který událost instancoval. Někdy payload ani být nemusí - pokud je událost určitého typu, stačí pouze vědět, že nastala.

A jak taková událost zapadá do architektury? Dalším významem akronymu EDA by mohlo být: Extremely Decoupled Architecture. Události, které nejsou nijak svázány s konkrétním producentem, jsou publikovány do nějaké centrální generické infrastruktury. Producenti publikují události stylem fire-and-forget a vůbec se nestarají o to, kdo je jejich konzumentem.

Konzumentem je pak kdokoli, kdo se zajímá o výskyt určitého typu události. Pro konzumenty je původ události neznámý - neví kdo ji publikoval, oni se pouze dozvědí, že nastala. Na konzumentovi pak leží veškerá zodpovědnost za správné business zpracování události. S tím souvisí i to, že příjemce může konzumované události filtrovat.

Event Driven Architecture (barvy představují typy událostí)
Z předešlého komponentového diagramu vyplývá několik věcí. Jednak že v EDA existují v podstatě jen dva základní komponenty - Event Coordinator, který si můžeme představit jako jakýsi "event bus" (podle vzoru service bus) pro události, který se stará o publikování událostí, přihlášení (subscription) konzumentů apod.

A pak jednotlivé uzly (nody). Ty mohou fungovat buď jako producenti událostí (Node 3), nebo jejich konzumenti (Node 2, Node 5), anebo obojí (Node 1, Node 4). Každý node může publikovat nebo přijímat více typů událostí. Že jeden typ události může být konzumovaný více nody asi nikoho nepřekvapí (oranžová událost konzumovaná Nody 1 a 4). Daný typ události ale může taky být publikovaný více producenty (fialová událost publikovaná Nody 3 a 4).

To by, myslím, mohlo stačit, jako takový velmi lehoulilinký úvod do EDA a teď se podíváme na jednu její konkrétní implementaci.

Event Delivery Network

Event Delivery Network (EDN), která je součástí SOA Suite, je infrastruktura (postavená na JMS), která poskytuje deklarativní způsob definice událostí, jejich publikování a registraci jejich konzumace. Tři hlavní entity, se kterými pracuje jsou producent událostí, konzument událostí a události samotné.

Definice události

Události jsou v EDN definované názvem a typem a jsou uloženy v souboru s příponou edl. Tento soubor může být umístěný buď v rootu projektu, nebo v MDS (MetaData Services repository).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions
 xmlns="http://schemas.oracle.com/events/edl"
        targetNamespace="http://sw-samuraj.cz/events/SimpleEvent-v1">
  <schema-import
          namespace="http://sw-samuraj.cz/events/simpleMessage-v1"
          location="xsd/simpleMessage-v1.0.xsd"/>
  <event-definition name="SimpleEvent">
    <content
            xmlns:sim="http://sw-samuraj.cz/events/simpleMessage-v1"
            element="sim:simpleMessage"/>
  </event-definition>
</definitions>
Definice události

Typ je popsán pomocí XSD:
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:sim="http://sw-samuraj.cz/events/simpleMessage-v1"
     targetNamespace="http://sw-samuraj.cz/events/simpleMessage-v1"
     elementFormDefault="qualified">
  <xsd:element name="simpleMessage">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="timestamp" type="xsd:dateTime"/>
        <xsd:element name="status">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:enumeration value="ON"/>
              <xsd:enumeration value="OFF"/>
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
Typ události definovaný v XSD

Publishers

Producentem události může být buď BPEL proces, nebo Mediator. V případě Mediatoru je publikování události přímočaré - v definici akce se místo invoke zavolá raise s patřičnou události.

Publikování události v Mediatoru
Graficky pak vypadá kompozitní aplikace s publikujícím Mediatorem takto:

Mediator event publisher (kompozitní aplikace)

U BPEL procesu je situace maličko složitější. Vzhledem k tomu, že BPEL je otevřený standard, do kterého události nepatří, řeší to SOA Suita (standardním) BPEL extension. Událost se tak dá publikovat pomocí rozšíření z aktivity Invoke.

Publikování události v BPELu z aktivity Invoke

BPEL event publisher (kompozitní aplikace)
Všimněte si, že jak v případě Mediatoru, tak BPELu končí implementace publikování události na dané komponentě. Kdyby totéž bylo implementováno pomocí messagingu, musel by být v kompozitní aplikaci definován ještě JCA adaptér s pevně uvedenou destinací. Tohle u EDA/EDN není potřeba.

Subscribers

Konzumentem události může být opět buď Mediator nebo BPEL komponent.

Subskripce události v Mediatoru

Mediator event subscriber (kompozitní aplikace)

Podobně jako u publikování i u konzumace událostí si BPEL vypomáhá rozšířením, tentokrát v rámci aktivity Receive.
Subskripce události v BPELu v aktivitě Receive

BPEL event subscriber (kompozitní aplikace)

Monitorování událostí

Asi trochu překvapí, že již publikované, ale ještě nezkonzumované události nelze nikde vidět. Alespoň ne standardními nástroji. V podstatě lze vidět pouze "historický otisk" událostí. Něco jako: tudy kráčely dějiny :-)

Cestu události lze vidět v Enterprise Manageru:

Audit trace události (Enterprise Manager)
V uvedeném logu publikuje Mediator Publisher událost, která je konzumována dvěma konzumenty: Mediator Subscriber a BPEL komponent BpelSubscriber. Zároveň je vidět, že Enterprise Manager loguje celou cestu události - ačkoliv jsou producent a konzumenti události od sebe odděleni a vůbec o sobě nemají povědomí, v audit logu je to zaznamenáno jako jeden souvislý tok události.

BPEL nebo Mediator?

Na základě čeho se rozhodnout, kterou komponentu použít pro konzumaci/publikování události? Jednodušší a přímočařejší je použití Mediatoru. Koneckonců to doporučuje i sám Oracle. BPEL má jedinou výhodu - jako konzument může události korelovat. Čili pokud je reakcí na nějakou událost jiná událost a obě dvě jsou zpracovávány stejnou kompozitní aplikací, tak jejich korelace je možná pouze v BPEL procesu.

Závěr

Event Delivery Network (EDN) je standardní součástí SOA Suity a nabízí out-of-the-box implementaci Event Driven Architecture (EDA). Pokud nepotřebujeme robustní a konfigurovatelné messaging řešení, může být EDN vhodnou, rychle provozovatelnou alternativou.

Rozhodně bych ale EDN nedoporučoval použít pro kritické části systému. Byť je postavena na prověřené JMS platformě, její možnosti z hlediska konfigurace, provozování, monitoringu atd. jsou velmi omezené - berte jak to je, nebo nechejte být.

Související články

9. března 2013

Oracle SOA certifikace

Půlrok se sešel s půlrokem a já jsem si vystřihnul další certifikaci. Tentokrát jsem chtěl něco, čím bych zakončil své roční působení na projektu a důstojně :-) tak završil trnitý proces získávání znalostí o nové technologii: Oracle SOA Suite.

Okolnosti tomu chtěly, že jsem se zrovna trefil do přelomu, kdy Oracle jednu  SOA certifikaci nahrazuje jinou. Aktuální certifikace, která je k dispozici od letošního ledna, se jmenuje  Oracle SOA Suite 11g Certified Implementation Specialist. Já, protože jsem se ke zkoušce přihlásil již dříve, jsem nyní obdržel certifikaci Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert. Uff! To je titul :-/

Každopádně, co je nám po jménu? Podstatné je, jestli se obě zkoušky od sebe nějak obsahově liší. Liší? Ano, ale pouze drobně - v nové certifikaci přibylo pouze něco málo o governance, deploymentu a monitoringu, ale gró zůstává stejné: jednotlivé komponentní technogie (viz Exam Topics).

Jak dlouho jsem se na certifikaci připravoval? Přípravě přímo na zkoušku jsem věnoval cca 3 týdny - přečetl jsem si guide (viz dále) a prošel testovací otázky. Ale obecně jsem k certifikaci studijně směřoval téměř celý rok. Za jeden z podstatných zdrojů vědomostí totiž považuji přímou zkušenost s technologií - 7 měsíců intenzivního "programování".

Kniha

Vývoj samotný z učedníka mistra neudělá. Primárním zdrojem informací jsou pro mne knihy, takže od nich jsem začal: hned z počátku práce na projektu jsem si koupil knihu Oracle SOA Suite 11g Handbook.

Jde o 800stránkový opus a pokud to někdo myslí se SOA Suitou vážně, tak rozhodně tuto knihu doporučuji - obsahuje vyčerpávající sumu témat (daleko přesahující rozsah zkoušky), které umožní pochopit principy, které za SOA Suitou stojí a provede návrhem, vývojem, testováním a provozem jednotlivých komponent a technologií. Ještě jednou: vysoce doporučuji!

Školení

Školení obvykle v portfoliu přípravných zdrojů nemám, tentokrát se mi ovšem naskytla příležitost, tak jsem ji využil a absolvoval školení hned tři:
  • Oracle SOA Suite 11g Implementation Bootcamp
  • Oracle Service Bus 11g
  • Oracle BPM Suite 11g Implementation Bootcamp
Školení nebyla špatná. Probíhala formou labů, takže si člověk mohl věci prakticky vyzkoušet. Tematicky školení zkoušku více méně pokrývala (s výjimkou BPM, který v certifikaci není) a umožnila mi trochu jiný pohled na věc, než byl třeba v knize, nebo jsem sám získal praxí. Z pohledu certifikace nejsou školení nutností, ale příjemným bonusem - stejné informace se dají získat i jinde a levněji :-)

Certifikační guide

Krátce před zkouškou jsem pořídil knihu Oracle SOA Infrastructure Implementation Certification Handbook, což je certifikační guide zaměřený na původní zkoušku (1Z0-451). Co se týká obsahu, kniha je slušným, velmi lehkým úvodem do SOA Suite. Jako studijní materiál je nedostačující. Co je na ní cenné, je sada testovacích otázek a odpovědí ke každému tématu, plus závěrečný test (také s řešením).

Závěr

Pokud vezmu v potaz svoji celoroční "přípravu", tak pro mne certifikace splnila (opět) svůj hlavní účel - motivační prostředek pro sebevzdělávání. Tak jako u jiných zkoušek i nyní mě certifikace přinutila podívat se do hloubky i na témata, která nutně (projektově) nepotřebuju a umožnila mi tak lépe pochopit celý kontext dané technologie.

Kecám, nepřinutila - já to dělám rád ;-)

Související články

3. března 2013

Druhý rok s Kindlem

Tak už jsou tomu dva roky, co jsem si koupil Kindle. A tak jako loni, i dnes si udělám malou inventuru, co vše mi z odborné četby prosvištělo čtečkou. Už pouhým okem je vidět, že jsem toho přečetl sotva polovinu oproti loňsku. Můžou za to tři faktory:
  • Narodilo se nám druhé dítě. Jak jsem četl někde na (českém) internetu: Jedno dítě, žádný dítě. Dvě děti, moc dětí. Je to pravda.
  • Cca na polovinu se mi zkrátila doba cesty do práce. A odborné věci čtu převážně v MHD.
  • Koupil jsem si PlayStation a jako fanoušek série The Elder Scrolls jsem nemohl aktuální počin Skyrim nechat ležet ladem.

Očekávám, že příští rok budu mít na čtení zase více času, protože 1) s dětmi už jsme se časově jakž takž sžili, 2) od května mi cesta do práce bude trvat o dost dýl a konečně 3) Skyrim jsem už prochodil skrz naskrz, takže se budu moci věnovat produktivnějšímu odpočinku.

Co bych tak řekl o Kindlu samotném? Je to fantastická čtečka a já, jako nelítostný čtenář, se jí ani po dvou letech nedokážu nabažit. Je tak skvělá, že já, Linuxák, jsem se rád a dobrovolně upsal Amazonímu DRM. Nicméně kupuju i DRM-free knihy, zejména z produkce Pragmatic Programmer a Manning.

Když už jsme u kupování - všechny knížky kupuju, nebo si nechám koupit od zaměstnavatele. Čas od času se mě totiž někdo, jako vyhlášeného čtenáře, ptá, kde se dají sehnat knížky zadarmo. Odborné legálně téměř nikde. Peníze, které utratím za odborné knížky, beru jako investici do svého vzdělání. A můžu potvrdit, že se to bohatě vrátí.

No a na jakém stroji náš hrdina své dechberoucí, ekvilibristické, čtenářské kousky předvádí? Začínal jsem s modelem Kindle 3 (dnes Keyboard), který se ale chvilku po skončení (americké roční) záruky odebral do křemíkového nebe - nepřežil cestu v batůžky mé dcery. Obratem jsem zakoupil aktuální novinku Kindle Touch (už se neprodává), který mi zatím věrně slouží.

Po cca 3/4 roku s Touchem nechápu, jak jsem mohl být nadšený z nedotykového Kindlu. Nicméně pokud pominu uživatelsky ne úplně povedený Kindle 4 (dárek pro manželku), musím říct, že už leta jsem se nesetkal s něčím tak ergonomickým, jako je (libovolný) Kindle. Všechna čest inženýrům ze Seattlu.

Tak a teď konečně ten seznam:
  • SOA Patterns - kniha se SOA sice koliduje, ale jde převážně o vzory z oblasti distribuovaných systémů. Ale jelikož u Manningu málokdy vyjde slabý počin, stojí i tato kniha za přečtení.
  • SOA Governance in Action - další počin od Manningu a tentokrát trefa do černého. Výborný úvod do tématu SOA Governance. Kniha uvádí do kontextu a nabízí okamžitě implementovatelné postupy governance, jako je verzování, lifecycle služeb, security, BAM atd.
  • Oracle SOA Suite 11g Handbook - 800stránková bichle na téma "co všechno jste chtěli vědět o SOA Suite, báli jste se zeptat a na školení vám to neřekli". Knihu rozhodně doporučuji jako kvalitní zdroj k danému tématu.
  • Oracle SOA Infrastructure Implementation Certification Handbook - certifikační guide. Celkem slušný úvod do SOA Suite pro někoho, kdo vůbec neví o co jde. Plus sada testovacích otázek a odpovědí ke každému tématu/technologii.
  • Kanban - ultimátní kniha o Kanbanu. Pokud si chcete Kanban nastudovat opravdu do hloubky, tohle je ten pravý opus.
  • Kanban for Skeptics - pokud si chcete přečíst knihu o Kanbanu  a utratit za ni 0-5 $, tak tahle není špatná.
  • Lean from the Trenches: Managing Large-Scale Projects with Kanban - skvělá kniha o implementaci Kanbanu a jeho propojení se Scrumem. Nedoporučuji ji jen já, ale třeba taky Mary Poppendieck.
  • Behind Closed Doors: Secrets of Great Management - pokud na vás spadnou manažerské povinnosti a moc o tom nevíte (nebo to děláte špatně ;-) tak tohle není špatný počin.
  • Technical Blogging - kniha, která vás provede vším, co obnáší blogování na světové úrovni. A ještě na tom vyděláte (i když ne třeba peníze). Zajímavé jsou kapitoly o sociálních sítích.

Pokud bych měl uvedený seznam nějak zhodnotit, tak v podstatě všechny knihy ze seznamu byly project-driven, takže hlavně SOA a Kanban. Z výše uvedených časových důvodů jsem se nedostal k mnoha dalším tématům, která mne prostě zajímají, ale na projektu je aktuálně nevyužiju; což doufám, že se do budoucna zlepší.

A co vy? Jak jste na tom se čtením? Máte nějaké dobré tipy? Budu rád, když se o ně podělíte v komentářích.

Související články