Een software engineer legt uit: Kafka

Elke maand interviewen we een Sofico-collega over een toepassing of tool die Sofico dagelijks gebruikt. Deze maand Petar Pilipovic praten Petar Pilipovic (Lead Developer) en Wim Van Den Eynde (Technical Consultant) met ons over Apache Kafka. 

Het moest een snelle tool zijn – bijna zonder vertraging – die in staat is om grote hoeveelheden gegevens te verwerken en die gemakkelijk kan worden opgeschaald. Die oplossing vonden we bij Apache Kafka.

Petar

Wat is Kafka? 

Apache Kafka is een gedistribueerd streamingplatform. Het biedt drie belangrijke mogelijkheden: 

  1. Je kunt gegevensstromen publiceren en je erop abonneren. Op dat vlak is het vergelijkbaar met een berichtenwachtrij of een berichtensysteem binnen een bedrijf 

  2. Je kunt gegevensstromen opslaan met fouttolerantie 

  3. Je kunt gegevensstromen verwerken wanneer ze zich voordoen 

Kafka is een opensource-project, ontwikkeld door LinkedIn, dat sinds 2012 deel uitmaakt van de Apache Software Foundation. Een van de oprichters van Kafka, Jay Kreps, besloot de software te vernoemen naar de auteur Franz Kafka, omdat het "een systeem betreft dat geoptimaliseerd is om te schrijven". 

Waarom gebruiken we het bij Sofico?

"Alles begon een paar jaar geleden, toen er steeds vaker zo goed als realtime analyses en rapporten werden geëist. Met de opzet en architectuur waarover we op dat moment beschikten, zou het voldoen aan dergelijke eisen gevolgen kunnen hebben voor de prestaties van ons kernsysteem, en dus gingen we op zoek naar een oplossing. 

Het moest een snelle tool zijn – bijna zonder vertraging – die in staat is om grote hoeveelheden gegevens te verwerken en die gemakkelijk kan worden opgeschaald. Die oplossing vonden we bij Apache Kafka.” 

Strimzi levert container images en operatoren om Kafka op Kubernetes te laten draaien.

Wim

Hoe gebruiken we Kafka bij Sofico? 

“We gebruiken Kafka als en streamingplatform. We streamen gegevens van ons Miles Core System naar ons Miles Microservice Platform. Gegevens van Miles Core worden gestreamd naar topics, waar ze worden gebruikt. De gegevens worden dan omgevormd tot een canoniek domeinmodel en gepubliceerd in domeintopics.”

We ontwikkelen Kafka als onderdeel van ons Miles Microservice Platform op Kubernetes. We gebruiken Strimzi om Kafka-clusters te laten draaien op Kubernetes in verschillende gebruiksconfiguraties.

Petar


Is er sprake van afhankelijkheden en specifieke werkmethoden?

“Een gebruikelijke Kafka-setup bevat meerdere brokers en Zookeeper instances, die fungeren als een service discovery. In de toekomst zal Zookeeper worden verwijderd uit de Kafka-setup, maar de huidige versies hebben het nog steeds nodig.” 
 
“We ontwikkelen Kafka als onderdeel van ons Miles Microservice Platform op Kubernetes. We gebruiken Strimzi om Kafka-clusters te laten draaien op Kubernetes in verschillende gebruiksconfiguraties.” 

“Strimzi levert container images en operatoren om Kafka op Kubernetes te laten draaien. Operatoren vereenvoudigen het proces voor het implementeren en draaien van Kafka-clusters en -onderdelen. Bovendien kunnen we op die manier de toegang tot Kafka configureren, Kafka upgraden en brokers beheren, zoals het aanmaken en beheren van topics en gebruikers."

Heb je nog tips en tricks die nuttig kunnen zijn voor anderen?

“Kafka is heel configureerbaar. Je kan de tool configureren om een grotere gegevensdoorvoer of een betere gegevensconsistentie te krijgen. We configureren Kafka voor een hoge gegevensdoorvoer als je minder belangrijke gegevens wilt streamen (die uiteindelijk worden geaggregeerd), maar we hebben de gegevens nodig als een realtime feed." 

"We configureren Kafka voor een grote gegevensconsistentie als we heel belangrijke data willen streamen (zoals klantentransacties) en we geen gegevens willen verliezen." 


---

​​​​​​​Afbeelding: Franz Kafka

Zijn er alternatieven voor Apache Kafka? 

“Ja, er waren op dat moment alternatieven zoals IBM MQ of Rabbit MQ, maar aangezien Kafka grote hoeveelheden gegevens kan verwerken op een zeer performante manier en ook enkele andere mogelijkheden biedt die voor ons belangrijk zijn, hebben we besloten om Apache Kafka te gebruiken." 

“We gebruiken de software of frameworks die het best aansluiten bij onze behoeften en die ons voordelen bieden voor onze projecten. Uiteindelijk is dat het belangrijkste voor onze klanten.” 

Tags


Share this story  —   Facebook     Twitter     LinkedIn     Xing

Meer reilen en zeilen bij Sofico

Sofico_Services_Netherlands2

How's the weather?

Een paar maanden geleden zijn we bij Sofico gestart met onze ‘Sofico – How is the weather’, een wekelijkse ontmoeting tussen collega's.

Lees meer