Hyppää sisältöön
kuvituskuva autotehdas

Pilvipalveluratkaisu syntyi kuin liukuhihnalta

Valtiokonttorissa kehitetään ketterästi ja viedään palveluita pilveen. Pilvimatkalla tarvitaan monesti rohkeutta kokeilla uutta ja ottaa joskus hallittuja riskejäkin, mutta toisinaan sovelluskehitykseen voi saada inspiraatiota myös vanhoista hyvistä malleista ja menetelmistä. Uusi esimerkkiratkaisumme palvelun pilveistyksestä, viranomaisvaatimusten mukaiseksi mallinnettu RRP-pilvipalveluratkaisu, syntyi mallinnustyökalun avulla yhdeksässä kuukaudessa – kuin liukuhihnalta.

Rakenteistettu malli ratkaisuna muuttuviin viranomaisvaatimuksiin

Viranomaisvaatimusten mukainen Azure-pilvipalveluratkaisu syntyi yhdeksässä kuukaudessa – uuteen kehitystapaan otettiin avuksi ”ratkoja” eli LeBlanc-niminen mallinnustyökalu

RRP-pilvipalveluratkaisu auttaa viranomaisia raportoimaan ja Valtiokonttoria valvomaan EU:n elpymis- ja palautumistukivälineen (Recovery and Resilience Facility, RRF) rahoittamien toimenpiteiden ja hankkeiden tavoitteiden toteuttamista ja varojen asianmukaista käyttöä. Edellytyksenä palvelulle on, että se täyttää siltä vaaditut viranomaisvaatimukset. Esimerkkiratkaisu on ulkoisesti kuin mikä tahansa sovellus – taika löytyy tuotantotavassa. Ratkaisussa viranomaisasiakirjojen vaatimustenmukaisuus on rakenteisessa muodossa yhdessä tiedostossa, josta generoidaan Azure-pilvialustalla toimiva palveluratkaisu.

Miksi viranomaisvaatimukset kannattaa rakenteistaa malliksi, josta voidaan generoida pilvipalveluratkaisu?

Viranomaisvaatimukset muuttuvat ja tarkentuvat sekä vaativat jopa nopeita muutoksia tietojärjestelmiin, joilla todennetaan vaatimustenmukaisuus.

Analogiaa Fordin liukuhihnamenetelmästä

Henry Ford keksi liukuhihnamenetelmän vuonna 1914. Menetelmässä hyödynnettiin kokoonpanolinjaa, mikä teki auton valmistamisesta nopeampaa ja laadukkaampaa sekä autoista halvempia. Laadukkuus syntyy siitä, että minimoidaan erilaisista tekijöistä aiheutuva vaihtelu. Fordin ajatusta voi soveltaa ja peilata myös pilvipalveluratkaisun kokoonpanoon. Mallikeskeisessä kehittämisessä vaatimustenmukaisuus on osa mallia, ja siitä generoidun koodin vaihtelu rutiinitoiminnallisuuksien (lisäys, muutos ja poisto) implementoinnissa on poistettu.

Valtiokonttorin ja muidenkin viranomaisten intresseissä on varmistaa tietoteknisissä järjestelmissä ja sovelluksissa vaatimustenmukaisuus sekä yhteentoimivuus sidosryhmien tietoteknisten ratkaisujen kanssa. Yhteentoimivuuden esteinä ei juuriaan ole teknologia, vaan samojen vaatimusten erilainen tulkinta ja ratkaisut, joilla vaatimustenmukaisuuteen vastataan.

Valtiokonttorilla on mandaatti antaa kansallisesti määräyksiä ja suosituksia, joilla varmistetaan näiden tulkintojen ja toteutettavien ratkaisujen yhdenmukaisuus. Parhaimmillaan nämä voivat olla rakenteisessa muodossa olevia malleja, jotka voidaan implementoida eri tavoin, mutta joiden tietosisältö ja -rakenne sekä käsittelysäännöt säilyvät samoina.

Asiantuntijoita kunnioittava mallinnuskulttuuri ja kehittäjiä kunnioittava kehityskulttuuri

Viranomaisvaatimukset täyttävän RRP-pilvipalveluratkaisun kehitystyö lähti liikkeelle marraskuussa 2021, jolloin teimme ensimmäisen selvityksen LeBlanc-nimisen työkalun soveltuvuudesta. Valtiokonttori otti hallitun teknologiariskin uuden mallinnustyökalun käyttöönotossa ja varautui kehityskulttuurin muutoksesta aiheutuviin kasvukipuihin. Mallinnustyökalun avulla ratkaisu syntyi yhdeksässä kuukaudessa. Kokemukset voi kiteyttää muutamaksi suositukseksi muille mallikeskeisen kehitystavan valitseville:

  • Mallinna aluksi keskeiset perustiedot ja vie ne mallin mukaan generoituun tietokantaan. Generoidulla käyttöliittymällä, joka hakee ja tallentaa tietoja generoidusta tietokannasta, havainnollistetaan vaatimustenmukaisuutta. Samalla osallistetaan substanssiasiantuntijat tarkentamaan vaatimuksia sekä mahdollisesti voidaan varmistaa vastuuviranomaisilta vaatimustenmukaisuus.
  • Korosta kehittäjille, että heidän ammattitaitoaan halutaan käyttää ongelmien ratkaisemiseen. Bulkkikoodia voidaan generoida, ongelmien ratkaisemiseen tarvitaan kehittäjille tyypillisiä loogisia päättelykyvykkyyksiä ja teknisiä ohjelmointikyvykkyyksiä.
  • Sovella ketterän kehityskulttuurin helmiä. Vaatimuksista malliin -vaihe on dialogia substanssiasiantuntijoiden kanssa. Ketteryys tulee esille siten, että määrittelyjä havainnollistetaan välittömästi määrittelyistä generoitujen käyttöliittymien avulla. Ketterän kehityksen sprinttiajattelu ja seremoniat soveltuvat käyttöön kehittäjien kanssa yhdessä sovittujen kustomoitavien asioiden toteuttamiseksi.
  • Mittaa ja seuraa sekä ottaudu alusta saakka koodin laatuasioihin ja tietoturvavaatimusten täyttämiseen. Kun SonarQuben tai vastaavaan tuotteen laatuindikaattorit osoittavat pyöreää nollaa koodin laatuvirheissä, niin ammattiylpeys kasvaa kohisten. Kun Azuren Compliance Managerin mittarit vaihtuvat punaisesta vihreään, niin voidaan turvallisin mielin viestiä eri sidosryhmille pilvipalveluratkaisun tietoturvallisuusvaatimustenmukaisuudesta (pitkä sana, mutta niin on tietoturvallisuusvaatimusten listakin).
  • Muista jatkokehittäminen ja ylläpidettävyys, jos joku asia voisi hetkellisesti olla nopeampi koodata manuaalisesti generoinnin sijaan. Mallissa nämä hoituvat yhdessä paikassa ja generoituvat oikeisiin rakenneosiin, josta pilvipalveluratkaisu muodostuu.

Kehittämistyössä ei aina kannata keksiä pyörää uudelleen, vaan hyödyntää myös aiempia hyväksi havaittuja malleja – oli kyse sitten autojen kokoonpanosta tai pilvipalveluratkaisujen rakentamisesta. Jos haluat kuulla tarkemmin kokemuksistamme mallikeskeisen kehittämisen mahdollisuuksista tai pilviresurssien hyödyntämisestä, ota yhteyttä!