SlideShare a Scribd company logo
1 of 51
Download to read offline
KAFKA STREAMS
BUILDING SERVICES WITH
KAFKA 101
KAFKA
KAFKA 101
TOPIC
KAFKA
KAFKA 101
TOPICPRODUCER
KAFKA
KAFKA 101
TOPIC CONSUMERPRODUCER
KAFKA
KAFKA 101
TOPIC CONSUMERPRODUCER
KAFKA
a, b, c a, b, c
KAFKA 101
TOPIC (3) CONSUMERPRODUCER
KAFKA
a, b, c a, b, c
KAFKA 101
CONSUMERPRODUCER
CONSUMER
CONSUMER
KAFKA
TOPIC (3)
a, b, c c
a
b
KAFKA 101
CONSUMERPRODUCER
CONSUMER
CONSUMER
KAFKA
TOPIC (3)
1
2
3
CONSUMER GROUP
a, b, c c
a
b
KAFKA 101
CONSUMER
PRODUCER
CONSUMER
CONSUMER
KAFKA
TOPIC (3)
1
2
3
CONSUMER GROUP
CONSUMER
a, b, c
c
a
b
KAFKA 101
CONSUMERPRODUCER
CONSUMER
CONSUMER
KAFKA
TOPIC (3)
1
2
3
CONSUMER GROUP
a, b, c
KAFKA 101
CONSUMERPRODUCER
CONSUMER
KAFKA
TOPIC (3)
1
23
CONSUMER GROUP
a, b, c c, a
b
KAFKA 101
CONSUMERPRODUCER
CONSUMER
KAFKA
TOPIC (3)
1
23
CONSUMER GROUP
CONSUMER
123
CONSUMER GROUP TOO
a, b, c c, a
b
a, b, c
KAFKA @ NEW RELIC
‣ default message broker for backend services
‣ 958 topics in production cluster
‣ 100TB of data in the cluster
‣ “kafka topics as a service” for the product teams
WHAT ARE WE BUILDING?
METRICS_5M
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
WHAT ARE WE BUILDING?
{
"id": 1,
"name": foo,
"region": us
}
METRICS_5M
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
METADATA
WHAT ARE WE BUILDING?
METRICS_5M
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
METADATA
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
WHAT ARE WE BUILDING?
METRICS_5M
METADATA
JAVA
APP
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
METRICS_5M
METADATA
JAVA
APP
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M
METADATA
JAVA
APP
{"id": 1}
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M
METADATA
JAVA
APP
{"id": 1}
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M
METADATA
JAVA
APP
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
METADATA
JAVA
APP
JAVA
APP
JAVA
APP
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
METADATA
JAVA
APP
JAVA
APP
JAVA
APP
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
METADATA
JAVA
APP
JAVA
APP
JAVA
APP
{
"id": 1,
"ts": 5,
"latency": 10
},
{
"id": 1,
"ts": 25,
"latency": 20
}
{
"id": 1,
"name": foo,
"region": us
}
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METADATA
JAVA
APP
JAVA
APP
JAVA
APP
METRICS_5M (3)
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METADATA
JAVA
APP
JAVA
APP
JAVA
APP
METRICS_5M (3)
METADATA (3)
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METADATA
JAVA
APP
JAVA
APP
JAVA
APP
METRICS_5M (3)
METADATA (3)
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
AGG_STORE (3)
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
AGG_STORE (3)
KSTREAMS
APP
KSTREAMS
APP
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
AGG_STORE (3)
KSTREAMS
APP
KSTREAMS
APP
WHAT ARE WE BUILDING?
{
"id": 1,
"ts": 60,
“avg.latency": 15,
"name": foo,
"region": us
}
METRICS_1H
METRICS_5M (3)
KSTREAMS
APP
METADATA (3)
METADATA
AGG_STORE (3)
KSTREAMS
APP
WHAT ARE WE BUILDING?
‣ a library
WHAT’S KAFKA STREAMS
WHAT’S KAFKA STREAMS
TOPIC CONSUMERPRODUCER
KAFKA
WHAT’S KAFKA STREAMS
TOPIC JAVA APPJAVA APP
KAFKA
WHAT’S KAFKA STREAMS
JAVA APP
WHAT’S KAFKA STREAMS
KAFKA
CLIENT
LIBRARY
JAVA APP
WHAT’S KAFKA STREAMS
JAVA APP
KAFKA
CLIENT
LIBRARY
KSTREAMS
LIBRARY
WHAT’S KAFKA STREAMS
JAVA APP
+
DSL
KAFKA
CLIENT
LIBRARY
KSTREAMS
LIBRARY
‣ a library
‣ an abstraction on-top of kafka topics
‣ state stores (also kafka topic)
‣ DSL for data processing
‣ kafka is your source and your sink
WHAT’S KAFKA STREAMS
‣ small product team
‣ no existing cluster
‣ existing tooling for containerised apps
‣ flink and kafka streams
WHY IS IT A GOOD FIT FOR US?
‣ great dev story
‣ very versatile
‣ more implicit
‣ less exciting ops story
‣ local env is very different from prod
‣ manages it’s own resources
‣ tricky schema migrations (fixed in 1.8)
‣ longer learning curve
WHY YOU NO FLINK?
WHAT DID WE LIKE
‣ easy to start, if you already use Kafka (cluster)
‣ it's simple and explicit
‣ no shuffles would occur behind the scene
‣ DSL is sufficient for simple use cases
WHAT IS TRICKY
‣ stream architecture takes time to get used to
‣ be prepared to deploy many things
‣ partitions is the way to do horizontal scaling
‣ scaling up is non-trivial due to co-partitioning
‣ everything will be sucked into Kafka topics
‣ you have to think about schemas
‣ it's rather new (not much of StackOverflow wisdom yet)
‣ DSL is sufficient for simple use cases
GOING FORWARD
‣ use it again? yes
‣ pick it up again, looking back? yes
‣ doing differently, looking back? not really
QUESTIONS?CONCERNS?
PROTESTS?

More Related Content

Similar to Building services with kafka streams

AKUDA Labs: Pulsar
AKUDA Labs: PulsarAKUDA Labs: Pulsar
AKUDA Labs: PulsarAKUDA Labs
 
Paris jug ksql - 2018-06-28
Paris jug ksql - 2018-06-28Paris jug ksql - 2018-06-28
Paris jug ksql - 2018-06-28Florent Ramiere
 
What is Apache Kafka and What is an Event Streaming Platform?
What is Apache Kafka and What is an Event Streaming Platform?What is Apache Kafka and What is an Event Streaming Platform?
What is Apache Kafka and What is an Event Streaming Platform?confluent
 
Boston Spark Meetup May 24, 2016
Boston Spark Meetup May 24, 2016Boston Spark Meetup May 24, 2016
Boston Spark Meetup May 24, 2016Chris Fregly
 
Westpac Bank Tech Talk 1: Dive into Apache Kafka
Westpac Bank Tech Talk 1: Dive into Apache KafkaWestpac Bank Tech Talk 1: Dive into Apache Kafka
Westpac Bank Tech Talk 1: Dive into Apache Kafkaconfluent
 
Real time, streaming advanced analytics, approximations, and recommendations ...
Real time, streaming advanced analytics, approximations, and recommendations ...Real time, streaming advanced analytics, approximations, and recommendations ...
Real time, streaming advanced analytics, approximations, and recommendations ...DataWorks Summit/Hadoop Summit
 
8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...
8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...
8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...Natan Silnitsky
 
Quick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to knowQuick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to knowRafał Hryniewski
 
Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016
Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016
Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016Chris Fregly
 
London Apache Kafka Meetup (Jan 2017)
London Apache Kafka Meetup (Jan 2017)London Apache Kafka Meetup (Jan 2017)
London Apache Kafka Meetup (Jan 2017)Landoop Ltd
 
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...Kai Wähner
 
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...Codemotion
 
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...Codemotion
 
CQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveCQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveMaria Gomez
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...Data Con LA
 
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!confluent
 
Reactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsReactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsKonrad Malawski
 
Introduction to apache kafka, confluent and why they matter
Introduction to apache kafka, confluent and why they matterIntroduction to apache kafka, confluent and why they matter
Introduction to apache kafka, confluent and why they matterPaolo Castagna
 
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summitNatan Silnitsky
 

Similar to Building services with kafka streams (20)

AKUDA Labs: Pulsar
AKUDA Labs: PulsarAKUDA Labs: Pulsar
AKUDA Labs: Pulsar
 
Paris jug ksql - 2018-06-28
Paris jug ksql - 2018-06-28Paris jug ksql - 2018-06-28
Paris jug ksql - 2018-06-28
 
What is Apache Kafka and What is an Event Streaming Platform?
What is Apache Kafka and What is an Event Streaming Platform?What is Apache Kafka and What is an Event Streaming Platform?
What is Apache Kafka and What is an Event Streaming Platform?
 
Boston Spark Meetup May 24, 2016
Boston Spark Meetup May 24, 2016Boston Spark Meetup May 24, 2016
Boston Spark Meetup May 24, 2016
 
Westpac Bank Tech Talk 1: Dive into Apache Kafka
Westpac Bank Tech Talk 1: Dive into Apache KafkaWestpac Bank Tech Talk 1: Dive into Apache Kafka
Westpac Bank Tech Talk 1: Dive into Apache Kafka
 
Real time, streaming advanced analytics, approximations, and recommendations ...
Real time, streaming advanced analytics, approximations, and recommendations ...Real time, streaming advanced analytics, approximations, and recommendations ...
Real time, streaming advanced analytics, approximations, and recommendations ...
 
8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...
8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...
8 Lessons Learned from Using Kafka in 1500 microservices - confluent streamin...
 
Quick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to knowQuick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to know
 
Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016
Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016
Spark After Dark 2.0 - Apache Big Data Conf - Vancouver - May 11, 2016
 
London Apache Kafka Meetup (Jan 2017)
London Apache Kafka Meetup (Jan 2017)London Apache Kafka Meetup (Jan 2017)
London Apache Kafka Meetup (Jan 2017)
 
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
KSQL – The Open Source SQL Streaming Engine for Apache Kafka (Big Data Spain ...
 
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
 
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
Kai Waehner - KSQL – The Open Source SQL Streaming Engine for Apache Kafka - ...
 
CQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveCQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspective
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Real-time Aggregations, Ap...
 
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
 
Reactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsReactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka Streams
 
Introduction to apache kafka, confluent and why they matter
Introduction to apache kafka, confluent and why they matterIntroduction to apache kafka, confluent and why they matter
Introduction to apache kafka, confluent and why they matter
 
Apache HAWQ Architecture
Apache HAWQ ArchitectureApache HAWQ Architecture
Apache HAWQ Architecture
 
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
 

Recently uploaded

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 

Building services with kafka streams

  • 7. KAFKA 101 TOPIC (3) CONSUMERPRODUCER KAFKA a, b, c a, b, c
  • 13. KAFKA 101 CONSUMERPRODUCER CONSUMER KAFKA TOPIC (3) 1 23 CONSUMER GROUP CONSUMER 123 CONSUMER GROUP TOO a, b, c c, a b a, b, c
  • 14. KAFKA @ NEW RELIC ‣ default message broker for backend services ‣ 958 topics in production cluster ‣ 100TB of data in the cluster ‣ “kafka topics as a service” for the product teams
  • 15. WHAT ARE WE BUILDING? METRICS_5M { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 }
  • 16. WHAT ARE WE BUILDING? { "id": 1, "name": foo, "region": us } METRICS_5M { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } METADATA
  • 17. WHAT ARE WE BUILDING? METRICS_5M { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us } METADATA { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H
  • 18. WHAT ARE WE BUILDING? METRICS_5M METADATA JAVA APP { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 19. WHAT ARE WE BUILDING? METRICS_5M METADATA JAVA APP { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 20. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M METADATA JAVA APP {"id": 1} { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 21. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M METADATA JAVA APP {"id": 1} { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 22. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M METADATA JAVA APP { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 23. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) METADATA JAVA APP JAVA APP JAVA APP { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 24. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) METADATA JAVA APP JAVA APP JAVA APP { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 25. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) METADATA JAVA APP JAVA APP JAVA APP { "id": 1, "ts": 5, "latency": 10 }, { "id": 1, "ts": 25, "latency": 20 } { "id": 1, "name": foo, "region": us }
  • 26. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METADATA JAVA APP JAVA APP JAVA APP METRICS_5M (3)
  • 27. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METADATA JAVA APP JAVA APP JAVA APP METRICS_5M (3) METADATA (3)
  • 28. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METADATA JAVA APP JAVA APP JAVA APP METRICS_5M (3) METADATA (3)
  • 29. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA
  • 30. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA
  • 31. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA
  • 32. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA
  • 33. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA AGG_STORE (3)
  • 34. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA AGG_STORE (3) KSTREAMS APP KSTREAMS APP
  • 35. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA AGG_STORE (3) KSTREAMS APP KSTREAMS APP
  • 36. WHAT ARE WE BUILDING? { "id": 1, "ts": 60, “avg.latency": 15, "name": foo, "region": us } METRICS_1H METRICS_5M (3) KSTREAMS APP METADATA (3) METADATA AGG_STORE (3) KSTREAMS APP
  • 37. WHAT ARE WE BUILDING?
  • 38. ‣ a library WHAT’S KAFKA STREAMS
  • 39. WHAT’S KAFKA STREAMS TOPIC CONSUMERPRODUCER KAFKA
  • 40. WHAT’S KAFKA STREAMS TOPIC JAVA APPJAVA APP KAFKA
  • 43. WHAT’S KAFKA STREAMS JAVA APP KAFKA CLIENT LIBRARY KSTREAMS LIBRARY
  • 44. WHAT’S KAFKA STREAMS JAVA APP + DSL KAFKA CLIENT LIBRARY KSTREAMS LIBRARY
  • 45. ‣ a library ‣ an abstraction on-top of kafka topics ‣ state stores (also kafka topic) ‣ DSL for data processing ‣ kafka is your source and your sink WHAT’S KAFKA STREAMS
  • 46. ‣ small product team ‣ no existing cluster ‣ existing tooling for containerised apps ‣ flink and kafka streams WHY IS IT A GOOD FIT FOR US?
  • 47. ‣ great dev story ‣ very versatile ‣ more implicit ‣ less exciting ops story ‣ local env is very different from prod ‣ manages it’s own resources ‣ tricky schema migrations (fixed in 1.8) ‣ longer learning curve WHY YOU NO FLINK?
  • 48. WHAT DID WE LIKE ‣ easy to start, if you already use Kafka (cluster) ‣ it's simple and explicit ‣ no shuffles would occur behind the scene ‣ DSL is sufficient for simple use cases
  • 49. WHAT IS TRICKY ‣ stream architecture takes time to get used to ‣ be prepared to deploy many things ‣ partitions is the way to do horizontal scaling ‣ scaling up is non-trivial due to co-partitioning ‣ everything will be sucked into Kafka topics ‣ you have to think about schemas ‣ it's rather new (not much of StackOverflow wisdom yet) ‣ DSL is sufficient for simple use cases
  • 50. GOING FORWARD ‣ use it again? yes ‣ pick it up again, looking back? yes ‣ doing differently, looking back? not really