Event-pohjaiset integraatiot ovat lisänneet suosiotaan, eikä suotta. Integraatioarkkitehti Janne Nieminen kertoo, mistä tapahtumapohjaisissa integraatioissa on kyse ja mitä hyötyjä ne tarjoavat muihin vaihtoehtoihin verrattuna.
Tapahtumapohjaiset eli event-pohjaiset integraatiot ovat lisänneet suosiotaan viime aikoina. Pidempään alalla olleille event-pohjainen arkkitehtuuri (Event-Driven Architecture) voi kuulostaa varsin tutulta esimerkiksi käyttöliittymäohjelmoinnissa. Nyt kuitenkin asiaa tarkastellaan tuoreesta näkökulmasta.
Lyhyesti tapahtumapohjaisessa integraatiossa on kyse siitä, että kohdejärjestelmän tarvitessa tietoa lähdejärjestelmästä, kohdejärjestelmä kuuntelee lähdejärjestelmän julkaisemia tapahtumia ja reagoi niihin sen sijaan, että käydään säännöllisin väliajoin hakemassa tietoja lähdejärjestelmästä. Tämä event-pohjainen reagointitapa on luonnostaan reaaliaikaisempi ja tehokkaampi kuin perinteinen ns. pollaukseen pohjautuva. Näin saadaan siis rakennettua esimerkiksi mobiilisovelluksia, joissa käyttäjän näkemät tiedot päivittyvät sovellukseen miltei samanaikaisesti niitä taustajärjestelmässä muutettaessa.
Tapahtumat voivat olla yksittäisiä, esimerkiksi uusi asiakas luotu tai asiakkaan tiedot päivitetty. Joskus tapahtumia voidaan kuitenkin tulkita useiden tapahtumien yhteen liittyvänä virtana. Jos esimerkiksi niputetaan yhteen asiakkaan pankin tilitapahtumat, saadaan lopputuloksena tapahtumavirta, jonka avulla voidaan arvioida asiakkaan tilin potentiaalisia väärinkäytöksiä. Tällaista toisiinsa liittyvää tapahtumien joukkoa kutsutaan event streamiksi eli tapahtumavirraksi. Sen ymmärtämiseksi on tärkeää pystyä reaaliaikaisesti analysoimaan tapahtumien osajoukkoja, kuten viimeisen päivän tai tunnin tapahtumasarjoja. Tämä tarkoittaa, että perinteiset jonopohjaiset integraatioalustat eivät sovellu suoraan tähän käyttötarkoitukseen, koska jonopohjaisissa järjestelmissä sanomat poistetaan sitä mukaa, kun ne on luettu.
Tätä ongelmaa ratkaistakseen syntyivät uuden sukupolven event streaming -alustat. Niistä suosituin on tällä hetkellä open source -projekti Apache Kafka, johon suurin osa nykyisistä eri toimittajien event-alustoista perustuu.
Mitä hyötyä sitten on käsitellä perinteisten yhdeltä järjestelmältä toiselle tarkoitettujen sanomien tai REST-rajapintakutsujen sijaan tapahtumia ja tapahtumavirtoja? Tässä on joitakin esimerkkejä tapahtumapohjaisuuden hyödyistä:
Vaikka eventtejä voidaan lähettää perinteisiäkin sanomanvälityksen teknologiaa hyödyntäen, viime aikoina open-source-teknologia Apache Kafka ja siihen perustuvat event-alustat ovat vallanneet markkinoita. Kafkassa event-data tallennetaan jonon sijaan levylle sanomalokiin, jossa se säilyy ennalta määrätyn ajan.
Syynä Kafkaan perustuvan teknologian yleistymiseen on ainakin kaksi:
Vaikka Apache Kafka on nykyään yleisin käytetty Event Streaming -alusta, on sen ylläpito itse asennettuna haastavaa. Tämän vuoksi erityisesti julkiseen pilveen on syntynyt joukko Platform as a Service (PaaS) -palveluita, jotka tarjoavat Kafkan toiminnallisuuden ilman, että käyttäjä joutuu huolehtimaan taustalla olevan monimutkaisen infrastruktuurin ylläpidosta. Tässä joitakin esimerkkejä Suomessa käytössä olevista teknologioista
Mikä näistä vaihtoehdoista kannattaisi sitten valita, jos haluaa edetä Event Streaming -kyvykkyyksien käyttöönotossa? Tämä riippuu paljon olemassa olevasta teknologiastackistä, pilvistrategiasta ja muista näkökulmista. Autamme mielellämme teknologiavalinnan vertailussa sovittaen kriteerit käytössä olevan ympäristön tarpeisiin.
Digian näkemyksen mukaan tapahtumapohjaiset integraatiot ja Event Streaming -alustat ovat keskeinen osa modernia integraatiokyvykkyyttä. Ne mahdollistavat uudella tavalla lisäarvoa tuottavien digitaalisten palveluiden rakentamisen. Suosittelemme seuraavaa etenemismallia:
Muista, että tapahtumapohjaisuus on paljon muutakin kuin teknologiaa. Se vaatii uudenlaisen ajattelutavan, joka täytyy levittää yrityksen sisällä käyttöön arkkitehtien ja projektipäälliköiden työkalupakkiin. Teknologian suurista lupauksista huolimatta kannattaa kuitenkin pysyä valppaana, ettei tapahtumapohjaisuutta pyritä hyödyntämään joka paikassa tuoden vain ylimääräistä kompleksisuutta ja kustannuksia. Modernissa integraatioarkkitehtuurissa APIt, perinteiset integraatiot ja tapahtumapohjaiset integraatiot soveltuvat kukin parhaiten tiettyihin käyttötapauksiin.