Artikkelit
SOA ja järjestelmäintegraatio
Palveluarkkitehtuuri ei ole salatiedettä
Integraatio on pohjimmiltaan sovelluskehitystä, ja integraatioprojekteihin pätevät samat lainalaisuudet kuin muihinkin ohjelmistoprojekteihin. Onnistunut järjestelmäintegraatio vaatii järkevän organisaation ja yksinkertaiset teknologiat.
SOA eli palveluarkkitehtuuri (Service Oriented Architecture) tarkoittaa arkkitehtuuria, jossa olemassa olevat järjestelmät integroituvat toisiinsa julkisten palvelurajapintojen kautta. Järkevä integraatioratkaisu perustuu avoimiin ja koeteltuihin teknologioihin, hajautettuun toteutusmalliin ja selkeään rajapintasuunnitteluun.
Toimiva järjestelmäintegraatio edellyttää selkeää vastuunjakoa
Hajautetun integraatiomallin rakentaminen kannattaa aloittaa selkeyttämällä organisaatiossa integroitavien järjestelmien omistajien vastuunjako. Järjestelmien väliin tulisi jäädä mahdollisimman vähän harmaata integraatiovyöhykettä verkkoinfrastruktuurin lisäksi. Jokaisen järjestelmävastaavan pitää vastata oman järjestelmäkokonaisuutensa tarjoamista rajapinnoista muille järjestelmille ja liittymistä muiden järjestelmien rajapintoihin.
Integroinnin tukena voi olla organisaatio, joka huolehtii sovittujen käytäntöjen noudattamisesta ja antaa teknistä apua. Erillistä integraatio-organisaatiota ei välttämättä tarvita ollenkaan, mikäli järjestelmillä on riittävän selkeät rajapinnat.
Vastakohtana hajautetulle integraatiomallille on iso ja keskitetty koko yrityksen laajuinen integraatioratkaisu. Tällaisessa ratkaisussa vastuut järjestelmien liiketoimintalogiikasta ja integraatioiden vaatimista teknisistä yksityiskohdista menevät helposti sekaisin keskenään. Varsinaisten liiketoiminnallisten järjestelmien rinnalle syntyy tällöin erillinen integraatiojärjestelmä, joka vaatii oman ylläpito-organisaationsa. Tällainen tukiorganisaatio ei tuota varsinaista lisäarvoa liiketoiminnalle, mutta lisää kustannuksia ja turhaa monimutkaisuutta.
Järjestelmäintegraatio on sovelluskehitystä
Integraatioon tarjotaan usein tuotteita, joita kuvaillaan valmisratkaisuiksi. Esimerkiksi ESB-tuotteet ovat kuitenkin lopulta sovelluskehitys- ja ajoympäristöjä, joiden avulla varsinaiset integraatioratkaisut toteutetaan. Tämä toteutustyö on ohjelmointityötä, ja siksi ESB-tuotteita pitää verrata muihin ohjelmointiympäristöihin. Kokemukseni perusteella ESB-tuotteet eivät kestä vertailua muihin sovelluskehitys- ja ajoympäristöihin ja odotukset niistä saatavista hyödyistä ovat usein epärealistisia.
Vertailussa muihin ratkaisuihin tärkeitä näkökohtia ovat käytettävän ohjelmointikielen ominaisuudet ja kehitettävien ratkaisujen testattavuus sekä se, miten ympäristö tukee hyviä ohjelmointikäytäntöjä. Lopputuloksen kustannusten ja laadun kannalta on suuri merkitys sillä, valitaanko avoin vai suljettu tai yksinkertainen vai kompleksi teknologia. Integraatiomallia ei kannata sitoa tuotevalintoihin ennen kuin tiedetään, mitä tarvitaan.
Harkitsematon tuotevetoinen ratkaisumalli lisää tarpeetonta monimutkaisuutta. Tämä näkyy teknologisessa taseessa kalliina ylläpitona, huonona laatuna, hitaana kehityksenä ja sitoutumisena tuotteisiin ja ratkaisuihin, joista on kallista päästä eroon. Sen sijaan ratkaisujen yksinkertaistaminen ja niiden jatkuva kehittäminen ovat investointeja, jotka alkavat heti maksaa itseään takaisin ja mahdollistavat toiminnan jatkuvan järkeistämisen.
Valittu ohjelmistokehitysympäristö vaikuttaa kehitystyön kustannuksiin. Ohjelmointikielien ominaisuuksien lisäksi tärkeitä seikkoja ovat kehitys- ja ajoympäristöjen lisenssihinnat ja tukimaksut sekä niiden vaatimat laitteistot. Yksi merkittävimmistä valintakriteereistä on teknologioiden ympärille syntynyt ekosysteemi eli käyttäjäyhteisön luomat avoimen lähdekoodin kirjastot, tukiverkostot ja teknologian käyttäjämäärä. Suljetuilla ratkaisuilla on tyypillisesti monta kertaluokkaa pienemmät käyttäjäyhteisöt kuin avoimilla ja ilmaisilla kehitysympäristöillä. Lisäksi osaamisen sekä valmiskomponenttien löytäminen on suljetuissa ympäristöissä vaikeaa.
Internet rakentuu avoimille, kevyille ja koetelluille teknologioille
Yksinkertaisimmat ja siten helpoimmat, halvimmat ja vähiten virhealttiit teknologiat löytyvät niistä ratkaisuista, joille internet rakentuu. Minkään yrityksen sisäiset ratkaisut eivät ole niin koeteltuja ja optimoituja kuin internet-teknologiat, joiden pitää kestää satojen miljoonien käyttäjien jatkuva virta, kehittyä jatkuvasti ja olla samalla tietoturvallisia.
Järjestelmäintegraatioon kannattaa käyttää yksinkertaisia internet-teknologioita, kuten kevyitä REST/JSON-rajapintoja ja yksinkertaisia viestijonojärjestelmiä ilman ESB-ominaisuuksia. Rajapintojen tarjoaminen, suojaaminen ja reititys hoidetaan standarditeknologioin kuten yksinkertaisilla HTTP-palvelimilla ja DNS-nimeämisellä suljettujen ESB- ja hakemistopalvelujen sijaan. Internetin standarditeknologioille löytyy useita toimivia avoimen lähdekoodin alustoja, joilla on miljoonia käyttäjiä ja uskottava elinkaari pitkälle tulevaisuuteen. Ne eivät elä ja kuole yksittäisten yritysten tuotepäätösten mukana.
Integraatio on ennen kaikkea hallinnollinen haaste
Integraation tekniset haasteet ovat pienempiä kuin hallinnolliset ja integraation organisointiin liittyvät haasteet. Erillisten kehitys- ja tukimallien sekä integraatiopalvelinsovellusten pystyttäminen pelkästään integraatiota varten lisää kiinteitä kustannuksia ja monimutkaisuutta sekä hidastaa kehitystä.
Integraatio on sovelluskehitystä. Kuten muussakin sovelluskehityksessä, siinä on parasta käyttää hyviä käytäntöjä ja työkaluja, yksinkertaisia teknologioita ja arkkitehtuureja sekä osaavia kehitystiimejä.
