Mikropalvelut eivät ole enää varsinaisesti minkään hypen aallonharjalla. Sen sijaan ne ovat jossain määrin arkipäiväistyneet, ainakin puheessa ja varsinkin myyntipuheessa. Niinpä tämä kirjoitus saattaa herättää seuraavanlaisia kysymyksiä: "Nyt vasta? Eikös mikropalvelut ole jo vanha juttu? Mitä uutta tässä enää on?" Ohjelmistoalan ammattilaiset ovat jo vuosia tunteneet termin ja jossain määrin ajatusmaailmankin. Mutta avataanpa hieman taustaa, miksi nyt asiasta kirjoitan.
Tilaajan puolella mikropalvelut eivät suinkaan ole mikään itsestäänselvyys. Niistä on todennäköisesti kuultu ja niitä ehkä löytyy jo käytöstäkin eri organisaatioissa. On kuitenkin monia aloja, joissa järjestelmien käyttöikä on vuosikymmeniä ja vaikka osa järjestelmistä olisi uusittukin, silti löytyy vielä järjestelmiä, jotka ovat ns. monoliitteja. Nämä kaksi asiaa ovat toistensa vastakohdat.
Monoliitti on järjestelmä, joka yksinkertaistettuna on yksi iso kokonaisuus, jonka sisällä vähän kaikki riippuu kaikesta. Monoliittien yksi tyypillinen piirre on, että esimerkiksi järjestelmän päivitys aiheuttaa yleensä koko järjestelmän käyttökatkon. Kyseiset ratkaisut ovat monesti suunniteltu ja toteutettu toimimaan jossakin niille erityisesti rakennetussa ympäristössä. Näistä monet ovat vielä jossakin kellarin uumenissa toimivia ylläpidettyjä palvelimia yrityksen omassa tilassa tai palveluntarjoajan palvelinsalissa. Ratkaisu toimii hyvin, etenkin jos käyttäjäkunta on rajallinen.
Useaa isompaa järjestelmää on viety enemmän siihen suuntaan, että se rakentuu pienemmistä komponenteista, sovelluskirjastoista. Usein tässäkin tapauksessa järjestelmä vaatii kerrallaan useiden kirjastojen päivityksen, sillä monesti nämä ovat riippuvaisia toisistaan. Tämä ei tietenkään tarkoita sitä, että järjestelmä olisi jotenkin huono. Järjestelmä ajaa varmasti sen asian mitä varten se on suunniteltu.
Skaalautuminen
Mikropalveluiden lähtökohtana on nimenomaisesti yksittäisten toiminnallisuuksien hajauttaminen palveluiksi, joilla tässä kohtaa tarkoitetaan jonkin laajan prosessin yksittäisiä osia. Näitä voisi prosesseina olla esimerkiksi auton rekisteritunnuksen kysely tai yritystunnuksella tehtävä yrityksen tietojen haku, jotka ovat todennäköisesti jonkin prosessin pieniä osia. Kun suurempi kokonaisuus rakentuu tällaisista pienistä osista, palveluiden skaalaaminen spesifin tarpeen mukaan on helpompaa.
Mikropalveluiden etuna onkin skaalautuvuus. Skaalautumisesta hyvänä arkipäivän esimerkkinä toimii veronpalautuspäivämäärä. Kyseisenä ajankohtana pankin verkkopalveluissa lisääntyvät tilin saldokyselyt huomattavasti. Tällöin ei kuitenkaan ole tarpeen kasvattaa koko verkkopankin kapasiteettia, sillä yleensä kyseessä olisi mittava investointi, vaikka kyse olisi suhteellisen lyhyestä kapasiteetin kasvattamisesta. Jos saldokysely toteutetaan yhtenä suhteellisen pienenä kokonaisuutena, mikropalveluna, voidaan tätä kyseistä palvelua skaalata ylöspäin ja näin saadaan pidettyä kulut tarkasti kohdistettuna. Mikä parasta, tätä ei tarvitse tehdä omin pienin kätösin, vaan nämä voidaan automatisoida.
Pienemmässä mittakaavassa voi olla kyse ison yrityksen sisäisestä palvelusta, jota on tarpeen jossakin kohtaa vuorokaudesta skaalata. Esimerkiksi sisäinen verkkopalvelu, johon kello 8-9 välillä tulee paljon kirjautumisia. Tällöin esimerkiksi autentikoimiseen käytettävä mikropalvelu voidaan skaalata ylöspäin.
Tehokkuus
Mikropalveluiden avulla voidaan myös rakentaa ns. palveluväylä, jossa yhdessä osoitteessa on tarjolla laaja skaala erilaisia mikropalveluita. Tähän on pilvipalveluilla tarjolla hyviä välineitä ja se onkin ehkä selkein tapa hallita kokonaisuutta, joka rakentuu kymmenistä tai jopa sadoista mikropalveluista. Kuitenkin voidaan vallan hyvin myös rakentaa isojen järjestelmien tueksi muutamia yksittäisiä mikropalveluita, jotka tarjoavat järjestelmän käyttöön jonkin yksityiskohtaisen tiedon, joka on aiemmin esimerkiksi pitänyt käyttäjän manuaalisesti käydä hakemassa jonkin toisen järjestelmän uumenista. Tällä voi olla jo suuria vaikutuksia tehokkuuteen.
Kehittäminen
Palveluiden kehittämisen kannalta merkittävä huomio on se, että kun palvelu liittyy yhteen yksittäiseen asiaan, eikä sillä ole riippuvuuksia järjestelmän muihin toimintoihin, on sen kehittäminen suhteellisen selkeää ja yksinkertaista. Silloin esimerkiksi jonkin yhden palvelun ympärillä oleva tiimi voi pysyä kohtuullisen kompaktina ja heidän ei tarvitse olla huolissaan oman osuutensa kehittämisen vaikutuksista kokonaisuuteen.
Miksei sitten kaikkea tehdä mikropalveluilla nyt ja tulevaisuudessa?
Mikropalveluissa on omat niksinsä ja haasteensa. Yksi näistä on se, että laajojen kokonaisuuksien rakentaminen pelkästään mikropalveluiden päälle voi tehdä järjestelmän arkkitehtuurista haastavan hahmottaa. Vaikka mikropalveluilla itsellään ei ole riippuvuuksia, kokonaisuus rakentuu pienistä paloista ja on myös mahdollista, että mikropalvelu rakentuu jonkin toisen mikropalvelun päälle. Näin ollen ketjujen hallinta voi muodostua haasteeksi. Tämä kuitenkin pitäisi ottaa huomioon palveluiden suunnittelussa ja pyrkiä välttämään tällaista palveluiden ketjuttamista.
Vaikka mikropalvelut ovat jossain määrin arkipäiväistyneet, niillä ei kuitenkaan koko maailman ongelmia kannata lähteä ratkaisemaan. Ne palvelevat loistavasti tilanteissa, joissa sovellus tai sähköinen palvelu rakentuu useista selkeistä kokonaisuuksista. Jos kyseinen ratkaisu pyörii jossakin helposti skaalattavassa ympäristössä ja vielä siten, että skaalaaminen on oikeasti järjestelmän toiminnan kannalta merkittävässä roolissa, mikropalveluita kannattaa hyödyntää. Kun taas lähdetään rakentamaan uutta järjestelmää, mikropalveluarkkitehtuuri osana pilvipalveluita on syytä pitää kirkkaana mielessä.
Mikäli siis pohdit, ratkaisisiko mikropalvelut sinun organisaatiossasi joitain järjestelmiin liittyviä haasteita, kannattaa pohtia, miten hyvin nykyiset järjestelmät ovat integroitavissa. Mikäli järjestelmät pystyvät jollakin tavalla kommunikoimaan ulkomaailman kanssa, eikä esimerkiksi pilviratkaisuiden käyttäminen ole este, järjestelmän laajentaminen todennäköisesti mikropalveluiden avulla on mahdollista.
Helpointa on kuitenkin ottaa yhteyttä, niin käydään organisaatiosi tarpeita läpi. Meiltä saat rehellisen näkemyksen siitä, ovatko mikropalvelut ratkaisu juuri sinun organisaatiosi tarpeisiin vai toimisiko jokin muu keino paremmin.