Blogi

Näin luot strategian verkkopalvelun modernisointiin

Joonas Pajunen Bisnes Teknologia

Koodaaja istuu työkoneen ääressä Koodaaja istuu työkoneen ääressä

Moni digitaalinen järjestelmä tai palvelu päätyy käyttäjiensä, omistajiensa tai ylläpitäjiensä riesaksi. Sitä ei osata, haluta tai pystytä huoltamaan, vaikka maailma ja käyttäjien tarpeet ympärillä muuttuvat. Palvelu vanhenee ja happanee käsiin. Lopulta se täytyy modernisoida. 

Miten timanttinen verkkopalvelu happanee?

Kaikki vanhoiksi ja huonoiksi haukutut palvelut ovat jossain vaiheessa olleet tekijöidensä silmäteriä ja taidonnäytteitä. Kukaan ei tietoisesti tee huonoja palveluita. Miksi niitä sitten on niin paljon? 

Palveluiden vanhentuminen tapahtuu monella rintamalla:

  • Käytetty teknologia muuttuu kankeaksi. Järjestelmien, pakettien, ynnä muiden tuki loppuu, ja järjestelmään on päivä päivältä vaikeampaa tehdä muutoksia.
  • Käytettävyys jää nykypäivän standardeista ja tottumuksista jälkeen; esimerkkinä erilaisten laitteiden ja ruutukokojen tuki, saavutettavuusominaisuudet ja visuaaliset trendit.
  • Muuttuvan markkinan ja sitä kautta liiketoiminnan tuomat tarpeet muuttavat palvelun vaatimuksia, ja pieniä muutoksia tehdään miettimättä koko järjestelmää ja erilaisia riippuvuuksia. Tehdään niin sanottuja pikakorjauksia ja viritelmiä.

Valtaosa modernisointiprojekteista käynnistyy tarpeesta uudistaa palvelun toiminnallisuuksia ja samalla mahdollistaa nopeampi sekä kustannustehokkaampi palvelun jatkokehitys. Vanhan järjestelmän kanssa työskentely ja sen kehittäminen on muodostunut kalliiksi ja henkisesti sietämättömäksi.

Nykytilan ymmärtäminen ja tavoitteet

Kunnollinen modernisointistrategia muodostuu tavoitteiden määrittämisestä, nykytilan analysoinnista ja näiden erotusta kurovasta toimintasuunnitelmasta. 

Tavoitteita asettaessa tärkeintä on tietysti liiketoiminta, jonka osa-alue on loppukäyttäjien tarpeet. Liiketoiminnan, eikä pelkästään teknisten toiveiden, tulee määrätä tavoitteet. Tavoitteita asettaessa kannattaa olla tietoinen niin sanotusta second system syndroomasta, joka tarkoittaa pienen järjestelmän korvaamista ylituotetulla ja paisuvalla järjestelmällä, jonka kuvitellaan kattavan kaikki mahdolliset tarpeet.

Nykytilaa analysoidessa pitää huomioida, kuinka muovattavissa oleva nykyjärjestelmä on vai onko se lahonnut pystyyn. Lahoamisen tasoa kutsutaan tekniseksi velaksi. Velkaa otetaan aina, kun kehitystyössä oiotaan ja ongelman kunnollinen ratkaiseminen jätetään tulevaisuuden tiimien harteille. Teknisen velan määrä vaikuttaa merkittävästi siihen, kuinka modernisointia voi ja kannattaa lähteä tekemään.

Modernisoinnin toimenpiteiden kartoittaminen

Turvallisinta on tehdä modernisointi osissa tai jos se ei ole mahdollista, ajaa uutta ja vanhaa rinnakkain, jotta saavutetaan riittävä luottamus korvaavan järjestelmän toimimisesta. Mahdollisten vaihtoehtojen kartoittaminen kannattaa aloittaa auditoinnilla, jossa kartoitetaan etenemistapa ensisijaisesti liiketoiminnan tarpeiden näkökulmasta ja toissijaisesti teknologisten haaveiden pohjalta.

Muutama karkea tapa modernisoinnin edistämiseen:

  1. Solmussa oleva softa korvataan täysin uudella. Tehdään koko koodipohjan uudelleenkirjoitus eli aloitetaan puhtaalta pöydältä. Tämä on yksinkertaista, mutta riskialtista, etenkin mikäli vanha järjestelmä on laaja tai monimutkainen. Korvaus tehdään yleensä vuosia liian myöhään ja samalla halutaan uudistaa liikaa. Niin sanottu feature creep yllättää, ellei tuoteomistajalla ole rautainen ote uudistuksen laajuudesta eli scopesta.
  2. Täysimittainen järjestelmän korvaus tehdään osissa, esimerkiksi rakentamalla osa vanhasta monoliitista kokonaan uusiksi mikropalveluina. Mikropalveluita voidaan kehittää toisista irrallaan, joka lisää selkeyttä ja tehokkuutta.
  3. Palvelua itseään refaktoroidaan ja samalla omaksutaan moderneja tapoja käyttää jo kauan sitten valittua teknologiaa. Joskus tämä voi pelkästään tarkoittaa hyvien käytäntöjen omaksumista, koodipohjan jäsentämistä tai esimerkiksi backend- ja frontend-kerrosten eriyttämistä.

Modernisointisuunitelman tärkeimpiä päätöksiä on teknologiavalinnat. Paljon käytetty, toisaalta jopa tylsä, teknologia on todennäköisesti turvallisin ja tulevaisuudenkestävä. Laajasti käytetty teknologia ei mahdollista kilpailuetua, mutta se helpottaa esimerkiksi hyvien käytäntöjen löytämistä, tietoturva-asioiden ajantasaisuutta tai osaamisen löydettävyyttä omaan tiimiin. Mikäli valitset avoimen lähdekoodin teknologioita, olet askeleen lähempänä toimittajariippuvuutta ja teknologista itsenäisyyttä.

Kun yhdistät ylläolevat: nykytilan, tavoitteet ja toimenpiteet, on sinulla käsissäsi modernisointistrategia.

Pitkä prosessi vaatii muutosjohtajuutta ja ihmistaitoja

Pitkään samaa koodipohjaa tehnyt tiimi saattaa elää tietynlaisessa kuplassa. Tiimin toimintamallit ovat toisaalta hioutuneet ja toisaalta mahdollisesti jämähtäneet johonkin ajankohtaan. Uusi ajanmukainen toimintamalli ei välttämättä ole vanhaa parempi tai tehokkaampi, mutta tietty ulkopuolinen näkemys voi aina tuoda tiimille uusia näkökulmia ja uutta ajateltavaa. Muutos itsessään voi lisätä innostusta, mutta myös herättää pelkoja. Modernisoinnissa ei ole pelkästään siis kyse teknologiasta, vaan potentiaalisesti ihmisten roolien tai vastuiden muutoksesta, jolloin tarvitaan kaiken lisäksi muutosjohtajuutta ja ihmistaitoja. Ihmisnäkökulmasta järjestelmäuudistuksissa voit lukea lisää aiemmasta blogikirjoituksestani.

Modernisointi on usein pitkä prosessi, joka kestää kuukausia tai vuosia. Se tarjoaa useita etuja:

  • Onnistunut modernisointi luo tiimille kyvykkyyttä ja etenkin halukkuutta jatkaa modernisointia ja ajan hermolla pysymistä, eikä hanke ole kertaluontoinen rykäisy. 
  • Ideaalitilanteessa tiimille syntyy tavaksi jatkuvasti refaktoroida ja huoltaa niin koodipohjaa kuin käytettävyyteen liittyviä asioita. Tiimi hoivaa rakentamaansa palvelua DevOps-kulttuurin hengessä. 
  • Modernin koodipohjan äärelle on helpompi rekrytoida tekijöitä ja pitää olemassa olevat tekijät mukana ns. oikeista syistä. (Eikä siksi, että heidän osaamisensa vanhentuu markkinaan nähden.)

Parhaimmillaan modernisointi tuo järjestelmät ajan tasalle, lisää tehokkuutta, poistaa työn eriskummallisia esteitä, auttaa ajattelemaan omia prosesseja uusilla tavoilla ja luo pohjan jatkuvalle asioiden kehittämiselle.

Fraktiolla yhdistämme teknisen erinomaisuuden ja muutosjohtajuuden tarjoamalla asiakkaillemme valmentavaa kumppanuutta. Toimintamallistamme voit lukea lisää tästä blogikirjoituksesta.