Perinteisessä sovellusarkkitehtuurissa käyttöliittymän taustalla on yleensä palvelukerros, joka koostuu rajapinnoista. Sovelluksen koon mukaan rajapintoja voi olla useita, jotka jakautuvat toiminnallisiin kokonaisuuksiin. Rajapintojen käytettävyys ja hallinnointi voi etenkin suurissa sovelluksissa osoittautua ongelmalliseksi.
Ratkaisuna palvelukerroksen toteutustavaksi suosiotaan on kasvattanut ns. mikropalveluarkkitehtuuri. Siinä palvelukerros jaetaan useaan pieneen palaseen, joilla on vain yksi käyttötarkoitus. Jokainen toiminto/ominaisuus sovelluksen toimintalogiikasta voidaan siten toteuttaa yksittäisinä mikropalveluina, joiden välillä on mahdollisimman löyhä yhteys. Toisin sanoen yksittäiset palvelut eivät ole riippuvaisia toisistaan ja voivat kommunikoida keskenään asynkronisesti esim. viestijonojen kautta.
Mitä etuja mikropalveluarkkitehtuuri tuo palvelukerroksen kehitykseen?
Palvelujen jakaminen pieniin osiin tuo mukanaan useita etuja verrattuna perinteisimpiin arkkitehtuurimalleihin.
Jokainen palvelu voidaan luoda ja testata yksittäin. Yksittäinen mikropalvelu on vastuussa vain itsestään ja muilla palveluilla ei ole siihen vaikutusta. Asennus, päivitys ja hallinta on mahdollista toteuttaa vain yhdelle palvelulle kerrallaan. Virhetilanteiden jäljittäminen on huomattavasti helpompaa. Tämä tuo myös ketteryyttä palveluiden kehitykseen.
Usein tietyt ominaisuudet palvelukerroksesta ovat kuormittuneempia kuin toiset. Tämä voidaan huomioida mikropalveluarkkitehtuurissa ja parantaa yksittäisten palvelujen suorituskykyä esim. kasvattamalla käytössä olevia resursseja vaikuttamatta järjestelmän muihin toimintoihin/ominaisuuksiin. Mikropalveluarkkitehtuuri tuo myös kustannustehokkuutta, kun tarvittavat resurssit voidaan kohdentaa paremmin eniten kuormittuneisiin ominaisuuksiin järjestelmässä.
Yksittäiset mikropalvelut voidaan toteuttaa eri tekniikoilla tai ohjelmointikielillä riippumatta toisistaan. Siten voidaan valita kulloisenkin ominaisuuden toteuttamiseen paras mahdollinen tekniikka ja ohjelmointikieli. Myös yksittäisen palvelun toteuttamiseen tarvittava lähdekoodimäärä voidaan pitää pienenä, joten jatkokehitys ja ylläpito on perinteisiä toteutusmalleja helpompaa.
Yleensä palvelukerrokseen liittyy myös tietovarasto, joka voidaan mikropalveluarkkitehtuurissa muodostaa siten, että jokaisella palvelulla voi olla oma tietovarasto sen hallinnoimaa dataa varten. Tällöin ei pääse syntymään piiloon jääviä riippuvuuksia datan osalta eri palveluiden välille, jos tietomalleja on tarpeen muuttaa.
Mikropalveluarkkitehtuurin toteutus Azure funktioiden avulla
Azure Functions on suunniteltu pienien palveluiden toteuttamiseen ja soveltuu siten erittäin hyvin palvelukerroksen luomiseen mikropalveluarkkitehtuurilla. Palvelut voivat olla yksittäisiä rajapintoja tai taustalla toimivia prosesseja. Yhteys palvelujen ja niitä käyttävän asiakkaan välille voidaan muodostaa esim. API gatewayn tai proxy rajapinnan kautta, joka välittää kutsut eteenpäin varsinaisille mikropalveluille. Toinen mahdollisuus on käyttää asynkronista viestinvälitystä Azure-resursseja hyödyntäen.
Mikropalveluarkkitehtuuria varten luodut Azure-funktiot voidaan julkaista ”Functions as a Service” (FaaS) mallilla tai käyttää esim. Azure Kubernetes Service (AKS) -palvelua, jolloin jokainen mikropalvelu toteutetaan omaan yksikköön (container). FaaS-mallin etuna ovat nopea kehitys ja integrointi muihin Azure-palveluihin, matalat kustannukset sekä nopea skaalautuvuus.
Alla olevassa esimerkissä on API manager (API gateway), jonka kautta web applikaatiosta tulevat kutsut ohjautuvat oikealle Azure-funktiolle käsiteltäväksi. Taustalla ajettavia funktiota voidaan orkestroida puolestaan Durable Functions tavalla toteutetulla Azure-funktiolla. Välissä voidaan käyttää esimerkiksi myös asynkronista viestien välittämistä kuten Azuren Event Grid -palvelua.

Lisää tietoa mikropalveluarkkitehtuurin käyttämisisestä Azuressa löytyy Microsoftin sivuilta.
Kirjoittaja Mikko Sallinen on T-Basen konsultti, joka työssään käyttää Azure funktioita ja erilaisia arkkitehtuurimalleja.
Ota yhteyttä, jos tarvitset apua Azure funktioiden kanssa tai olet kiinnostunut muista palveluistamme.
Tutustu myös näihin:


Azure Road Mapin avulla otat pilvipalvelusta kaiken irti
Kartoituksemme avulla laaditaan yritykselle selkeä Azure roadmap, joka auttaa käyttöönotossa sekä saamaan paremman hyödyn Azuren pilvipalveluista.


Viestinvälitys Microsoft Azure Service Bus -ominaisuudella
Microsoftin Azure Service Bus tarjoaa useita tapoja viestien välittämiseen suojatusti internet-yhteyden yli. Eri viestinvälitystapoja voidaan