fbpx

Mitä mikropalvelut ovat?

Mitä sinulle sanoo sana mikropalvelu?

Jos mikro tuo mieleen lähinnä mikroaaltouunin tai vanhan kunnon pöytämikron ja mikrotuen, sinun ehkä kannattaisi lukea tämä kirjoitus. 

Mikropalvelut nimittäin ovat yksi keskeinen uusi pilvipalveluiden komponentti. 

Mikropalvelut

Kun luet tämän kirjoituksen, ymmärrät, miksi mikropalvelut (micro services) ovat monessa asiassa parempia kuin perinteiset sovellukset. 

Perinteinen monoliittinen sovellus on möhkäle

Perinteinen sovellus on yksi iso kokonaisuus, jossa yksi sovellus toteuttaa monia toiminnallisuuksia. Oheinen kuva esittää perinteistä, monoliittista sovellusta.

Kuvan sovellus on web-kauppa, jossa on kolme eri toiminnallisuutta: asiakaspalvelu, tuotekatalogi ja ostoskori.

monoliittinen sovellus

Kaikki nämä toiminnallisuudet ovat yhden ison sovelluksen sisällä.

Kun tällaista ns. monoliittista sovellusta halutaan päivittää, pitää koko sovellus päivittää. 

Jos esimerkiksi ostoskorin ominaisuuksia pitää päivittää, pitää ostoskorin päivittämiseksi päivittää koko sovellus, ei ainoastaan ostoskoria, koska sovellus on yksi iso kokonaisuus. 

Jos taas myöhemmin pitäisi päivittää asiakaspalvelun ominaisuuksia, vaikka muut komponentit eivät päivitystä kaipaakaan, vaikuttaa asiakaspalvelun päivitys koko sovellukseen. 

Tästä seuraa hyviäkin puolia. Perinteisen sovelluksen hallittavuus on helppoa, koska kaikki sovelluksen tarvitsemat komponentit liikkuvat yhtenä kokonaisuutena. 

Koska koko sovellus on yksi iso kokonaisuus, päivitys vaikuttaa koko sovelluksen toiminnallisuuksiin. Tämän vuoksi päivitys voi esimerkiksi aiheuttaa pienen käyttökatkon koko sovellukseen. 

Monoliittisovelluksen skaalaaminen

Käsitellään nyt perinteisen monoliittisen sovelluksen skaalaamista. Oletetaan, että esimerkkimme web-kauppa on suosittu ja sovelluspalvelin kuormittuu. 

Sovelluskehittäjät keskustelevat ylläpitäjien kanssa ja sopivat, että lisätään kapasiteettia skaalaamalla sovellusta ulospäin (scale out).

Scale out eli ulospäin skaalaaminen tarkoittaa lisänoodien käyttöönottoa.  

Load balancerin jälkeen on kaksi erillistä palvelinta.

Monoliittisen sovelluksen tapauksessa tarvitaan uusi palvelin. Jos esimerkkimme web-kauppa pyörii Windows-palvelimen päällä, asennetaan skaalaamista varten uusi Windows-palvelin. 

Tämä kuulostaa suoraviivaiselta ja näin tehdään. 

Yksi sovelluskehittäjistä päättää kuitenkin tutkia tilannetta tarkemmin. Hän tutkii sovelluksen toimintaa ja huomaa, että palvelimen kuormittumisen aiheuttaa tuotekatalogi-komponentti. Ostoskori ja asiakaspalvelu eivät tarvitsisi lisäkapasiteettia. 

Jotta monoliittisen sovelluksen tuotekatalogille saadaan lisää suorituskykyä, otettiin käyttöön uusi palvelin, johon asennettiin kaikki tarvittavat ohjelmistot. Samalla asiakaspalvelu- ja ostoskori saivat lisäkapasiteettia, mutta käytännössä ihan turhaan. 

Koska palvelimen suorituskyvystä osa menee pelkän palvelinohjelmiston pyörittämiseen, suorituskyvyn hyötysuhde jäi yllättävä alhaiseksi. 

Toki suorituskykyä olisi voitu lisätä skaalaamalla palvelinta ylöspäin (scale-up) eli antamalla palvelimelle lisää suorituskykyä kasvattamalla sille annettuja resursseja, kuten CPU:ta tai muistin määrää. 

Esimerkin tarkoitus on kuitenkin auttaa ymmärtämään, miten monoliittinen perinteinen sovellus eroaa mikropalveluista. Tarkastellaan sen vuoksi nyt tilannetta, jossa sama sovellus olisi rakennettu mikropalveluiden avulla. 

Mikropalvelu

Mikropalveluiden ideana on toteuttaa toiminnallisuudet omina palveluina, jotka keskustelevat toistensa kanssa rajapintojen välityksellä. 

Oheinen kuva esittää samaa web-kauppaa, joka on nyt rakennettu mikropalveluiden avulla.

Iso sovellus on nyt jaettu erillisiin palveluihin, joista yksi hoitaa asiakaspalvelua, yksi tuotekatalogia ja yksi ostoskoria.

mikropalvelut ovat pieniä, yhteen asiaan keskittyneitä sovelluksia tai palveluita

Palveluiden välinen kommunikointi hoidetaan kutsumalla toista palvelua yhteisesti sovittujen kutsujen avulla. Loppukäyttäjä ei huomaa eroa perinteisen ja mikropalveluilla tehtyjen sovellusten välillä. 

Erot liittyvät mm. sovelluksen skaalaamiseen. Tarkastellaan seuraavaksi sitä.  

Skaalaa vain tarvittava mikropalvelu

Kun käytetään mikropalveluita, riittää, että skaalataan vain sitä palvelua, joka tarvitsee lisäresursseja. 

Viereinen kuva esittää web-sovellusta, jonka tuotekatalogi tarvitsee lisää resursseja.

Kun käytetään mikropalveluja, riittää, että skaalataan vain tuotekatalogi-palvelua.

Mikropalvelun skaalaaminen on tehokkaampaa

Jos asiakaspalvelu tai ostoskori ei tarvitse resursseja, niitä ei myöskään tarvitse skaalata.

Mikropalveluiden avulla voidaan tehostaa IT-infran hyödyntämistä. Mikropalveluita hyödyntämällä tarvitaan vähemmän raakaa prosessoritehoa saman palvelun tuottamiseen kuin perinteisissä sovelluksissa. Tämä pitää paikkansa erityisesti silloin, kun palveluita pitää alkaa skaalaamaan.

Vain muutettava mikropalvelu päivitetään

Mikropalvelun päivittäminen on kuitenkin merkittävämpi syy suosia mikropalveluita.

Jos perinteisiä sovelluksia käytettäessä piti päivittää aina koko sovellus, niin mikropalveluiden kohdalla riittää, että päivitetään vain haluttu palvelu. 

Tämä ero on merkittävä. Se nimittäin mahdollistaa nopeammat päivityssyklit. Kun päivitettävä komponentti on pienempi, on sen päivittäminen helpompaa kuin ison sovelluskokonaisuuden. 

Kun päivittäminen on helpompaa, voidaan päivityssykliä lyhentää. Kun päivityssykliä lyhennetään, voidaan uusia ominaisuuksia julkaista nopeammin. 

Se, joka kehittää uusia palveluita ja ohjelmistoja nopeammin kuin toiset, menestyy digitalisaatiossa paremmin kuin hitaasti liikkuvat.

Jos haluat tietää lisää siitä, miten voit menestyä digitalisaatiossa, lue kirjoitukseni, jonka löydät täältä.

Tilaa ILMAINEN opas

Opas pilvi konesali

Pilvistrategian laatimiseksi

Tilaa ilmainen 32-sivuinen opas, jossa kerron, mitä ottaa huomioon, kun haluat uudistaa IT-ympäristöä pilvipalvelujen avulla.

 

 

Mikropalvelut sopivat hyvin kontteihin

Kun mikropalveluihin yhdistetään konttiteknologia, voidaan kehityksestä tuotantoon -sykliä lyhentää entisestään. 

Konttiteknologian avulla voidaan tarjota kehittäjille samanlainen standardoitu ympäristö kuin on tuotannossakin. 

kontit ja mikropalvelut sopivat hyvin yhteen

Kun ympäristöt on standardoitu, voidaan siirto kehityksestä testiin ja siitä eteenpäin tuotantoon automatisoida. 

Kun testausprosessi ja tuotantoon vienti on automatisoitu, nopeutuu kehityssykli valtavasti verrattuna perinteisellä mallilla toimiviin. 

Jos haluat lukea lisää konteista, löydät kirjoituksen siitä täältä. 

Mikropalvelut hyötyvät Dockerista

Yksi suosittu tapa hyödyntää mikropalveluita on laittaa niitä Docker-kontteihin.

Docker on tyypillisesti Linuxin päällä ajettava ohjelma, jonka avulla ohjelmille voidaan tarjota välttämätön, standardoitu ajoympäristö - kontti.

Docker

Käytettäessä Dockeria voidaan virtuaalipalvelin-infraan asentaa virtuaalikone, jossa pyörii Docker-ohjelmisto. Docker tarjoaa konteille tarvittavan ajoympäristön.

Lue kirjoitukseni Mikä on Docker ja mitä hyötyä siitä on?

Tilaa uutiskirjeeni, niin saat tietää heti, kun julkaisen uusia kirjoituksia.

Jos pidit tästä artikkelista, myös seuraavat artikkelit voivat olla kiinnostavia:

Tilaa uutiskirjeeni

Saat tiedon uusista artikkeleista suoraan sähköpostiisi.

Annan luvan tallentaa tietoni ja hyväksyn tietosuojakäytännön.

Vieritä ylös