Skip to content

Mikropalvelu - Microservice

Kuvauksen kirjoitti: Kari Maaheimo

Lyhyt kuvaus käsitteestä tai aiheesta

Mikropalvelut, eli microservices, on arkkitehtuuri tyyli jossa ohjelman\ päätoiminnot on jaettu useisiin pienempiin erillisiin komponentteihin, eli\ mikropalveluihin, jotka yhdessä muodostavat toimivan sovelluksen.\ Mikropalveluiden vastakohta on monoliittinen arkkitehtuuri, joka on kaikille\ tuttu perinteinen tyyli, jossa koko ohjelma on yksi iso sovellus jota kaikki\ työstävät. Molempiin tyyleihin sisältyy hyötyjä ja haasteita. Se kumpi tyyli\ sopii sovellukselle paremmin riippuu täysin itse sovelluksesta.

Mikropalveluiden hyöty tulee parhaiten esille jos sovellus on huomattavan iso,\ jolloin sen pilkkominen pienempiin osiin, joita työstetään erillään itsenäisinä\ palveluina, nopeuttaa kehitystyötä, samalla keventäen koko kehitysprosessia.\ Mikropalvelut myös mahdollistavat saman mikropalvelun hyödyntämisen useassa\ erillisessä sovelluksessa. Esimerkiksi jollain sovelluksella saattaa olla\ erikseen mobiili- ja verkkoversio, joista molemmat saattavat kuitenkin\ hyödyntää samaa kirjautumispalvelua rajapinnan kautta. Kirjautumispalvelu on\ tässä esimerkissä siis oma mikropalvelunsa, jota voidaan kehittää itsenäisesti\ koskematta sovelluksen muihin osiin. Muita esimerkkejä mahdollisista\ mikropalveluista vaikkapa verkkokaupassa voivat olla hakutoiminto,\ tuotesuositukset ja ostoskori.

Mikropalveluarkkitehtuuri on hyvin samankaltainen palvelukeskeiseen\ arkkitehtuuriin (Service Oriented Architecture, SOA), jossa sovellus pilkotaan\ hyvin samalla tavalla pienempiin yksittäisin palveluihin, mutta\ palvelukeskeisessä arkkitehtuurissa näiden palasten sovittaminen yhteen\ tapahtuu ESB:n (Enterprise Service Bus) avulla, joka toimii koko sovelluksen\ laajuisena alustana, joka sitoo kaiken yhteen. Tämä tarkoittaa sitä, että\ vaikka SOA tarjoaa enimmäkseen samat edut kuin mikropalveluarkkitehtuuri,\ SOA:lla ESB itsessään saattaa toimia kipupisteenä koko sovellukselle.\ Mikropalveluilta tämä kipupiste puuttuu, sillä mikropalvelut ovat aidosti\ itsenäisiä, eivätkä siis luota yhteiseen alustaan toimiakseen. Mikropalvelut\ kommunikoivat keskenään suoraan rajapintojen kautta, mikä lisäksi mahdollistaa\ mm. täysin eri työkalujen ja ohjelmointikielten käyttämisen eri\ mikropalveluiden kehittämiseen, eli jokainen erillinen palvelu voi surutta\ hyödyntää juuri sille parhaiten sopivia työkaluja.

Kokonaisuudessaan ohjelmistokehityksen kannalta mikropalvelut ovat ikään kuin\ projektirepositorion eri haaroja, joita ei koskaan integroida. Jokaisella\ mikropalvelulla voi olla täysin oma kehittäjätiiminsä, eli\ mikropalveluarkkitehtuurin avulla sovellusta voi työstää samanaikaisesti\ normaalia enemmän porukkaa, joka nopeuttaa kehitystyötä. Lisäksi jokainen\ mikropalvelu voidaan julkaista itsenäisesti riippumatta sovelluskokonaisuuden\ muista palveluista, joka poistaa ison osan mahdollisista julkaisuun liittyvistä\ ongelmista.

Mikropalveluarkkitehtuuriin sisältyy myös haasteita. Koska sovellus on pilkottu\ useisiin pienempiin palveluihin, joista jokaisella on omat riippuvuutensa,\ on näiden palveluiden hallitseminen kokonaisuutena, mm. sovellusta pystyttäessä\ tai testattaessa oma haasteensa. Tämän vuoksi mikropalveluarkkitehtuuri ei\ välttämättä aina ole ( itse sovelluksesta riippuen) paras vaihtoehto.

Linkit ulkopuolisiin lähteisiin