Have you ever had your stateful Kafka Streams app killed by Kubernetes with the termination reason ""OOMKilled""? Even if you did set up JVM heap limit, the pod still got killed? This is likely due to your RocksDB off-heap memory usage. This talk will explore ways of diagnosing the problem, including:
- analysis of heap and off-heap memory;
- diving into RocksDB metrics;
- looking at k8s java pod measurements.
It will also show a possible solution to the problem with RocksDB and pod memory tuning. Attendants will get hands-on experience of live debugging Kafka Streams app together with useful tips and tricks on its production usage in Kubernetes. As a Streaming Platform Owner at Raiffeisen Bank and a former Data Engineer with 5+ years of experience, I will share some insights on building scalable and reliable Kafka Streams stateful applications.
Presenter
Andrey Serebryanskiy
Raiffeisen BankNow I am a Product Owner of a Streaming Data Platform in Raiffeisen Bank. We provide other teams with instruments to load, transform and sink data with milliseconds latency.
I started as a full-stack developer in a small startup, building event-driven microservices architecture.
Then I dived into the data engineering world working as a Java Developer in Vivid Money in the Data Operations team. My main area of interest there were Kafka, Kafka Streams and real-time integrations. Eventually, we had 3000+ topics in prod with 300+ Kafka Streams applications deployed.
At that point I started to teach Kafka and Kafka Streams course in Russian online university Netology.
Finally, I found myself in Raiffeisen Bank where together with a team I designed and implemented a brand new Streaming Platform.