Datamigraatio verkkopalvelu-uudistuksissa

Verkkopalveluiden uudistuksissa yksi perinteisesti tympeimmistä työvaiheista on ollut vanhan datan migraatio. Nykyisillä ohjelmointialustoilla migraatiot eivät enää ole kovinkaan työläitä toteuttaa, mikä näkyy asiakkaalle mukavasti uudistusprojektin hintalapussa ja kestossa - eikä kehittäjätkään karsasta lyhimmän tikun käteen jäämistä.

Verkkopalveluiden uudistuksissa yksi perinteisesti tympeimmistä työvaiheista on ollut vanhan datan migraatio. Ongelmaa on useimmiten taklattu erilaisilla skriptauksilla, jotka lukevat vanhaa dataa sisään uuteen järjestelmään sen vaatimassa rakenteessa. Työvaiheesta on voinut selvitä pienellä työmäärällä mikäli vanhan järjestelmän migraatio on kehittäjän näkökulmasta selkeä ja yksinkertainen, mutta usean kuukaudenkin mittaiset migraatiotyövaiheet eivät ole mitenkään poikkeavia työrupeamia.

Nykyisillä ohjelmointialustoilla migraatiot ovat hyvin paljon helpompia toteuttaa. Ohjelmointialustat, frameworkit, käyttävät sovelluskoodin ja tietokannan välissä ORM-kerrosta (Object Relational Mapping), minkä tehtävänä on hoitaa kommunikaatio sovelluksen ja tietokannan välillä. ORM:ien perusominaisuuksiin on kuulunut jo hyvän tovin tietokantojen rakenteen tutkiminen ja tarvittavien luokkien generointi rakenteen perusteella. Tämän avulla voidaan vanha tietokanta valjastaa uuden palvelun käyttöön helposti esimerkiksi silloin, kun tuntemus vanhasta palvelun rakenteesta on puutteellista kehittäjien vaihtuessa tai uusi palvelu toteutaan teknisesti erilaisessa ympäristössä.

Näin ollen migraatiovaihe ei itseasiassa olekaan enää pakollinen työvaihe, sillä sovellukset voivat sujuvasti käyttää myös vanhaa, olemassa olevaa dataa uuden tietokannan rinnalla. Mikäli migraatio toteutetaan niin ohjelmoijan tehtävä helpottuu huomattavasti ORM:n toteuttaessa perusrakenteet ja ohjelmoija voi keskittyä vain sopivien migraatioprosessien luomiseen. Kokemukseni mukaan tämä voi pienentää työmäärää murto-osiin mikä näkyy asiakkaalle mukavasti uudistusprojektin hintalapussa ja kestossa.

Vanhan datan säilyttäminen entisellään käytettävissä, eristettynä palvelun uuden tietokantarakenteesta avaa myös muita hyödyllisiä mahdollisuuksia. Esimerkiksi hakukoneoptimoinnin kannalta vanhojen URL-osoitteiden validointi ja uudelleenohjaukset voidaan toteuttaa siten, että vanhaan osoitteeseen tuleva pyyntö tarkistaa ensin vanhan datan olemassaolon ja mikäli URL on validi, niin pyyntö ohjataan uuteen osoitteeseen. Näin uuden tietokannan ei tarvitse ylläpitää tietoa vanhoista osoitteista, mikä useimmiten muuttuu painolastiksi jossain vaiheessa palvelun elinkaarta.

Kirjoittaja: Veli-Matti Viippola