Ohjelmistoarkkitehtuurien lyhyt historia 
Arkkitehtuurin kehitystä ohjaa prosessoinnin kiertokulku, tietoliikenne sekä kontti- ja virtualisointiteknologia.
Eero Keltikanags
20.10.2023

Tietotekniikan kehitysvauhti 1980-luvulta tähän päivään hakee vertaistaan. Pelkästään ”raudan” kaikki suorituskykyarvot ovat nyt luokkaa miljoonakertaiset, kun hinta puolestaan on murto-osa silloisesta. Ei siis ihme, että tietotekniikka on nykyään tavalla tai toisella mukana käytännössä kaikessa ja olemme tulleet siitä riippuvaisiksi. 

Laitteistojen ja niiden välisen tietoliikenteen kehittyessä sekä käyttäjämäärien ja käyttäjien tarpeiden kasvaessa ohjelmistot ovat nopeasti monimutkaistuneet. Alkuaikojen eräajopohjaisista järjestelmistä on jalostunut monimuotoinen joukko hajautettuja, interaktiivisia, tapahtumapohjaisia ja sulautettuja järjestelmiä. Samalla tapahtunut kompleksisuuden kasvu on pakottanut hakemaan keinoja hallita sitä. Ohjelmistoarkkitehtuuri tieteenhaarana syntyi 1990-luvulla tästä tarpeesta. Se keskittyy keinoihin, yleensä kuvaamalla, havainnollistaa tietojärjestelmän sisärakennetta sen suunnittelun ja ylläpidon edellyttämällä tarkkuustasolla. 

Tietojärjestelmien evoluution myötä myös niiden ohjelmistoarkkitehtuurien perustoimintatavat, tai tyylit, ovat kokeneet evoluution. Tämän hahmottamiseksi on hyvä tarkastella niitä ajureita, jotka ovat vaikuttaneet tämän kehityksen taustalla. 

Kehityksen ajurit 

Ensimmäisenä ajurina on keskitetty vs. hajautettu prosessointi ja siihen liittyvä kiertokulku. Henkilökohtaisten tietokoneiden tultua yleisesti saataville niillä oli rooli sekä siihen asennettujen ohjelmistojen ajoympäristönä että päätekäytössä. Tietokoneiden tehon noustessa, tietoverkkojen yleistyessä ja tietokantojen tullessa yleisesti saataville siirryttiin monessa tietojärjestelmässä asiakas-palvelin-arkkitehtuuriin, jossa käsittely hajautettiin palvelimen ja työasemien kesken. Sen rinnalle syntyi 1990-luvulla nykyisenkaltaisten HTML-pohjaisten web-järjestelmien arkkitehtuureja, joissa puolestaan käsittely keskitettiin web- ja sovelluspalvelimille. Puhtaasti HTML-pohjaisten järjestelmien käytettävyyshaasteita ratkomaan on sittemmin kehitetty koko joukko tekniikoita, kuten yksisivuiset web-sovellukset, joissa käytännössä yhdistetään asiakas-palvelin-arkkitehtuuri web-järjestelmään ja siten hajautetaan merkittävä osa prosessoinnista selaimeen. 

Toisena ajurina on tietoliikenne. Pitkälle 1990-luvulle tietokoneiden välinen kommunikointi oli suhteellisen hidasta ja perustui ustom-protokolliin sekä tietokantoihin/sanomajonoihin. Tällöin jokainen integraatio edusti merkittävää kustannusta ja toteutustyön määrää. Tilannetta voi suhteuttaa nykyhetkeen, jolloin tietoliikenne enää harvemmin on pullonkaula ja HTTP-pohjaisen REST-rajapinnan kykenee toteuttamaan ja julkaisemaan aikaisempaan verrattuna minimaalisilla kustannuksilla. Kyky kustannustehokkaaseen ja tietoturvalliseen rajapintojen toteuttamiseen ja käyttämiseen on merkittävä, ellei merkittävin, tekijä erilaisten hajautettujen ohjelmistoarkkitehtuurityylien, kuten mikropalveluarkkitehtuuri, yleistymisessä. 

Kontti- ja virtualisointiteknologia on kolmas ajuri. Konttien ja virtualisoinnin avulla kyetään tietojärjestelmän suoritettavia osia tarvittaessa monistamaan tai karsimaan sekä siirtämään ajoympäristöstä toiseen, jopa käyttöjärjestelmä- tai käskykantarajat ylittäen. Tämä on mahdollistanut dynaamisen skaalautuvuuden tuomisen ohjelmistoarkkitehtuureihin ja erilaiset hajautetut ohjelmistoarkkitehtuurityylit, mm. reunalaskentaa sisältävät. 

Neljäntenä ja viimeisenä ajurina on pilvilaskenta. Sen synnyn siemenenä oli edistyneet tietoliikenneyhteydet ja virtualisointiteknologia, mutta kasvu on isolta osin seurausta konttiteknologian tuomista mahdollisuuksista. Pilvilaskennan palvelujen kehittyminen on osaltaan merkittävästi vienyt ohjelmistoarkkitehtuureja eteenpäin, mutta toisaalta pilvilaskennan suosion kasvu on myös vaatinut niiden adaptoitumista sen tarjoamiin palveluihin ja etenkin niiden rajoitteisiin. 

Kehityksen jatko 

Entä mihin evoluutio vie tästä eteenpäin, esimerkiksi seuraavan 30 vuoden aikana? 

Osallistuin toistakymmentä vuotta sitten projektiin, jossa haettiin integraatioarkkitehtuuria seuraaviksi 25–40 vuodeksi. Oppina siitä oli yksinkertainen sääntö: se mikä on ollut käytössä viimeiset 15–20 vuotta, tulee todennäköisemmin säilymään käytössä vielä saman ajan kuin alle viisi vuotta käytössä ollut tulee säilymään käytössä seuraavat viisi vuotta. 

Edellä käsiteltyjä ajureita voidaan arvioida tätä sääntöä vasten ja yrittää siten tunnistaa kehityksen suuntaa. 

Keskitetyn vs. hajautetun prosessoinnin valinnassa tärkeitä kriteerejä ovat laite- ja tietoliikennekustannukset, ohjelmistojen asennus- ja ylläpitotyö sekä tietoturva. Oikeastaan kaikki tekijät puoltavat hajautetut prosessoinnin yleistymistä, kuten on jo tapahtunut yli 20 vuoden ajan. 

Tietoliikenteessä on selkeä tilanne, sillä vaikka siirtoteissä tapahtuu kehitystä, niin IP-verkkoinfra on sellainen peruskivi, joka ei hievahda. Saman voi todeta HTTP:n ja REST-rajapintojen asemasta: niiden yksinkertaisuus, laajennettavuus ja ylivoimainen ekosysteemi pitkälti vievät elintilan kaikelta muulta. 

Kontti- ja virtualisointiteknologioissa sen sijaan on odotettavissa merkittävää kehitystä, etenkin ”kevytkonttiteknologian” saralla. Tämä ei tule syrjäyttämään nykyisiä, mutta mahdollistaa pilvi- ja reunalaskennassa yhä hajautetumpia ohjelmistoarkkitehtuureja ja mielenkiintoisia ”serverless”-tyylejä. Kevytkontteja voidaan käyttää yhä rajoittuneimmissa ympäristöissä, ne ovat käyttöjärjestelmä- ja prosessoririippumattomia ja niiden tietoturvamalli on hajautukseen sopiva. 

Pilvilaskennasta on nopeasti muotoutunut uusi peruskivi, jota tukevat alan globaalien jättien miljardien vuosittaiset investoinnit ja kova kasvu. Jättien runkoverkoissa kulkee jo kaksi kolmasosaa kaikesta kansainvälisestä internet-liikenteestä ja siksi niillä on aitiopaikka monitoroida sitä tietoturvauhkien osalta. Miljoonien palvelinten hankinnassa suuruuden ekonomia tuo oleellista etua, kuten myös niiden keskittäminen valtaviin datakeskuksiin. Laitteiston eri komponenttien luotettavuutta voi tästä massasta kattavasti analysoida ja siten minimoida vikaantumiset. Häiriöt saadaan käytännössä eliminoitua muilla vikasietoisuuteen liittyvillä tekniikoilla ja käytännöillä. Palveluiden kustannukset kyetään jakamaan lukemattomien asiakkaiden kesken. Mallista on vaikea löytää heikkouksia, varsinkin kun pahimmat pelot tietoturvan osalta ovat poistuneet. 

2050-luvun tietojärjestelmät ja ohjelmistoarkkitehtuurit 

Miltä siis tietojärjestelmät voisivat näyttää 2050-luvulla? 

Oletan peruskuvan olevan pitkälti ennallaan. Iso osa tietojärjestelmistä on varmasti edelleen eräajopohjaisia, kuten tällä hetkellä. Interaktiivisissa tietojärjestelmissä pääpaino on siirtynyt rikkaisiin selainkäyttöliittymiin, jotka kutsuvat REST-rajapintaisia palveluja. Sisäiseltä ohjelmistoarkkitehtuuriltaan palvelut ovat tapahtumaohjautuvia mikropalveluja, funktioita palveluna tai niiden yhdistelmiä. Suoritettavat osat on paketoitu konteiksi tai kevytkonteiksi. Sulautetut järjestelmät ovat myös yhä useammin kevytkonteiksi paketoituja ja siten tarvittaessa etäpäivitettäviä. 

Entä ohjelmistoarkkitehtuurit ja niiden rooli? 

Tietojärjestelmien laajuus ja monimuotoisuus lisääntyy ja tälle kehitykselle ei näy loppua. Monoliitteina niiden hallinta muodostuu mahdottomaksi, kun puolestaan hyvin pieniksi kokonaisuuksiksi pilkottuna osien paketointi-, koostamis- ja hallintakustannukset räjähtävät. Käytettävissä oleva teknologia määrittelee tälle kulloisenkin optimin. Trendi on ollut kohti pienempiä osia, eikä mikään viittaa siihen, että se olisi kääntymässä. Etenkin erilaisten siihen liittyvien palveluna tarjottavien valmistoiminnallisuuksien määrä on vahvassa kasvussa. Ohjelmistoarkkitehtuureille tämä tarkoittaa toisaalta yksinkertaisempaa kontekstia yksittäisen osan suhteen, mutta toisaalta monimuotoisempia vaatimuksia kokonaisuuden osalta. Ja tärkeää roolia myös jatkossa. 

Lyhyen historian perään on syytä odottaa pitkää tulevaisuutta.

Artikkelin kirjoittaja Eero Keltikangas, DI, on yli kolmen vuosikymmenen ajan toiminut erilaisissa ohjelmistoarkkitehtuuriin liittyvissä rooleissa. Nykyään hän on teollisuuden pilvilaskennan ratkaisuihin keskittyvän Innotect Oy:n teknologiajohtaja.

Artikkeli on ensimmäistä kertaa julkaistu Sytyke -lehdessä.
Lisätietoja www.sytyke.org

Suositellut

Uusimmat