Tilaa uutiskirjeemme
Tilaa uutiskirjeemme

CINIAN BLOGI

Skaalautuvuutta ja joustavaa jatkokehitystä Microservice-arkkitehtuurilla

Ohjelmistopalvelut 6.7.2016

Moderneissa sovelluskehitysprojekteissa pyritään yleensä aluksi tuomaan markkinoille mahdollisimman nopeasti MVP (Minimum Viable Product) -tuote. Sen laajuus on tiukasti rajattu ja sillä on tarkoitus selvittää vastaako tuote markkinoiden tarpeisiin ja onko tuotteelle kysyntää. MVP-projekteissa ei tyypillisesti vielä pohdita miten tuote jatkossa skaalautuu ja kuinka helppoa sitä on jatkokehittää.

Tuotekehityksen jatkuessa MVP:stä eteenpäin sovellukseen lisätään ominaisuuksia ja ajan myötä se kasvaa isommaksi. Pikkuhiljaa muodostuu laaja monoliittinen sovellus, jossa toiminnallisuus ja tuotteen eri osaset on nivottu tiukasti yhteen. Ison sovelluksen päivitys tulee ajan myötä vaikeammaksi, koska monoliittisessa järjestelmässä on hankala tunnistaa mihin kaikkeen uusi toiminnallisuus tulee vaikuttamaan.

Usein liiketoiminta jumiutuu tekemään päätöstä kahden vaihtoehdon välillä: Tyydytäänkö toimivan sovelluksen nykyisiin ominaisuuksiin vai tehdäänkö päivitys, jonka toimivuudesta ei pystytä antamaan takeita. Päivityksen ajan palvelu on kokonaan saavuttamattomissa. Ja mikäli ongelmien vuoksi joudutaan palauttamaan vanha versio, on taas tiedossa käyttökatkos. Kireässä kilpailutilanteessa tällainen päätös vaatii isoa riskinottokykyä liiketoiminnalta. Ja entäpä jos sovelluksen käyttökatko vaarantaa ihmishenkiä, kuten esimerkiksi terveydenhuollon puolella?

Mikropalveluarkkitehtuuri avuksi

Mikropalveluarkkitehtuuri (eng. Microservices) on alkujaan kehitetty vastakohdaksi monoliittisille järjestelmille vastaamaan jättimäisten web-palveluiden skaalautuvuushaasteisiin (esim. Netflix). Mikroarkkitehtuurimallissa monoliittinen sovellus pyritään jakamaan atomisiin pieniin tilattomiin palveluihin, joiden vastuulla on kullakin vain yksi sovelluksen rajattu toiminnallisuus ja jotka ovat toisistaan riippumattomia. Nämä pienet mikropalvelut kommunikoivat toistensa kanssa rajapintojen välityksellä.

Jos jokin järjestelmän yksittäinen palvelu kuormittuu ja muodostuu pullonkaulaksi, kehitystiimi voi keskittyä sen kapasiteetin parantamiseen. Kun suorituskykyä ei tarvitse virittää ja päivitystä testata koko järjestelmän vaan ainoastaan tarvittavan komponentin osalta, kehityssykli on nopeampi ja käyttökatkot lyhyempiä tai niiltä vältytään jopa täysin.

Jos mikroarkkitehtuuria sovelletaan IoT-järjestelmään, sen pääkomponentteja voisivat olla esimerkiksi datan vastaanotto, datan käsittely ja tallennus sekä raportointisivusto. Kun haluamme pilkkoa vielä nämäkin osiin, raportointisivuston komponentteja voisivat olla käyttäjienhallinta, käyttöliittymä, raportointi ja data-analytiikka. Jos palveluita pilkotaan vielä, päästään siihen, että meillä voi olla mikropalvelu, jonka vastuulla voi olla määrätyn laitetyypin käsittely. Tällöin mahdollistetaan se, että on kyvykkyys optimoida laitetyypeittäin toimintaa ja vanhentuneiden laitetyyppien poistuminen markkinoilta antaa mahdollisuuden säästää kustannuksissa määrän supistuessa eikä täten tarvita enää samaa kapasiteettiä kuin aikaisemmin.

Tämän jälkeen IoT-järjestelmää pystytään päivittämään siten, että muutos koskee vain pientä osaa, esimerkiksi kyseisen laitteen signaalien käsittely. Kaikki muut komponentit toimivat kuten aikaisemmin.

Mikropalveluarkkitehtuuria hyödyntävän ohjelmiston päivityksiin ei liity samanlaisia liiketoimintariskejä kuin monoliittisissa järjestelmissä. Sovelluskehitystiimi kykenee vastaamaan paremmin Time-to-market –haasteeseen ja tarjoamaan liiketoiminnalle enemmän dynaamisuutta markkinoiden tarpeisiin.

Skaalautuvuuden ja joustavan jatkokehitettävyyden lisäksi mikropalveluarkkitehtuuri mahdollistaa jo olemassa olevien mikropalveluiden uudelleen käyttämisen. Aikaa ja resursseja säästyy tuottavampien uusien ominaisuuksien kehittämiseen. Sillä ei kai kukaan enää tänä päivänä tarvitse useita erilaisia tapoja vaikkapa sähköpostin lähettämiseen sovelluksista tai käyttäjän rekisteröitymisen toteuttamiseen.

– Jouko Johansson, Senior Software Specialist, Cinia Solutions –

Jaa

Kiitos Cinia-blogin tilauksesta

Tilaa bloggaukset sähköpostiisi