Event-pohjaiset integraatiot – muutakin kuin hypeä?
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.
Event Streaming – hyödyt
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ä:
- Mahdollistaa responsiivisten käyttöliittymien rakentamisen, kun tiedot päivittyvät nopeasti sovellukseen sitä mukaa kun ne muuttuvat. Tästä seuraa parempi käyttäjäkokemus.
- Tarjoaa mahdollisuuden siirtyä reaaliaikaiseen analytiikkaan perinteisen eräajopohjaisen batch-analytiikan sijaan. Näin liiketoiminta pystyy reagoimaan ketterämmin liiketoimintadataan ja muutostrendeihin. Mahdollistaa myös käyttäjälle tarjottavat reaaliaikaiset tapahtumiin perustuvat palvelut.
- Mikropalveluarkkitehtuurissa mahdollistaa uusien sovellusten liittämisen tapahtumadataan ketterästi ns. Event Sourcing -suunnittelumallin avulla. Tässä sovelluksen kaikki tilamuutokset tallennetaan tapahtumavirtaan, mikä mahdollistaa nopeamman uusien sovellusten käyttöönoton, kun ei tarvita erillisiä datan integraatioprojekteja.
Event-alustat
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:
- Suorituskyky: Kafka tallentaa sanomat levylle sanomalokiin, jonka käsittely on erittäin nopeaa. Tämä johtuu talletusrakenteen lisäksi siitä, että Kafka ei käytännössä sisällä käsittelylogiikkaa, vaan clientit pitävät huolta siitä, mitkä viestit on tuotettu tai mitkä luettu. Tämä mahdollistaa käyttötapaukset, joissa dataa liikkuu valtavia määriä, esim. IoT-datan tai web-sivustojen klikkaustietojen eventtien välittäminen. Tällaiseen massaan eivät perinteiset jonojärjestelmät helposti taivu.
- Reaaliaikaisen analytiikan mahdollistaminen: kun data tallennetaan väliaikaisesti aina levylle, voidaan sen käsittely pilkkoa eri kokoisiin ikkunoihin ja ajaa niihin perustuen reaaliaikaista analytiikkaa. Tämä mahdollistaa liiketoiminnan nopean reagoinnin muutoksiin verrattuna perinteiseen tietovarastoon perustuvaan analytiikkaan, jossa reagointiaika mitataan usein päivissä.
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
- Confluent Kafka: Kafkan tekijöiden luoma tuote, saatavilla AWS:ään, Azureen ja Google Cloudiin. Asennettavissa myös on-premiseen itse ylläpidettävänä versiona.
- Azure Event Hubs: Microsoftin Azuren event-alusta, joka ei perustu Kafkaan mutta tarjoaa Kafka-yhteensopivan rajapinnan. Saatavilla vain Azuressa.
- Amazon Managed Streaming for Apache Kafka (Amazon MSK): Amazonilla on pitkään ollut oma Kafkaa vastaava palvelu Amazon Kinesis Streams. Kafkan yleistyttyä Amazon toi markkinoille tämän oman managed Kafka -palvelunsa. Käytettävissä vain AWS:n pilvessä.
- IBM Event Streams: IBM Cloudissa sekä on-premiseen saatavilla oleva Kafkaan perustuva tuote. Käytettävissä IBM Cloudissa, ja asennettavissa myös AWS:ään, Azureen, Google Cloudiin ja on-premiseen itse ylläpidettävänä versiona.
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 suositukset
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:
- Arvioi tulevien kehitysprojektien osalta potentiaaliset käyttötapaukset, joihin tapahtumapohjaisuus sopisi. Etsi erityisesti liiketoimintahyötyjä, joita Event Streamingin käyttö voisi tuoda esimerkiksi reaaliaikaisen analytiikan ja koneoppimisen tukemana.
- Valitse yksi käyttötapaus, ja kokeile jonkun PaaS-pohjaisen Event Streaming -alustan käyttöä ratkaisun osana.
- Jos kokeilun tuloksena nähdään selkeitä hyötyjä, kartoita teknologiavaihtoehdot ja valitse parhaiten teidän yrityksenne tarpeisiin sopiva alusta. Tarjoa se käyttöön osana muita integraatiokyvykkyyksiä.
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.
Tilaa blogikirjoitukset sähköpostiisi