Integroidut integraatiot

Kirjoitettu

Asiakkaan verkkosovellus oli elänyt pitkään omillaan, mutta ennen pitkää oli havaittu, että tuki integraatioille muihin järjestelmiin voisi olla kysyntää. Sovelluksessa ei kuitenkaan ollut suoraa valmiutta tälle, sillä sen rajapinnat oli suunniteltu vain sisäiseen käyttöön.

Integraatioita koeponnistettiin yhden integraatioalustan avulla, jonka kanssa asiakas oli kehitellyt sopimusta. Sen etuna oli graafinen käyttöliittymä, jonka avulla integraatiopolkuja saattoi luoda ilman koodaamista. Muutamat muutkin alustan ominaisuudet olivat vallan käteviä kokeiluvaiheessa, jolloin ei vielä haluttu tehdä isoja investointeja, ei rahan eikä koodaamisen näkökulmasta.

Olin toteuttamassa näitä kokeiluvaiheen integraatioita. Valitsimme pari keskeistä tietomallia, joiden dataa halusimme siirtää järjestelmien välillä. Kirjoitin koodia, joka lähetti dataa integraatioalustalle sen omaa rajapintaa käyttäen. Toteutus oli varsin kevyt, mutta toisaalta oli käyttökelpoista vain tämän tietyn integraatioalustan kanssa. Se sopi koeponnistukseen, mutta ei olisi ollut käyttökelposta isommassa skaalassa.

Integraatiot todettiin hyödyllisiksi, ja niitä haluttiin lisätä. Tässä vaiheessa mieleeni alkoi hiipiä epäilys: jos jatkaisimme samalla kaavalla ja integroituisimme kiinteästi testaamaamme integraatioalustaan, olisimme pulassa, jos missään vaiheessa tulisi tarve käyttää jotain toista työkalua.

Tein ison päätöksen, ja aloin toteuttaa julkista rajapintaa integraatioita varten. Tämä osoittautui myöhemmin oikeaksi päätökseksi. Ei nimittäni mennyt kovin kauaa, kun integraatioalustaa tarjoava yritys järjesteli toimintojaan uusiksi, ja tuki käyttämällemme tuotteelle loppui. Jos olisimme lukittautuneet siihen, olisimme olleet pulassa. Integraatiot oli kuitenkin hyvissä ajoin ehditty siirtää toimimaan tämän uuden integraatiorajapinnan kautta.

Integraatiotuesta alkoi kasvaa merkittävä tulonlähde. Avustettu integraatioiden rakentaminen myös työllisti asiakaspalvelijoita yllättävän paljon (koska suurin osa loppuasiakkaista ei ollut teknisesti eteviä, rakennettiin heidän toivomiaan integraatioita heille palveluna).

Testasimme integraatioiden toimivuutta muutamien yleisimpien alustojen kanssa – Zapier, n8n ym. – jotta varmistaisimme, ettemme olisi jumissa minkään tietyn palvelun kanssa. Integraatioiden tarve kasvoi koko ajan.

Suuri kysyntä synnytti erikoisen ongelman: asiakaspalvelijat eivät oikein ehtineet rakentaa integraatiota samassa tahdissa kun niitä kysyttiin. Integraatioalustat tietysti mainostavat itseään nopeiksi ja helppokäyttöisiksi, mitä ne varmasti ovatkin yksinkertaisten integraatioiden kanssa, mutta vähänkin monimutkaisimmissa työtä on jo enemmän.

Aloimme asiakkaan kanssa pohtia, miten saisimme integraatioiden tekemisestä niin helppoa, että yhä useampi loppuasiakas voisi tehdä niitä omatoimisesti. Yhtenä vaihtoehtona oli ruveta partneriksi ainakin parille eri integraatioalustalle, siis siten, että asiakkaani järjestelmä (eli toteuttamani integraatiorajapinta) olis valmiina vaihtoehtona näiden alustojen tukemien verkkopalveluiden joukossa. Oikeastaan mitä useamman alustan valikoimissa olisimme, sitä parempi.

Integraatioalustoihin integroituminen ei kuitenkaan ollut mitenkään helppoa. Tunnetuimmat niistä tukevat vain kaikista yleisimpiä palveluja – Google Docs, X (Twitter), Facebook, muut sosiaaliset media, Dropbox ja sen sellaiset – mutta eivät vähänkään erikoisempia B2B-tuotteita. Jos olisimme halunneet listautua näihin järjestelmiin, olisi meidän pitänyt toteuttaa ns. rajapinta-adapteri erikseen jokaiseen järjestelmään. Toisin sanoen olisimme jälleen joutuneet ottamaan riskin ja käyttämään arvokasta koodausaikaa järjestelmäspesifisten komponenttien toteuttamiseen ja ylläpitoon.

Tämä ei houkutellut, joten kehittelin jälleen mahtipontisen ajatuksen: olisi luultavasti helpompaa luoda yksinkertaistettu integraatioalusta suoraan osaksi asiakkaani verkkopalvelua. Jos kerran joutuisimme joka tapauksessa kirjoittamaan adapterikoodia, voisimmekin kirjoittaa adapterit suoraan omaan järjestelmäämme, jolloin kokonaisuus olisi selkeämmin hallussamme ja oman päätösvaltamme alla. Alusta asti oli toki selvää, että tämä olisi suuri hanke, mutta suuria hankkeita olisivat olleet kaikki muutkin käsissä olleet vaihtoehdot.

Hahmottelin mielessäni pyörineen järjestelmän arkkitehtuurin ja tein siitä projektipäällikölle esityksen. Se olisi luonteeltaan modulaarinen ja sitä voitaisiin toteuttaa pala kerrallaan. Kaiken ei siis tarvitsisi valmistua kerralla.

Suunnitelmani hyväksyttiin ja aloin toteuttaa sitä muiden työtehtävien rinnalla. Urakka oli raskas, mutta kun tarvittavat peruspilarit olivat valmiina, saimme aluksi yhdensuuntaisia datavirtoja käyttöömme ja dataa luetuksi sisään ulkoisista verkkopalveluista. Hieman myöhemmin, kun työtilanne sen salli, aloin kirjoittaa toteutuksia myös datan kirjoittamiseksi asiakkaan verkkopalvelusta ulospäin.