Apache Kafka brukes i dag av store samfunnsaktører som NAV og Statnett for å håndtere strømmende data fra milliarder av hendelser digitalt. I denne episoden ser vi på hva Kafka er, og hvilke unike muligheter teknologien gir.
Med oss i studio har vi Kafka-ekspert Øystein Jakobsen, som for tiden jobber med Kafka for Statnett, samt to nysgjerrige tech-ere, Simen Sommerfeldt og Johan Paramanathan.
Oppsumering av episoden
Vår kollega Øystein Jakobsen er en av våre fremste kollegaer når det kommer til utvikling i Kafka. Han har jobbet med Kafka i flere spennende prosjekter for Statnett og andre kunder. Men hans reise med Kafka startet som et hobbyprosjekt som involverte Twitter og Donald Trump.
– Jeg fant en Souce Connector på nettet som kunne konsumere data fra Twitter. Denne satt jeg opp til å lese alle Tweets som omhandlet den tidligere Twitter-kontoen til Donald Trump. Deretter kunne jeg lage en liten applikasjon som førte statistikk på en del fargerike adjektiver som omhandlet Trump.
Opprinnelig er Kafka utviklet av LinkedIn for å håndtere de enorme datastrømmene der. Det er åpen kildekode fra 2011. Det vil si at programvaren og kildekoden er åpen for alle å bruke og distribuere videre. Kafka er basert på et publish/subscribe-mønster og organiserer data i topics (a’la køer).
Det som gjør Kafka unikt, er dens enorme kapasitet. Løsningen er laget for å skalere på en god måte. Bare på Linkedin behandles det milliarder av meldinger og hendelser hver dag. Selv en liten installasjon med Kafka kan håndtere mange tusen interaksjoner i sekundet.
Gullet med KAFKA er at du kan ha mange meldingsstrømmer, og gjøre analyser og behandling av de meldingen sett i sammenheng med hverandre, og ikke én og én.
Vi kan se for oss et tenkt senario med et stortingsvalg. I dette scenarioet finnes det flere valglokaler hvor borgere leverer sin stemme. Når valglokalet stenger, skal det telles opp stemmer og resultatetet skal sendes. Da sender hvert lokale et sett med resultater.
Da kan det være en strøm med records som er resultater per lokale. Vi kan joine den strømmen med et topic om grunndata per valglokale, som hvilken kommune og fylke dette tilhører, for eksempel. Med denne strømmende dataen kan du sette opp en aggregeringsfunksjon over hva resultatet ble for valgkretsen, kommunen og fylket. Slike resultater summeres opp i Kafka streams.
En slik løsning implementeres typisk som en eller flere mikrotjenester som bruker Kafka sine API-er for å konsumere og produsere data. Man kan bruke Java, Kotlin eller også andre språk som Python eller .NET.
Kafka er ikke en message broker, men en data broker. På en message broker vil konsumentene behandle meldingene en og en, og uavhengig av hverandre. Gullet med Kafka er at det kommer flere strømmer med små "records". Du kan se på de i sammenheng og koble de sammen de forskjellige strømmene. Istedenfor å bruke store XML-dokumenter vil Kafka typisk ha ett datapunkt for hvert tidspunkt i en tidsserie.
Det er egentlig ganske enkelt å komme i gang med Kafka. Hvis du går på «Confluence» eller andre sider kan du finne «Docker Compose»-filer, som du kan laste ned og kjøre. Da kan du raskt i Docker få opp en komplett kjørende Kafka-instans. Det samme gjelder med Connect og andre komponenter, så det er bare å sette seg ned og starte å leke!
Ressurser:
https://kafka.apache.org