Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja Komponenttien palveluja ei tiedetä tarkasti etukäteen, komponentit ovat periaatteessa samassa roolissa Komponentteja ja niiden lukumäärää ei tiedetä tarkasti etukäteen Järjestelmässä liikkuvan tiedon laatua ei tunneta tarkasti etukäteen 1
Esimerkkejä Ajoneuvon ohjausjärjestelmä Älykoti Yrityksen liiketoimintojen hallintajärjestelmä Yleisesti: hajautetut järjestelmät, löyhää integrointia vaativat järjestelmät 2
Viestinvälitysarkkitehtuuri: perusidea rekisteröidyt komponentit 1) luo viesti ja 2) lähetä välittäjälle Komponenttien yhteinen rajapinta: receive(message) rekisteröidyt komponentit 3) päätä vastaanottaja(t) ja välitä viesti sille/niille Viesti Viestinvälittäjä (tai kanava, väylä) 4) vastaanota ja 5) tulkitse/ prosessoi viesti Tyhmä Välittäjä 3
Palveluperustainen viestinvälitysarkkitehtuuri Asiakas Palvelupyyntö Palvelupyyntö Asiakas Viestinvälittäjä Palvelija Palvelun tulos Palvelun tulos Asiakas 4
Esimerkki: Auton huoltotarkkailujärjestelm rjestelmä moottori cpu jarrut vaihdelaatikko CAN väylä (Controller Area Network) 5
Auton huoltotarkkailujärjestelm rjestelmä: komponenttikaavio CANBusExaminer MessageDispatcher send(msg) register(msgtype,component) Messenger ServiceComponent receive(msg) BrakeUnit recordusage() checkcondition() getstate() setstate() EngineUnit recordusage() checkcondition() getstate() setstate() 6
Harjoitus Topologia Lineaarinen Keskitetty Rajapinnat Palvelupohjaisia Geneerisiä Täytä arkkitehtuurityylien nimillä 7
Viestinvälitysarkkitehtuuri: peruselementit (Hohpe & Woolf: Enterprise Integration Patterns) Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi 8
Esimerkki: Tilausten käsittelyk Asiakkaat Jälleenmyyjä TKS Valmistajat Vaatimuksia: - Asiakkaat voivat lähettää tilauksia webin kautta tai faxilla - Tilaus käsitellään monessa vaiheessa: varastotarkistus, toimitus, laskutus - Integrointi olemassaoleviin sovelluksiin: web-client, faxijärjestelmä, laskutus-, toimitus-, ja varastojärjestelmät Kuljetusliike 9
Tilausten vastaanotto Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi 10
Tilausten vastaanotto: useita lähteitl hteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava 11
Synkroninen: Viestiportti (Messaging Gateway) Sovellus Viestiportti Viestijärjestelmä - erottaa sovelluksen viestinvälityksestä - tarjoaa sovellusaluekohtaisen API:n sovellukselle - helposti vaihdettavissa palvelupyyntö viestin lähetys tuloksen vastaanotto prosessointi 12
Tilausten vastaanotto: useita lähteitl hteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava 13
Kanavasovitin (Channel Adapter) Löyhä sovitinliitos: Sovitin ei integroidu suoraan sovellukseen vaan välillisesti esim. - sovelluksen yleisen API:n kautta - tarkkailemalla sovelluksen aiheuttamia tapahtumia - tarkkailemalla sovelluksen tuottamia tiedostoja tai tietokantoja (esim. tietokantatriggeri) 14
Tilausten vastaanotto: useita lähteitl hteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava 15
Kahdenvälinen kanava Voi olla useita vastaanottajia, mutta kanavamekanismi takaa, että vain yksi vastaanottaja saa kunkin viestin (tai kiinnittyy istuntoon) Mahdollisesta vastaanottajan valinnasta huolehtii kanava, vastaanottajien ei tarvitse koordinoida keskenään 16
Tilausten vastaanotto: useita lähteitl hteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava 17
Kanoninen tietomalli (Canonical data model) tiedon esitys, joka on riippumaton sovelluksista sovellusriippuvat esitykset muunnetaan kanoniseen jos sovelluksen esitysmuoto muuttuu, riittää muuttaa muuntaja 18
Viestimuuntaja (Message Translator) Muuttaa formaatin tai rakenteen lisäämättä informaatiota XML-pohjaisten viestien muuntaminen keskenään: XSLT XML <-> jokin muu formaatti: XML jäsentäjät ym. 19
Tilausten vastaanotto: useita lähteitl hteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava 20
Julkaisija-tilaaja kanava (Publisher- Subscriber Channel) Viesti Tilaaja Julkaisija Julkaisijalta tuleva viesti kopioidaan kaikille tilaajille Kukin tilaaja saa jokaisen viestin kerran Tilaajat eivät tunne toisiaan eivätkä julkaisijaa Julkaisija ei tunne tilaajia Tarkkailija-suunnittelumallin yleistys (tapahtumaviestejä) Voi olla myös monta julkaisíjaa Tilaaja Tilaaja 21
Reititys Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi 22
Tilausten käsittelyk tarkista varasto tarkista asiakas [OK] Poikkeusten käsittely toimita tavara lähetä lasku 23
Tilausten käsittelyk kelvollinen tilaus Laskutus Toimitus Asiakashallinta Varastohallinta Yhdistäjä epäkelpo tilaus 24
Yhdistäjä (Aggregator) Kerää koosteita sisääntulevista viesteistä Pitää yllä vaillinaisia koosteita Jos uusi viesti tekee jostakin vaillinaisesta koosteesta täydellisen, koosteviesti lähetetään eteenpäin Kooste ei ole välttämättä unioni (esim. valitaan paras tai ensimmäinen sopiva, muut unohdetaan) 25
Tilausten käsittelyk Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Laskutus Toimitus Varastohallinta Yhdistäjä epäkelpo tilaus 26
Sisält ltöperustainen reititin (Content-based Router) Vastaanottaja/kanava määrätään viestin sisällön perusteella (esim. jonkin kentän arvo tai esiintyminen) Ongelma: reititin tuntee vastaanottajat ja riippuu niistä Mahdollinen ratkaisu: vastaanottajat informoivat (dynaamisesti) reititintä millaisia viestejä haluavat (Dynamic Router) Mahdollinen ratkaisu: kukin vastaanottaja filteroi itselleen vain halutut viestit 27
Hallinta ja monitorointi Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi 28
Palveluväyl ylä (ESB) Kanavat toteutetaan yhtenäisellä väyläarkkitehtuurilla Voi sisältää palvelurekisterin (a la SOA) Sisältää eri reititysmahdollisuuksia Koko käsittelyprosessia ohjaa oma yksikkönsä Vastauksen vaativat kommunikaatiot edellyttävät erityisiä ratkaisuja (esim. Smart Proxy) 29
Viestinvälitysarkkitehtuurin etuja Helppo muuttaa, lisätä ja poistaa komponentteja tai sovelluksia Vikasietoinen (esim. jos viestillä ei vastaanottajaa), voidaan esim. toistaa viestin lähettämistä Joustava järjestelmäkonfiguraatio Sallii heterogeeniset järjestelmät, sovellusintegraation Sallii sekä synkronisen että asynkronisen kommunikoinnin 30
Viestinvälitysarkkitehtuurin haittoja Tehokkuus: viestien kirjoittaminen ja lukeminen Vaikeampi toteuttaa, testata ja ymmärtää kuin perinteinen Jotkut tavalliset asiat vaativat erityistukea (esim. peräkkäisyys, synkronisuus) Olemassaoleva infratuki teknologiariippuvaista Syntyy helposti implisiittisiä riippuvuuksia yksiköiden välille 31
Viestinvälitysarkkitehtuurin haaste Geneeriset rajapinnat => ei riippuvuuksia => joustava integraatio Ideaalisti sovellukset riippuvat vain hyvin määritellyistä standardeista Valitettavasti, usein tämä ei toimi: kaksi sovellusta on tehty toimimaan yhdessä toiminta saadaan tehokkaammaksi kun käytetään sovelluskohtaista tietoa hyvä tuote otetaan käyttöön, on se standardin mukainen tai ei on olemassa erilaisia standardeja samalle asialle standardia ei ole tai se on riittämätön jne. Uhkakuva: syntyy suuri määrä ei-dokumentoituja implisiittisiä riippuvuuksia, joita kukaan ei hallitse Loppujen lopuksi ohjelmistotekniikan ongelmana on riippuvuuksien hallitseminen, ei välttämättä eksplisiittisten riippuvuuksien poistaminen 32