Palvelukeskeisyys

UKJ:n arkkitehtuuri perustuu palvelukeskeiseen arkkitehtuuriin (SOA), jossa löyhästi toisiinsa sidotut komponentit muodostavat yhdessä toimivan kokonaisuuden julkaisemiensa palveluiden välityksellä. Kukin komponentti toteuttaa joukon toimintoja, joiden kutsuminen ja käyttö tapahtuu komponentin julkaisemien palveluiden kautta. Komponentin julkaisemat palvelut muodostavat komponentin palvelurajapinnan, jonka kautta muut komponentit ja järjestelmät kommunikoivat komponentin kanssa. Käytännössä tämä tarkoittaa sitä, että UKJ:n moduulit toteutetaan itsenäisinä toisistaan riippumattomina komponentteina, joiden väliset väliset löyhät liittymät toteutetaan välittämällä sanomia moduulien välillä. Moduulit eivät kuitenkaan kommunikoi suoraan keskenään, vaan niiden välinen viestinvälitys toteutetaan erillisen palveluväylä-komponentin avulla, joka kommunikoi moduulien kanssa niiden tarjoamien palvelurajapintojen välityksellä. Viestinvälityksen keskeinen toiminta-ajatus on esitetty kuvassa 1.

Kuva 1. Viestinvälitys palveluväylän kautta.

Moduulien liittäminen palveluväylään

Palveluväylä liittää UKJ:n eri moduulit toisiinsa ja on vastuussa moduulien välisen viestinvälityksen toteuttamisesta. Moduulit eivät siis missään tilanteessa ole suoraan yhteydessä toisiinsa, vaan kaikki moduulien välinen kommunikointi tapahtuu palveluväylän kautta. Palveluväylä sisältää palvelurekisterin, joka pitää sisällään tiedot väylään kytketyistä palveluista sekä niiden loogisista tunnisteista ja fyysisistä verkko-osoitteista. Palvelurekisteri mahdollistaa eri osa-puolten välisen kommunikaation ilman, että järjestelmien tarvitsee olla tietoisia toistensa fyysisistä verkko-osoitteista. Palveluväylä kykenee viestinvälityksen yhteydessä tekemään tarvittaessa myös protokolla- ja formaattimuunnoksia, mikäli moduulille lähetetty viesti ei ole moduulin ymmärtämässä muodossa. Palveluväylään voidaan tarvittaessa liittää uusia muunnoksista vastaavia adaptereita. Jokaisella palveluväylään liitetyllä moduulilla on oma viestijononsa, jonka kautta moduulille lähetetyt viestit kulkevat. Mikäli moduuli ei syystä tai toisesta kykene käsittelemään sille osoitettu viestiä viestin saapumishetkellä, jää viesti jonoon odottamaan moduulin palautumista toimintakykyiseksi. Palveluväylä mahdollistaa sekä synkronisen että asynkronisen viestinvälityksen.

Palveluväylän voidaan ajatella toimivan eräänlaisena porttina moduulien tarjoamien palvelujen ja niitä kutsuvien ulkoisten järjestelmien välillä, sillä kaikki palvelupyynnöt ja vastaussanomat kulkevat palveluväylän kautta. UKJ:n asiakasohjelmat sekä eri sidosryhmien järjestelmät eivät ole suoraan yhteydessä moduulien tarjoamiin palveluihin, vaan ne käyttävät palveluja palveluväylän toteuttaman julkisen palvelurajapinnan kautta, jonka toiminta-ajatus on esitetty kuvassa 2. Julkinen palvelurajapinta voi tarjota pääsyn moduulien yksittäisiin palveluihin, jonka lisäksi palveluväylä mahdollistaa myös eri moduulien tarjoamien palveluiden orkestroinnin. Orkestrointi tarkoittaa useiden eri moduulien palvelukutsuista koostuvien koosteisten palveluiden luomista, joiden käyttö on mahdollista vain palveluväylän tarjoaman julkisen palvelurajapinnan kautta. Uusien koosteisten palveluiden luominen ja olemassa olevien palveluiden muokkaaminen on mahdollista järjestelmän suorituksen aikana ilman ohjelmakoodiin tehtäviä muutoksia. Palveluväylän sisältämä tai palveluväylään liitetty ulkoinen prosessimoottori vastaa koosteisten palvelujen synnyttämien prosessien hallinnasta. Palveluväylä tukee koosteisiin palveluihin liittyvien hajautettujen transaktioiden hallintaa. Lisäksi palveluväylä tukee julkisen palvelurajapinnan kautta julkaistujen palvelujen versiointia eli yksittäisestä palvelusta on mahdollista tarjota rinnakkain useita eri versioita.

Kuva 2. Palveluväylä ja julkinen palvelurajapinta.

Moduulien tarjoamat palvelu voivat olla julkisia tai yksityisiä. Julkisilla palveluilla tarkoitetaan palveluita, jotka ovat julkisen palvelurajapinnan kautta kutsuttavissa ulkoisista järjestelmistä. Tässä yhteydessä myös UKJ:n asiakasohjelmat ovat moduulien näkökulmasta ulkoisia järjestelmiä, koska ne sijaitsevat UKJ:n varsinaisen ydinosan ulkopuolella. Yksityisillä palveluilla tarkoitetaan puolestaan sellaisia palveluita, jotka eivät ole kutsuttavissa ulkoisista järjestelmistä julkisen palvelurajapinnan kautta. Yksityiset palvelut ovat vain suoraan palveluväylään liitettyjen UKJ:n moduulien käytettävissä ja niitä voidaan ajatella eräänlaisina järjestelmän tukipalveluina. Palveluväylä vastaa palvelupyyntöjen ja vastaussanomien välittämisestä sekä julkisten että yksityisten palvelujen kohdalla. Koosteiset palvelut voivat pitää sisällään sekä julkisia että yksityisiä palveluja. Yksityinen palvelu voi siis sisältyä julkiseen koosteiseen palveluun, vaikka sen kutsuminen suoraan julkisen palvelurajapinnan kautta ei olekaan mahdollista.

UKJ:n moduulien lisäksi palveluväylään on mahdollista kytkeä myös ulkoisia järjestelmiä, jolloin niiden tarjoamat palvelut ovat palveluväylän kautta suoraan UKJ:n moduulien käytettävissä. Tällöin UKJ:n moduulien ja ulkoisten järjestelmien väliset viestit kulkevat palveluväylän kautta, joka vastaa tarvittavista formaatti- ja protokollamuunnoksista. Lisäksi ulkoisten järjestelmien tarjoamia palveluita on mahdollista hyödyntää myös palvelujen orkestroinnissa eli koosteiset palvelut voivat sisältää sekä UKJ:n moduulien että ulkoisten järjestelmien tarjoamia palveluja. Kuvia 1 ja 2 tarkasteltaessa ulkoiset järjestelmät ovat rinnastettavissa kuvissa esiintyviin moduuleihin eli niiden liittäminen palveluväylään tapahtuu moduulien tapaan järjestelmien tarjoaman palvelurajapinnan kautta. Käytännössä edellä esitettyä toteutustapaa voidaan hyödyntää esimerkiksi ONKI:n, väestötietojärjestelmän ja autentikointijärjestelmien integroinnissa UKJ:hin.

 

  • No labels