Ihana kamala legacy

3 ihmistä katselee tietokonetta ihmeissään

Olipa kerran ohjelmisto – ei ehkä klassista legacyä, mutta koodattu vuonna 2018 ja sittemmin unohdettu. Ohjelmisto oli SaaS:a puhtaimmillaan, ns. multitenantti, pieni, ketterä ja ennen kaikkea tarpeeseen tehty.

Paitsi että ei ollutkaan. Palvelua kehitettiin muiden palveluiden rinnalla ja myyntiäkin aloiteltiin varsin aktiivisesti. Lopulta vain markkinaa ei ollut riittävästi ja maksavia asiakkaita saatiin vain pieni määrä.

Ohjelmisto pohjautuu tuolloin käytössä olleisiin teknologioihin: NodeJS+ExpressJS, ReactJS, PostgreSQL jne. Varsin pätevä pino edelleen, kunhan päivitykset ja tietoturva ovat kunnossa.

Ohjelmisto ajautui moneksi vuodeksi “ylläpitotauolle”, jonka aikana kaikki käytetyt teknologiat kehittyivät ja ajossa oleva versio muuttui jo vaarallisen vanhaksi.

Yritysjärjestelyjen takia se myytiin ulos eli siivottiin pois häiritsemästä. Mukana ei kuitenkaan siirtynyt kehitystiimiä, myyntitiimistä puhumattakaan. Vain maksavat asiakkaat siirtyivät.

Eräänä kauniina päivänä päätettiin ottaa legacy-koodia sarvista ja väkisin runnoa koodiin päivitykset. Loppujen lopuksi asiakkaat maksavat palvelusta ja on kaikkien etu, että se toimii hyvin ja ei ole turvaton. Päivityksillä taataan myös “päivitettävyys” tulevaisuudessa.

Osa backendin käyttämistä paketeista oli kokonaan poistunut käytöstä, joten itse ohjelmiston toimintaa piti täydentää ottamalla käyttöön tuetut, uudemmat vastineet vanhoille kirjastoille. Samassa mm. tietokantapalvelin piti päivittää uudempaan versioon.

Frontendin osalta tilanne oli vielä pahempi: lukuisia poistuneita kirjastoja, paljon käyttämätöntä koodia ja vanhentuneita käytänteitä. Käytetty React+Redux+Babel -kombinaatio heijasti aikaansa, mutta uudempien versioiden logiikka on varsin erilaista. Käytännössä koko frontend piti koodata uusiksi: käyttöön React:n hookit, Reduxin uudelleenkirjoitus, TypeScript kaikkialle käyttöön.

Työtunteja projektiin meni aika railakkaasti, vaikka ei puhutakaan kovin monimutkaisesta ohjelmistosta. Nyt tilanne on hallittavampi ja käytettyjen kirjastojen versiot tarkastetaan lähes kuukausittain. 

Jatkokehityslistalla on ainakin palvelun kontitus ja ajo oikeassa pilvi-ympäristössä, jotta ajoympäristön hallinta ja ohjelmiston päivitysten hallinta olisi kevyempää.

Päivitysten tekeminen ja ohjelmiston jatkuva kehittäminen on usein vaikea perustella, koska niillä ei saada lisäarvoa tai uusia ominaisuuksia ohjelmiston käyttöön. Monesti niistä ei myöskään haluta maksaa. Niin autoille kuin taloillekin tehdään huoltoja säännöllisesti – sen takia että ne toimisivat kunnolla ja pitempään, miksei siis ohjelmistoillekin.

Mutta, jossain vaiheessa ohjelmistolle tulee antaa armonlaukaus. Lopulta asiakkaan etua voisi palvella paremmin kokonaan uusi ohjelmisto, kuin tekohengitetty vanha.


Kirjoittanut

Timo Kallela – CXO

Timolla on vankka kokemus startup-yrityksistä, ohjelmistotuotteiden kehittämisestä ja kehitystiimien luotsaamisesta. Varaanilla Timo on koodaavan asiakastyön lisäksi kehittämässä toimintaa mm. rekrytointien ja kumppanuuksien osalta.