Hvad kan Apache Kafka
Apache Kafka muliggør dataanalyse i realtid og giver virksomheder en konkurrencefordel, dybere indsigt, og dermed hurtigere responstider via Apache Kafka.
Dermed løser Kafka en central og tilsyneladende ganske simpel opgave i IT systemlandskaber: At sende beskeder mellem IT systemerne pålideligt, effektivt og asynkront. Denne funktionalitet giver mulighed for at afkoble de forskellige systemer fra hinanden og stole på at de kan koordinere deres arbejde via udveksling af beskeder. Et system til effektiv, asynkron integration baseret på beskeder kaldes ofte en “Message broker”. Udover selve message broker funktionaliteten, tilbyder Kafka også en ganske unik mulighed for effektivt at opbevare de afsendte beskeder vilkårligt længe. Dermed kan Kafka også bruges til at dokumentere historik for den kommunikation der har været systemerne imellem og genskabe data i tilfælde af systemnedbrud. Kombinationen af disse funktionaliteter har Apache Kafka selv navngivet “Event streaming platform”.
Asynkron kommunikation
Før message brokere og event streaming platforme, blev kommunikation mellem IT systemer typisk implementeret som synkrone point-to-point integrationer. Den synkrone tilgang har en akilleshæl idet alle systemer som er bundet sammen vi synkrone integrationer blokeres, hvis blot ét system blokeres eller går ned. Et efter et blokeres de øvrige systemer, når de ikke kan afsende beskeder til de utilgængelige systemer indtil til sidst alle systemer er blokeret af hinanden og må afvente at den oprindelige blokerende fejl løses. Herefter skal alle stoppede processer genoptages manuelt og det må udredes om der har været datatab.
Med asynkron kommunikation kan alle systemer fortsat udføre deres opgaver og afsende beskeder. Hvis der er systemer som er gået ned eller af anden årsag ikke kan behandle de beskeder de modtager, blokerer det ikke de andre systemer for at afsende dem. Alle de afsendte beskeder afventer blot at systemet genoptager sit arbejde og uden nogen manuel indblanding gennemføres alle de ventende processer.
Ubegrænset skalerbarhed og pålidelighed
Kafka er fra starten designet som et distribueret miljø med mange servere. Duplikering af servere anvendes både til at sikre tilgængelighed og høj performance. Høj tilgængelighed opnås ved at Kafka stadig kan fungere, selvom en eller flere af dets servere forsvinder, blot tilstrækkeligt mange stadig er oppe. Høj ydelse opnås ved at Kafkas arkitektur tillader næsten ubegrænset parallelisering af arbejdet. Det vil sige at kapaciteten kan øges næsten ubegrænset ved at tilføre flere servere. Dette i skarp kontrast til fx klassiske SQL databaser, som på grund af deres strenge konsistensgarantier kun kan afvikles på én server. Og dermed kan de kun skaleres op til den største enkeltmaskine der kan etableres – der kan slet ikke skaleres ved at tilføje flere servere.
Kafka leverer data i realtid
Oprindeligt er Kafka designet til at spore besøgendes clickstream-data på store websites som LinkedIn, Amazon og eBay – det vil sige at infrastrukturen skulle kunne håndtere at live-tracke hver eneste museklik på disse enorme websites. Gennem analyse af clickstream-data, opnår man en dyb brugeradfærdsforståelse, som endda kan anvendes undervejs i brugerens aktuelle session på websitet. Men det kræver at man kan håndtere hver eneste klik med det samme brugeren udfører dem. Den klassiske tilgang med store batch jobs der køres hver nat, er jo ikke tids nok til at give input til en brugersession der er i gang lige nu.
Disse ekstremt skrappe krav til performance kunne ikke honoreres med eksisterende teknologier, og medførte en udviklingsindsats der mundede ud i at første version af Apache Kafka blev skabt. I dag er Kafka stadig velegnet til at håndtere store datamængder, men er også videreudviklet til at understøtte mere forretningsorienterede processer. Blandt andet via rige mulighed for at route beskeder intelligent, på basis af tre kernekomponenter: “Topics”, “Producers” og “Consumers”. Dermed kan Kafka indtage rollen som central integrationsmotor i virksomheders systemlandskaber, hvor Kafka og message brokere generelt gør solidt indhug på de klassiske Enterprise Service Busser.
Kafka er en integreret del af stakken hos Spotify, Netflix, Paypal og CloudFlare, som alle bruger den til at behandle og analysere streaming af data og til at forstå kunde- eller systemadfærd. En bestemt niche, hvor Kafka har vundet dominans, er rejsebranchen, hvor dens streamingkapacitet gør den ideel til at spore bookingoplysninger om millioner af fly, pakkerejser, biludlejning og hotelophold overalt i verden.
Centrale koncepter
Kafkas beskedhåndtering baserer sig på tre grundlæggende koncepter. Alle beskeder der afsendes tilknyttes et specifikt “Topic”, som angiver det emne beskeden relaterer sig til. En besked dannes af en “Producer”, som er det system der initierer beskeden afsendelse. Produceren træffer beslutning om indhold og metadata, såsom det Topic beskeden skal sendes til. Slutteligt modtages beskederne af de “Consumere” som abonnerer på det Topic den er sendt til. Consumere er de systemer som aftager afsendte beskeder og reagerer på indholdet.
Med disse tre simple koncepter som byggeklodser kan man i Kafka simpelt opbygge komplicerede strukturer for beskeders vej mellem systemer.
Kafka i skyen
Med Kafkas ubegrænsede skaleringsmuligheder er det helt oplagt at placere det i en cloud infrastruktur, hvor man jo netop kan skalere antallet af servere dynamisk og sågar automatiseret, hvis man ønsker det. Der er mange muligheder og her nævnes blot et par eksempler:
* Kafka kan placeres på virtuelle maskiner eller i containere
* Confluent Cloud Kafka er en fuldblods Platform-as-a-Service (PaaS) udgave af Kafka, hvor Confluent tager ansvar for driften
* Microsoft Azure Event Hub er Microsoft Azure-native implementation af Kafka
Du kan læse mere om Confluent og om Microsoft Azure Event Hub
Kontakt os
Commentor er partner med både Kafka, Confluent og Microsoft, så uanset hvilken strategi I har for at tage Kafka i brug, har vi de bedste forudsætninger for at hjælpe jer i tæt samarbejde med de centrale leverandører.
Vi arbejder ud fra mantraet “consider IT done”.