SlideShare ist ein Scribd-Unternehmen logo
1 von 78
Downloaden Sie, um offline zu lesen
Hard Truths About
Eventing and Streaming
@DanRosanova
Group Principal Program Manager
Microsoft Azure Messaging
Disclaimer
All photos are owned by the speaker and free for non-commercial use
A brief history of messaging
• Old school messaging (System/360 QTAM and TCAM)
• IBM MQ (yes there was Teknekron too)
• Rabbit MQ
• Service Bus
• ActiveMQ™
• ZeroMQ
• Apache Kafka®
• NATS
What exactly
is a messaging
queue
A simple queue
Sender sends message to queue
Queue ACKs receipt
Receiver connects to queue & retrieves message
Receiver ACKs complete (or other action)
What queues are good
at and why
The queue is the arbiter of truth – which
simplifies many other aspects
EACH READER CAN JUST SAY ‘GIVE
ME THE NEXT’
MESSAGES ARE ACKED /
COMPLETED INDIVIDUALLY
THE QUEUE IS A BUFFER TO
IMPROVE SCALE AND
PERFORMANCE
Messaging and Queues are
about applications more than
they are about data
Competing Consumer: The Server-Side Cursor
The message is the
Unit of Work
Public Subscribe: Topics & Subscriptions
Sender only knows about Topic
Receivers only know about Subscriptions
Filters perform routing on Subscriptions
Publish
Subscriber
opens
interesting
possibilities
FAN OUT MULTI-CAST
WIRE TAP FORWARDING WILL
ALLOW MULTI-LAYER
TOPOLOGIES (WARNING)
But there are some
things queues aren’t so
good at
Replay
Strict ordering
Strict ordering
Strict ordering
Eventually competing
consumer models
break down
Competing Consumer: not all competition is healthy
When a wall is too high to go
over and too thick to go
through it is best to go around
Enter the Partitioned
Consumer model
How is a partitioned consumer different than
a queue?
Data
Apache Kafka® implements a partitioned consumer model
There’s
something
else that
resembles
this
There’s
something
else that
resembles
this
RECORDS A STREAM RECODING MOVES
FORWARD ONLY
YOU CAN PLAY THE
TAPE OVER AND OVER
AGAIN
A CASSETTE TAPE
ACTUALLY HAS LEFT
AND RIGHT CHANNELS
WHEN YOU PRESS
RECORD, THEY BOTH
RECORD
BUT THE DATA ON
EACH CHANNEL IS
DIFFERENT
IN KAFKA THESE
CHANNELS ARE
CALLED PARTITIONS
A bit more on
the partition
concept
Partition is essentially
append only
Reads are performed
using a client side curor
Reads are
nondestructive
In a stream the partition is the
Unit of Work
Streams are processed differently from batch data – normal functions cannot
operate on streams as a whole, as they have potentially unlimited data, and
formally, streams are codata (potentially unlimited), not data (which is finite).
Ultimate
example for
streams
By Danielpr85 based on Graphviz source of TuukkaH - Own work, Public Domain,
https://commons.wikimedia.org/w/index.php?curid=687268
What streams
like Kafka are
very good at
Scale
Low cost
Replay
Order
Why partitioned consumer scales so well
Why partitioned consumer scales so well
Maximum Degree of
Parallelism
Low cost
• There are no expensive indexes to maintain
• Because each partition is independent there is
no cross broker coordination necessary (other
than optional replication)
• Client-side cursor avoids the overhead of
traditional message brokers
• Data replication and ACK level is a choice of the
sender
Replay
This may lead you to believe you have found Zen
But there are clouds on the horizon
Fan out and routing
• Partitioned streams (like Kafka) don’t offer
server-side filtering
• Every reader must read all the data
• As more readers want the data a network
imbalance develops
• Parse.ly Kafkapocalypse
10MBps
10MBps
10MBps
10MBps
N MBps
Streams are not queues
• The Unit of Work is not an individual message
• This means processing individual messages
gets complicated
• Cursor management becomes a big challenge
• There is no inherent dead letter capability
• People start adding these ‘features’ in and end
up recreating a queue
CAP Theorem
In theoretical computer science the CAP theorem states that
it is impossible for a distributed computer system to
simultaneously provide all three of the following guarantees:
Consistency, Availability, Partition tolerance
What does CAP mean for streams?
Consistency: Data should
produce the same results
when read multiple times –
i.e. it should be stable and
durable
Availability: The place data is
written to should always be
available to write to
Partition tolerance: the
ability to continue
functioning when one part of
the system becomes
separated from another
Or put another way
when a network partition happens, which over
time is inevitable, then you must make a
choice...
This is your last chance.
After this, there is no turning back...
Consistency
You must decide which of these two is most
significant
Consistency Availabilty
Two stats to
remember
99.999% availability still
means 10 of every 1 million
fails
TCP/IP makes it almost
impossible to detect a dead
socket in less than 21
seconds
If consistency is so hard why
bother doing it?
Locality of data: moving average processor
• In financial applications a
simple moving average
(SMA) is the unweighted
mean of the previous n
data
• For prices PM, PM-1,…
PM-(n-1)
https://en.wikipedia.org/wiki/Moving_average
This is perhaps easier in code
simpleMA(float[] prices, int period)
float result;
for(int i=0;i<period;i++)
result += prices[prices.length – i];
return result/period
What would
you do with
this?
Value of
consistency:
your bank
account
Beginning Balance of 100.00
(5.00)
12.00
4.00
(22.00)
Ending Balance: 89.00
https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system
Partitioning schemes
Not all keys are created
equal
You need to be careful to
avoid hot keys
It’s not always something
you can avoid
To key or not to key…
that is the question
Adding partitions
You’ve identified a hot
partition
You add more partitions
to handle the scale
The result is a data split
Partition 1
Partition 2
1 2 3 4
5 6 7
Sharing data across partitions will slow you
down
Using a partitioned consumer model breaks if the end consumer needs
to join data across partitions
It also reintroduces availability issues
Pause
Failure to plan is planning to
fail
Strategies for dealing with failures in
messaging and streaming
Stop Drop
Retry Deadletter
Stop
• Simply stop reading – or writing the stream
• Wait until someone elsewhere has fixed the
problem and then resume
• Appropriate for some scenarios, but not all
• Probably a good idea to include a notification
Drop
• If the messages aren’t that important, just drop
them
• Up to a certain point they may not matter
• This is a good strategy for non-mission critical
streams
• But not so good for scenarios requiring strong
consistency guarantees
• Definitely a good idea to include a notification
Retry
• Try again and see if it works
• Perhaps the error is transient
• Be aware of impact on downstream systems -
idempotence
Deadletter
• Put the data somewhere off your hot path so
that you can go back and handle it later
• Does not interrupt your flow
• Works for poisoned messages
Combining strategies
• Often no one strategy will exactly match your
needs
• You can combine these to achieve the policy
that is right for you
• E.G. Retry three times, then deadletter
Another
Pause
What are event driven architectures
• Events are notifications that something
happened
• This is different than traditional messages,
which are the thing (the command)
• Event Driven Architectures are reactive in
nature
• State is derived from an event log or stream
Event Sourcing
• Add head
• Add body
• Add left arm
• Add right arm
• Add left leg
• Add right leg
Event Sourcing
• Add head
• Add body
• Add left arm
• Add right arm
• Add left leg
• Add right leg
Capabilities we’ve gain from Event Sourcing
• Complete rebuild
• Temporal query
• Event replay
What cool things can you do now?
• Add head
• Add body
• Add left arm
• Add right arm
• Add left leg
• Add right leg
You can have your cake and eat it too!
This sounds interesting…
Obvious shortcomings of Event Sourcing and
how to overcome them
TIME TO PROCESS THE LOG:
CHECKPOINTING ON A REGULAR BASIS
HOW TO QUERY THE STATE: BUILDING
A MATERIALIZED VIEW
Event Sourcing leads to divergent models for
read and write
This is often addressed with Command Query Responsibility Separation (CQRS)
Despite these benefits, you should be very cautious about using CQRS. Many
information systems fit well with the notion of an information base that is updated
in the same way that it's read, adding CQRS to such a system can add significant
complexity. I've certainly seen cases where it's made a significant drag on
productivity, adding an unwarranted amount of risk to the project, even in the
hands of a capable team.
-Martin Fowler
KStreams can help you do Event Sourcing
BASICALLY A WAY TO DO EVENT
SOURCING WITHOUT BEING AN
ARCHITECTURAL ASTRONAUT
PROVIDES MATERIALIZED VIEW
(USES ROCKSDB INTERNALLY TO
HOLD THE TABLE)
EACH APPLICATION CAN NOW
HAVE ITS OWN VIEW OF THE
STREAM
One more warning
about stream
processing
Sometimes consistency
is overrated
Sometimes good enough is… good enough
It can be more useful to have an answer right now than to have a
perfect answer at some point in the future (think Napoleon at
Waterloo)
If your application
requires perfect data
then it cannot be real-
time and distributed
THEOREM
If anyone tells you that
you can have it all in a
distributed system
In closing
Pick the right tool for
the job
You may need
multiple tools
Be realistic about
your expectations
Experiment and learn
- continuously
Share your learnings
in contributions,
blogs, etc.
Be an active member
of the Apache Kafka
community!
Thank You!

Weitere ähnliche Inhalte

Was ist angesagt?

Jun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart Labs
Jun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart LabsJun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart Labs
Jun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart Labsconfluent
 
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...confluent
 
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...confluent
 
Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...
Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...
Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...confluent
 
Kafka and Storm - event processing in realtime
Kafka and Storm - event processing in realtimeKafka and Storm - event processing in realtime
Kafka and Storm - event processing in realtimeGuido Schmutz
 
What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...
What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...
What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...confluent
 
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...confluent
 
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드confluent
 
Data Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBData Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBconfluent
 
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...confluent
 
Introducing Events and Stream Processing into Nationwide Building Society (Ro...
Introducing Events and Stream Processing into Nationwide Building Society (Ro...Introducing Events and Stream Processing into Nationwide Building Society (Ro...
Introducing Events and Stream Processing into Nationwide Building Society (Ro...confluent
 
Etl, esb, mq? no! es Apache Kafka®
Etl, esb, mq?  no! es Apache Kafka®Etl, esb, mq?  no! es Apache Kafka®
Etl, esb, mq? no! es Apache Kafka®confluent
 
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013Amazon Web Services
 
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...confluent
 
Amsterdam meetup at ING June 18, 2019
Amsterdam meetup at ING June 18, 2019Amsterdam meetup at ING June 18, 2019
Amsterdam meetup at ING June 18, 2019confluent
 
Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...
Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...
Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...confluent
 
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...confluent
 
How to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALABHow to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALABHostedbyConfluent
 
Removing performance bottlenecks with Kafka Monitoring and topic configuration
Removing performance bottlenecks with Kafka Monitoring and topic configurationRemoving performance bottlenecks with Kafka Monitoring and topic configuration
Removing performance bottlenecks with Kafka Monitoring and topic configurationKnoldus Inc.
 
Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...
Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...
Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...confluent
 

Was ist angesagt? (20)

Jun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart Labs
Jun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart LabsJun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart Labs
Jun Rao, Confluent | Kafka Summit SF 2019 Keynote ft. Chris Kasten, Walmart Labs
 
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
 
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
 
Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...
Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...
Talking Traffic: Data in the Driver's Seat (Dominique Chanet, Klarrio) Kafka ...
 
Kafka and Storm - event processing in realtime
Kafka and Storm - event processing in realtimeKafka and Storm - event processing in realtime
Kafka and Storm - event processing in realtime
 
What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...
What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...
What's inside the black box? Using ML to tune and manage Kafka. (Matthew Stum...
 
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...
Event Sourcing, Stream Processing and Serverless (Benjamin Stopford, Confluen...
 
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
 
Data Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBData Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDB
 
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
 
Introducing Events and Stream Processing into Nationwide Building Society (Ro...
Introducing Events and Stream Processing into Nationwide Building Society (Ro...Introducing Events and Stream Processing into Nationwide Building Society (Ro...
Introducing Events and Stream Processing into Nationwide Building Society (Ro...
 
Etl, esb, mq? no! es Apache Kafka®
Etl, esb, mq?  no! es Apache Kafka®Etl, esb, mq?  no! es Apache Kafka®
Etl, esb, mq? no! es Apache Kafka®
 
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
Maximizing Audience Engagement in Media Delivery (MED303) | AWS re:Invent 2013
 
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
 
Amsterdam meetup at ING June 18, 2019
Amsterdam meetup at ING June 18, 2019Amsterdam meetup at ING June 18, 2019
Amsterdam meetup at ING June 18, 2019
 
Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...
Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...
Confluent real time_acquisition_analysis_and_evaluation_of_data_streams_20190...
 
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
Event Driven Architecture with a RESTful Microservices Architecture (Kyle Ben...
 
How to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALABHow to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALAB
 
Removing performance bottlenecks with Kafka Monitoring and topic configuration
Removing performance bottlenecks with Kafka Monitoring and topic configurationRemoving performance bottlenecks with Kafka Monitoring and topic configuration
Removing performance bottlenecks with Kafka Monitoring and topic configuration
 
Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...
Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...
Apache Kafka, Tiered Storage and TensorFlow for Streaming Machine Learning wi...
 

Ähnlich wie Hard Truths About Eventing and Streaming

Building Big Data Streaming Architectures
Building Big Data Streaming ArchitecturesBuilding Big Data Streaming Architectures
Building Big Data Streaming ArchitecturesDavid Martínez Rego
 
Petabytes and Nanoseconds
Petabytes and NanosecondsPetabytes and Nanoseconds
Petabytes and NanosecondsRobert Greiner
 
Tef con2016 (1)
Tef con2016 (1)Tef con2016 (1)
Tef con2016 (1)ggarber
 
Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...
Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...
Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...DataStax Academy
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Azure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challengesAzure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challengesIvo Andreev
 
Client Server Model and Distributed Computing
Client Server Model and Distributed ComputingClient Server Model and Distributed Computing
Client Server Model and Distributed ComputingAbhishek Jaisingh
 
Enterprise Software Development Patterns
Enterprise Software Development PatternsEnterprise Software Development Patterns
Enterprise Software Development PatternsJosh Lane
 
Building data intensive applications
Building data intensive applicationsBuilding data intensive applications
Building data intensive applicationsAmit Kejriwal
 
Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...
Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...
Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...InfluxData
 
Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15Derek Ashmore
 
Simple Solutions for Complex Problems
Simple Solutions for Complex ProblemsSimple Solutions for Complex Problems
Simple Solutions for Complex ProblemsTyler Treat
 
Event-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentEvent-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentHostedbyConfluent
 
Data Consitency Patterns in Cloud Native Applications
Data Consitency Patterns in Cloud Native ApplicationsData Consitency Patterns in Cloud Native Applications
Data Consitency Patterns in Cloud Native ApplicationsRyan Knight
 
Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Apcera
 
Anatomy behind Fast Data Applications.pptx
Anatomy behind Fast Data Applications.pptxAnatomy behind Fast Data Applications.pptx
Anatomy behind Fast Data Applications.pptxdusavamsikrisna
 

Ähnlich wie Hard Truths About Eventing and Streaming (20)

Building Big Data Streaming Architectures
Building Big Data Streaming ArchitecturesBuilding Big Data Streaming Architectures
Building Big Data Streaming Architectures
 
Introduction
IntroductionIntroduction
Introduction
 
Petabytes and Nanoseconds
Petabytes and NanosecondsPetabytes and Nanoseconds
Petabytes and Nanoseconds
 
Tef con2016 (1)
Tef con2016 (1)Tef con2016 (1)
Tef con2016 (1)
 
Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...
Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...
Tales From The Front: An Architecture For Multi-Data Center Scalable Applicat...
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Azure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challengesAzure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challenges
 
Client Server Model and Distributed Computing
Client Server Model and Distributed ComputingClient Server Model and Distributed Computing
Client Server Model and Distributed Computing
 
Enterprise Software Development Patterns
Enterprise Software Development PatternsEnterprise Software Development Patterns
Enterprise Software Development Patterns
 
Building data intensive applications
Building data intensive applicationsBuilding data intensive applications
Building data intensive applications
 
Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...
Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...
Using InfluxDB for Full Observability of a SaaS Platform by Aleksandr Tavgen,...
 
Sharing-akka-pub
Sharing-akka-pubSharing-akka-pub
Sharing-akka-pub
 
Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15Microservices for java architects it-symposium-2015-09-15
Microservices for java architects it-symposium-2015-09-15
 
Best Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDSBest Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDS
 
Simple Solutions for Complex Problems
Simple Solutions for Complex ProblemsSimple Solutions for Complex Problems
Simple Solutions for Complex Problems
 
Training - What is Performance ?
Training  - What is Performance ?Training  - What is Performance ?
Training - What is Performance ?
 
Event-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentEvent-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, Confluent
 
Data Consitency Patterns in Cloud Native Applications
Data Consitency Patterns in Cloud Native ApplicationsData Consitency Patterns in Cloud Native Applications
Data Consitency Patterns in Cloud Native Applications
 
Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems
 
Anatomy behind Fast Data Applications.pptx
Anatomy behind Fast Data Applications.pptxAnatomy behind Fast Data Applications.pptx
Anatomy behind Fast Data Applications.pptx
 

Mehr von confluent

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsconfluent
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flinkconfluent
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...confluent
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluentconfluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkconfluent
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloudconfluent
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Diveconfluent
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluentconfluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Meshconfluent
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservicesconfluent
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3confluent
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernizationconfluent
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataconfluent
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2confluent
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023confluent
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesisconfluent
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023confluent
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streamsconfluent
 

Mehr von confluent (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flink
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Mesh
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservices
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernization
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time data
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesis
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streams
 

Kürzlich hochgeladen

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Kürzlich hochgeladen (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Hard Truths About Eventing and Streaming

  • 1. Hard Truths About Eventing and Streaming @DanRosanova Group Principal Program Manager Microsoft Azure Messaging
  • 2. Disclaimer All photos are owned by the speaker and free for non-commercial use
  • 3. A brief history of messaging • Old school messaging (System/360 QTAM and TCAM) • IBM MQ (yes there was Teknekron too) • Rabbit MQ • Service Bus • ActiveMQ™ • ZeroMQ • Apache Kafka® • NATS
  • 4. What exactly is a messaging queue
  • 5. A simple queue Sender sends message to queue Queue ACKs receipt Receiver connects to queue & retrieves message Receiver ACKs complete (or other action)
  • 6. What queues are good at and why
  • 7. The queue is the arbiter of truth – which simplifies many other aspects EACH READER CAN JUST SAY ‘GIVE ME THE NEXT’ MESSAGES ARE ACKED / COMPLETED INDIVIDUALLY THE QUEUE IS A BUFFER TO IMPROVE SCALE AND PERFORMANCE
  • 8. Messaging and Queues are about applications more than they are about data
  • 9. Competing Consumer: The Server-Side Cursor
  • 10. The message is the Unit of Work
  • 11. Public Subscribe: Topics & Subscriptions Sender only knows about Topic Receivers only know about Subscriptions Filters perform routing on Subscriptions
  • 12. Publish Subscriber opens interesting possibilities FAN OUT MULTI-CAST WIRE TAP FORWARDING WILL ALLOW MULTI-LAYER TOPOLOGIES (WARNING)
  • 13. But there are some things queues aren’t so good at
  • 19. Competing Consumer: not all competition is healthy
  • 20. When a wall is too high to go over and too thick to go through it is best to go around
  • 22. How is a partitioned consumer different than a queue? Data Apache Kafka® implements a partitioned consumer model
  • 24. There’s something else that resembles this RECORDS A STREAM RECODING MOVES FORWARD ONLY YOU CAN PLAY THE TAPE OVER AND OVER AGAIN A CASSETTE TAPE ACTUALLY HAS LEFT AND RIGHT CHANNELS WHEN YOU PRESS RECORD, THEY BOTH RECORD BUT THE DATA ON EACH CHANNEL IS DIFFERENT IN KAFKA THESE CHANNELS ARE CALLED PARTITIONS
  • 25. A bit more on the partition concept Partition is essentially append only Reads are performed using a client side curor Reads are nondestructive
  • 26. In a stream the partition is the Unit of Work Streams are processed differently from batch data – normal functions cannot operate on streams as a whole, as they have potentially unlimited data, and formally, streams are codata (potentially unlimited), not data (which is finite).
  • 27. Ultimate example for streams By Danielpr85 based on Graphviz source of TuukkaH - Own work, Public Domain, https://commons.wikimedia.org/w/index.php?curid=687268
  • 28. What streams like Kafka are very good at Scale Low cost Replay Order
  • 29. Why partitioned consumer scales so well
  • 30. Why partitioned consumer scales so well Maximum Degree of Parallelism
  • 31. Low cost • There are no expensive indexes to maintain • Because each partition is independent there is no cross broker coordination necessary (other than optional replication) • Client-side cursor avoids the overhead of traditional message brokers • Data replication and ACK level is a choice of the sender
  • 33. This may lead you to believe you have found Zen
  • 34. But there are clouds on the horizon
  • 35. Fan out and routing • Partitioned streams (like Kafka) don’t offer server-side filtering • Every reader must read all the data • As more readers want the data a network imbalance develops • Parse.ly Kafkapocalypse 10MBps 10MBps 10MBps 10MBps N MBps
  • 36. Streams are not queues • The Unit of Work is not an individual message • This means processing individual messages gets complicated • Cursor management becomes a big challenge • There is no inherent dead letter capability • People start adding these ‘features’ in and end up recreating a queue
  • 37. CAP Theorem In theoretical computer science the CAP theorem states that it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: Consistency, Availability, Partition tolerance
  • 38. What does CAP mean for streams? Consistency: Data should produce the same results when read multiple times – i.e. it should be stable and durable Availability: The place data is written to should always be available to write to Partition tolerance: the ability to continue functioning when one part of the system becomes separated from another
  • 39. Or put another way when a network partition happens, which over time is inevitable, then you must make a choice...
  • 40. This is your last chance. After this, there is no turning back... Consistency
  • 41. You must decide which of these two is most significant Consistency Availabilty
  • 42. Two stats to remember 99.999% availability still means 10 of every 1 million fails TCP/IP makes it almost impossible to detect a dead socket in less than 21 seconds
  • 43. If consistency is so hard why bother doing it?
  • 44. Locality of data: moving average processor • In financial applications a simple moving average (SMA) is the unweighted mean of the previous n data • For prices PM, PM-1,… PM-(n-1) https://en.wikipedia.org/wiki/Moving_average
  • 45. This is perhaps easier in code simpleMA(float[] prices, int period) float result; for(int i=0;i<period;i++) result += prices[prices.length – i]; return result/period
  • 46. What would you do with this?
  • 47. Value of consistency: your bank account Beginning Balance of 100.00 (5.00) 12.00 4.00 (22.00) Ending Balance: 89.00 https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system
  • 48. Partitioning schemes Not all keys are created equal You need to be careful to avoid hot keys It’s not always something you can avoid
  • 49. To key or not to key… that is the question
  • 50. Adding partitions You’ve identified a hot partition You add more partitions to handle the scale The result is a data split Partition 1 Partition 2 1 2 3 4 5 6 7
  • 51. Sharing data across partitions will slow you down Using a partitioned consumer model breaks if the end consumer needs to join data across partitions It also reintroduces availability issues
  • 52. Pause
  • 53. Failure to plan is planning to fail
  • 54. Strategies for dealing with failures in messaging and streaming Stop Drop Retry Deadletter
  • 55. Stop • Simply stop reading – or writing the stream • Wait until someone elsewhere has fixed the problem and then resume • Appropriate for some scenarios, but not all • Probably a good idea to include a notification
  • 56. Drop • If the messages aren’t that important, just drop them • Up to a certain point they may not matter • This is a good strategy for non-mission critical streams • But not so good for scenarios requiring strong consistency guarantees • Definitely a good idea to include a notification
  • 57. Retry • Try again and see if it works • Perhaps the error is transient • Be aware of impact on downstream systems - idempotence
  • 58. Deadletter • Put the data somewhere off your hot path so that you can go back and handle it later • Does not interrupt your flow • Works for poisoned messages
  • 59. Combining strategies • Often no one strategy will exactly match your needs • You can combine these to achieve the policy that is right for you • E.G. Retry three times, then deadletter
  • 61. What are event driven architectures • Events are notifications that something happened • This is different than traditional messages, which are the thing (the command) • Event Driven Architectures are reactive in nature • State is derived from an event log or stream
  • 62. Event Sourcing • Add head • Add body • Add left arm • Add right arm • Add left leg • Add right leg
  • 63. Event Sourcing • Add head • Add body • Add left arm • Add right arm • Add left leg • Add right leg
  • 64. Capabilities we’ve gain from Event Sourcing • Complete rebuild • Temporal query • Event replay
  • 65. What cool things can you do now? • Add head • Add body • Add left arm • Add right arm • Add left leg • Add right leg
  • 66. You can have your cake and eat it too!
  • 68. Obvious shortcomings of Event Sourcing and how to overcome them TIME TO PROCESS THE LOG: CHECKPOINTING ON A REGULAR BASIS HOW TO QUERY THE STATE: BUILDING A MATERIALIZED VIEW
  • 69. Event Sourcing leads to divergent models for read and write This is often addressed with Command Query Responsibility Separation (CQRS) Despite these benefits, you should be very cautious about using CQRS. Many information systems fit well with the notion of an information base that is updated in the same way that it's read, adding CQRS to such a system can add significant complexity. I've certainly seen cases where it's made a significant drag on productivity, adding an unwarranted amount of risk to the project, even in the hands of a capable team. -Martin Fowler
  • 70. KStreams can help you do Event Sourcing BASICALLY A WAY TO DO EVENT SOURCING WITHOUT BEING AN ARCHITECTURAL ASTRONAUT PROVIDES MATERIALIZED VIEW (USES ROCKSDB INTERNALLY TO HOLD THE TABLE) EACH APPLICATION CAN NOW HAVE ITS OWN VIEW OF THE STREAM
  • 71. One more warning about stream processing
  • 73. Sometimes good enough is… good enough It can be more useful to have an answer right now than to have a perfect answer at some point in the future (think Napoleon at Waterloo)
  • 74. If your application requires perfect data then it cannot be real- time and distributed
  • 76. If anyone tells you that you can have it all in a distributed system
  • 77. In closing Pick the right tool for the job You may need multiple tools Be realistic about your expectations Experiment and learn - continuously Share your learnings in contributions, blogs, etc. Be an active member of the Apache Kafka community!