SlideShare uma empresa Scribd logo
1 de 82
Classificatie: vertrouwelijk
Microservices in
real life – with
Apache Kafka,
Node & Dapr.io
Part 2
March 2022
Lucas Jellema
Architect & CTO AMIS | Conclusion
Classificatie: vertrouwelijk
Microservices in real life – with Node & Dapr.io
Founded in 1991 by students
from University of Twente –
Aircraft Maintenance Information
System (AMIS)
80 colleagues,
located in
Nieuwegein
the core of what we do:
working with Data.
partnering with peers
and companies in
several countries
Lucas Jellema (2002)
Cloud Solution Architect & CTO
lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema
Classificatie: vertrouwelijk
Microservices in real life – with Node & Dapr.io
Data Engineering, Data Analytics
(& Data Science)
Data &
Application
Integration
web
applications
Internet of Things
cloud, DevOps, PaaS,
streaming, microservices,
Software Studio, database,
software engineering
Oracle, Microsoft Azure,
open source, Java, SQL,
NodeJS, Python,Kafka
React/Angular
Classificatie: vertrouwelijk
Microservices in real life – with Node & Dapr.io
Classificatie: Public
Publiek
Overview
• Part One (last week)
• Microservices recap
• Dapr.io – personal assistant for applications & distributed application runtime
• Handson with Dapr.io
• Quick Intro to programming in Node[.js]
• Handson Microservice implementation with Node and Dapr.io
• Part Two (today)
• Introduction of Apache Kafka (“Twitter for systems”)
• Asynchronous interactions through Apache Kafka – concepts, terminology
• Handson with Apache Kafka and Node
• Real world use cases and scenarios with Apache Kafka
• Handson Multi-microservice set up with Apache Kafka, Node and Dapr.io
Microservices in real life – with Node & Dapr.io
Classificatie: Public
Publiek
Assumed is
• A development environment with VS Code, Docker and Docker Composer,
the ability (permissions) to install software
• Knowledge of
• HTTP, REST, JSON
• Containers, Docker (and Kubernetes)
• Java or C#
• SQL and a database (MySQL or PostgreSQL or SQL Server)
• perhaps Message Broker/Event Queue (RabbitMQ?), Cache (Redis?)
• Cloud fundamentals
• Microservices concepts
Microservices in real life – with Node & Dapr.io
Classificatie: Public
Publiek
It would be so nice if I could
publish my ideas and actions,
accessible near instantly for
everyone who is interested
Heck, I do not even know these people
and they may not know me [personally]
– just my pearls of wisdom. And if they
are late to the party, they can also
check out the historic archives of my
eloquence
Without fretting about the numbers of
readers involved and whether they are
in the same time zone as me and online
when I publish my messages – and
which device they use
Classificatie: Public
Publiek
It would be so nice if I could
publish my ideas and actions,
accessible near instantly for
everyone who is interested
Heck, I do not even know these people
and they may not know me [personally]
– just my pearls of wisdom. And if they
are late to the party, they can also
check out the historic archives of my
eloquence
Without fretting about the numbers of
readers involved and whether they are
in the same time zone as me and online
when I publish my messages – and
which device they use
Classificatie: Public
Publiek
It would be so nice if I could
publish my ideas and actions,
accessible near instantly for
everyone who is interested
Heck, I do not even know these people
and they may not know me [personally]
– just my pearls of wisdom. And if they
are late to the party, they can also
check out the historic archives of my
eloquence
Without fretting about the numbers of
readers involved and whether they are
in the same time zone as me and online
when I publish my messages – and
which device they use
Classificatie: Public
Publiek
• Decoupled communication
• 0, 1 or many followers
• Scalable number of messages (and parties)
• Reliable (mostly available, few messages lost)
• Full history
• Open: cross device, cross location
• Not Sub-second, near real-time fast
• Rate limited (#messages/minute)
• Size limited (140-280 characters)
• Format limited (text)
• Not for private interactions
• Not (really) for programmatic use
Classificatie: Public
Publiek
What does the Twitter for System Driven Event Interaction
look like?
Microservices & Apache Kafka - 24 maart 2021
• Decoupled communication – organized per topic
• 0, 1 or many Consumers per Topic
• Scalable number of messages (and parties)
• Reliable (distributed)
• Full history
• Open: libraries in many technologies & REST APIs
Classificatie: Public
Publiek
What does the Twitter for System Driven Event Interaction
look like?
Microservices & Apache Kafka - 24 maart 2021
• Decoupled communication – organized per topic
• 0, 1 or many Consumers per Topic
• Scalable number of messages (and parties)
• Reliable (distributed)
• Full history
• Open: libraries in many technologies & REST APIs
• Near real-time fast
• No Rate Limit
• No enforced size limit
• Anything goes (it’s all byte[])
• On premises or in cloud, private or trusted
• Very much for programmatic use
Classificatie: Public
Publiek
Events
Producers
Consumers
Robust, QoS, Scalable,
Fast,
History Retention
Order preserved
Containerized/Cloud-
enabled
Open
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Messaging as we know it
• JMS, IBM MQ, MS MQ, RabbitMQ, MQTT, XMPP, WebSockets, Apache
ActiveMQ, …
• Challenges
• Costs
• Scalability (size and speed)
• (lack of) Distribution (and therefore availability)
• Complexity of infrastructure
• Message delivery guarantees (reliability)
• Lack of technology openness
• Deal with temporarily offline consumers
• Retain history
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Introducing Apache Kafka
• ..- 2010 – creation at Linkedin
• Message Bus | Event Broker
• High volume, low latency, highly reliable, cross technology
• Scalable, distributed, strict message ordering, ….
• 2011/2012 – open source under the Apache Incubator/ Top Project
• Kafka is used by many large corporations:
• Walmart, Cisco, Netflix, PayPal, LinkedIn, eBay, Spotify, Uber, Sift
Science, Zalando, The New York Times, Airbnb, Coursera, ING Bank,…
• … and embraced by many software vendors & cloud providers
• Commercial backing by and Enterprise support from Confluent
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Producers
Consumers
tcp
tcp
Microservices & Apache Kafka - 24 maart 2021
Client polls Event
Broker for messages
Classificatie: Public
Publiek
Producers
Consumers
Topic
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Kafka terminology
• Topic
• Message
• == ByteArray
• Broker
• Producer
• Consumer
• Offset
Producer Consumer
Topic
Broker
Key
Value
Time
Message
Microservices & Apache Kafka - 24 maart 2021
offset (for a specific consumer)
Classificatie: Public
Publiek
Producers
Consumers
Topic
Broker
Key
Value
Time
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Consuming
• Messages are available to consumers only when they have been committed
by the producer
• Kafka does not push
• Unlike JMS
• Read does not destroy
• Unlike JMS Topic
• (some | much | all) History available
• Offline consumers can catch up
• Consumers can re-consume from the past (just move offset)
• Delivery Guarantees
• Ordering maintained
• At-least-once (per consumer) by default; at-most-once and exactly-once
can be implemented
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
The company bulletin board
Microservices & Apache Kafka - 24 maart 2021
!
!!
“@#”
!
!
!!
Classificatie: Public
Publiek
The company bulletin board
Microservices & Apache Kafka - 24 maart 2021
!
!
!!
“@#$”
€
$
¥ ₤ ₨
Classificatie: Public
Publiek
Producers
Consumers
Topic
Broker
Key
Value
Time
Microservices & Apache Kafka - 24 maart 2021
Message
Log
Classificatie: Public
Publiek
Producers
Consumers
Topic
Broker
tcp
tcp
Microservices & Apache Kafka - 24 maart 2021
Cluster
Classificatie: Public
Publiek
Producers
Consumers
Topic
Broker
tcp
tcp
Consumer Group
Partition
Microservices & Apache Kafka - 24 maart 2021
Cluster
Partition Log
Replica
Classificatie: Public
Publiek
Consumers
Topic
Broker
Consumer Group
tition
Microservices & Apache Kafka - 24 maart 2021
Cluster
Consumer Group
• each consumer group consumes all
messages (once)
• each consumer in a group consumes
from one or more partitions (no partition
is consumed by more than one
consumer in a group)
• when more consumers in a group than
partitions in the topic, some consumers
get no messages
• when consumers disappear from a
group, their partition(s) are reassigned
to other consumers in the group
Classificatie: Public
Publiek
What’s so special?
• Durable transactions
• Scalable
• High volume
• High speed
• Parallel processing
• Available
• Distributed
• Open
• Quick start
• Free (no license costs)
• “Self Fulfilling Prophecy” leading to “de facto standard”
(positive feedback loop feeding from buzz around Kafka)
• Eco system, tools/libraries/resources, cloud services
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Some Kafka Use Cases
• Connected Cars, Manufacturing, Mobility, Gaming, Betting
• Tesla: Processing and analyzing the data from their vehicles, smart grids,
and factories and integrating with the rest of the IT backend services in real-
time is a crucial piece of Tesla’s success
Microservices in real life – with Node & Dapr.io
https://kai-waehner.medium.com/when-not-to-use-apache-kafka-a35345226a9f
Classificatie: Public
Publiek
Some Kafka Use Cases
• Connected Cars, Manufacturing, Mobility, Gaming, Betting
• Regulatory compliance and zero data loss are crucial.
• transactionally safe data replication
Microservices in real life – with Node & Dapr.io
https://kai-waehner.medium.com/when-not-to-use-apache-kafka-a35345226a9f
Classificatie: Public
Publiek
Some Kafka Use Cases
• Connected Cars, Manufacturing, Mobility, Gaming, Betting
• Royal Caribbean: Each cruise ship has a Kafka cluster running locally for
use cases such as payment processing, loyalty information, customer
recommendations, etc. Sync with shore when entering a port.
Microservices in real life – with Node & Dapr.io
https://kai-waehner.medium.com/when-not-to-use-apache-kafka-a35345226a9f
Classificatie: Public
Publiek
Quick Demo – Apache Kafka through Kafka Console
• Show interaction at the most basic level
• Broker
• Topic
• partition
• Produce Message
• Consume Message
• Consumer Group
Microservices & Apache Kafka - 24 maart 2021
Docker
Compose
Browser
Laptop
28042
9092
localhost
kafka
Classificatie: Public
Publiek
Lab: First steps with Apache Kafka
• Using Kafka Console
• Create a topic
• Publish messages to topic
• Using Kafka Console
• Consume messages from topic
• Work with Apache Kafka HQ GUI to
• inspect the Kafka Cluster
• produce additional messages
• consume message from a special Consumer Group
Microservices & Apache Kafka - 24 maart 2021
Docker
Compose
Browser
Laptop
28042
9092
localhost
kafka
Lab Resources: https://github.com/lucasjellema/fontys-2022-microservices-kafka-dapr
Classificatie: Public
Publiek
Lab Environment
Microservices & Apache Kafka - 24 maart 2021
Docker
Compose
Browser
Laptop
28042
9094
9093
9092
2181
28044
localhost
kafka
Lab Resources: https://github.com/lucasjellema/fontys-2022-microservices-kafka-dapr
Classificatie: Public
Publiek
Partly Clouded Lab Environment
Microservices & Apache Kafka - 24 maart 2021
Browser
Laptop
2181
localhost
CloudKarafka
Console
Lab Resources: -
www.cloudkarafka.com/plans.html
Classificatie: Public
Publiek
Agenda -
• Part One (last week – microservices, Node, Dapr.io)
• Part Two (today)
• Introduction of Apache Kafka (“Twitter for systems”)
• Asynchronous interactions through Apache Kafka – concepts, terminology
• Handson with Apache Kafka and Node
• Real world use cases and scenarios with Apache Kafka
• Handson Multi-microservice set up with Apache Kafka, Node and Dapr.io
Microservices in real life – with Node & Dapr.io
Classificatie: Public
Publiek
Programming against Kafka: Client Libraries
• Client libraries
• C/C++
• Python
• Go
• Java
• .NET
• JavaScript/Node
• Ruby
• Scala
• and more..
• Also: REST Proxy (part of open source Confluent Platform)
• Produce, Consumer and manage through REST API calls
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Programming against Kafka:
Typical Steps in a Client Producer Application
• Create a connection
• connected to one or more brokers in a cluster or to the Zookeeper node
• you need the broker-endpoints or the Zookeeper endpoint
• optionally use credentials or certificate for authentication
• Create a Producer on top of the connection
• When the Producer-Connection is available…
• [Optionally] Start a Transaction
• Produce message[s] to topic(s)
[or specific topic partition(s)]
• [Optionally] Commit the Transaction
• [Repeat Message Production]
• Disconnect the producer/close the connection
Microservices & Apache Kafka - 24 maart 2021
Client
Application
9094
9093
9092
2181
Classificatie: Public
Publiek
Programming against Kafka:
Typical Steps in a Client Consumer Application
• Create a connection
• connected to one or more brokers in a cluster or to Zookeeper node
• you need the broker-endpoints or the Zookeeper endpoint
• optionally use credentials or certificate for authentication
• Create a Consumer or a ConsumerStream on top of the connection
• Subscribing to one or more topics
• [Optionally] Associating with a Consumer Group
• (Which leads to a link to one or topic
more partitions on the Kafka brokers)
• [Optionally] Overriding the auto-commit
• When the Consumer or Stream is available…
• Consume message[s] (from the specified subscriptions)
• [Optionally, depending on auto-commit poperty]
Commit the Transaction
• [Repeat Message Consumption]
• Disconnect the consumer/close the connection
Microservices & Apache Kafka - 24 maart 2021
Client
Application
9094
9093
9092
2181
Classificatie: Public
Publiek
Node and Kafka
• We will use NPM module node-rdkafka to facilitate the interaction with
Apache Kafka from our Node application
• This module leverages a C/C++ library for Kafka interactions
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Node and Kafka – a simple producer
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Node and Kafka – a simple producer
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Node and Kafka – a simple producer
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Node and Kafka – a simple producer
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Node and Kafka – a simple producer
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Node and Kafka – a simple producer
Microservices & Apache Kafka - 24 maart 2021
Client
Application
9094
9093
9092
test-topic
1
2
Classificatie: Public
Publiek
Node and Kafka – a simple consumer
Microservices & Apache Kafka - 24 maart 2021
9094
9093
9092
test-topic
Classificatie: Public
Publiek
Node and Kafka – a simple consumer
Microservices & Apache Kafka - 24 maart 2021
Client
Application
9094
9093
9092
test-topic
1
2
Classificatie: Public
Publiek
Lab – Programmatic interaction with Apache Kafka
• Prequisite: local Node runtime
• Step Two:
• Node application to Produce Messages to Kafka Topic
• Node application to Consume Messages from Kafka Topic
• Bonus Step Three:
• Node Web Application to Produce Messages from HTTP Request
• Node Web Application to return Messages on Topic in HTTP Response
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Microservices & Apache Kafka - 24 maart 2021
Produce
Consume
kjynvuby-default
Classificatie: Public
Publiek
Utility company with data. Lots of it.
Microservices & Apache Kafka - 24 maart 2021
Interesting mix of operational, real time systems in physical environments, large scale enterprise systems for
1000s of internal professionals and millions of external consumers – with a mission to improve the world
Classificatie: Public
Publiek
Utility Company looking for Performance, Scalability and
Availability in their core data sets
Microservices & Apache Kafka - 24 maart 2021
CRM
Meter Readings
batch
Invoicing
Billing
Marketing
Campaigns
Load on Core Systems &
effect on Performance
Availability Core Systems
Classificatie: Public
Publiek
Utility Company looking for Performance, Scalability and
Availability in their core data sets
Microservices & Apache Kafka - 24 maart 2021
CRM
Meter Readings
Invoicing
Billing
Marketing
Campaigns
CRM
Cache DB
Meter
Readings
Cache DB
Classificatie: Public
Publiek
Utility Company looking for Performance, Scalability and
Availability in their core data sets
Microservices & Apache Kafka - 24 maart 2021
CRM
Meter Readings
Invoicing
Billing
Marketing
Campaigns
CRM
Cache DB
Meter
Readings
Cache DB
Classificatie: vertrouwelijk
Event Sourcing
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Event Sourcing
Microservices & Apache Kafka - 24 maart 2021
Events Event Store
Current State
accountId:
123
amount: 10
Owner: Jane Doe
Classificatie: Public
Publiek
Event Sourcing
Microservices & Apache Kafka - 24 maart 2021
Events Event Store
Current State
Other State Aggregate
Classificatie: Public
Publiek
Event Sourcing
• Event Store is immutable – append-only log of domain state transitions
• It is the truth about data – everything else is derived
• Replay events
• to (re)construct a representation of the current state (aggregate)
• up to a specific time to recreate moments in time
• in Test environment to investigate an issue
• on a remote location to create mirror & share state across boundaries
• produce a fine grained audit trail
• Challenges
• Time required to reconstruct state
• Grain of aggregates / definition of domain events
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Retail chain – 1200 stores and one central environment
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
Classificatie: Public
Publiek
Retail chain – 1200 stores and one central environment
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
• fast
• capable of high volume
• reliable / transactional
• cross technology
• not invasive
• future proof (and proven)
• bi-directional
Classificatie: Public
Publiek
Outbound – from central to 1200 stores
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
Classificatie: Public
Publiek
Outbound – from central to 1200 stores
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
Classificatie: Public
Publiek
Retail chain – 1200 stores and one central environment
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
Classificatie: Public
Publiek
Inbound – from 1200 stores to Central
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
Classificatie: Public
Publiek
Inbound – from 1200 stores to Central
Microservices in real life – with Node & Dapr.io
Central Environment
(on Azure)
Store A
Store B
Store C
Store D
Classificatie: Public
Publiek
Web Portal – Faster, Simpler and more Available
Microservices in real life – with Node & Dapr.io
Lab
Systems Web Portal
Classificatie: Public
Publiek
Web Portal – The Original Situation (2014)
Microservices in real life – with Node & Dapr.io
Relational Database
Service Bus
Lab
Systems Web Portal
SOAP/XML
SQL & Stored
Procedures
Classificatie: Public
Publiek
Web Portal – Faster, Simpler and more Available (2021)
Microservices in real life – with Node & Dapr.io
Relational Database
Service Bus
Lab
Systems
Web Portal
SOAP/XML
Kafka
Connect
Azure Cloud
NoSQL
Database
Kafka
REST/JSON
Changed
Data Capture
Classificatie: Public
Publiek
Apache Kafka is more than the core distributed platform
And there is more to distributed event platforms than Kafka
• Apache Kafka is surrounded by an ecosystem
• Primary supporting company: Confluent
• Extensions, Tools, Enterprise Edition
• Supporting resources (books, articles, tutorials, conferences)
• Partner companies
• Managed cloud services
• Kafka-compatible Public Cloud offerings
• Kafka-like offerings
• Competitors, imitators, …
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Ecosystem – Kafka and Friends
• Kafka Schema Registry – manage message schema definitions
• Kafka Connect – read data and change events
from many sources and/or write to many targets
• Also see Debezium
• Kafka Streams
• Kafka KSQL
• Confluent Enterprise
• Enterprise Grade Security
• Replicator
(synch across regions)
• Ops (Operations) support
• Confluent Managed Kafka Cloud Offering
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Confluent offerings
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Select Running Count
from <stream of tweet events>
select tag
, count(*) tweet_count
from tweets
Where tag = 'COVID2019' or tag = 'KAFKA'
group
by tag
Microservices & Apache Kafka - 24 maart 2021
<--- streaming data
Classificatie: Public
Publiek
Topic
Continuous Queries on Streaming Data
• Count Events, Aggregate Payloads, Filter, Combine & Enrich…
• … and produce: new events
Microservices & Apache Kafka - 24 maart 2021
Topic
Topic
Processor
Topic
Processor
Table
Classificatie: Public
Publiek
Alternatives for Apache Kafka’s
Distributed Streaming Event Platform
• Apache Pulsar
• Solace PubSub+ Event Portal
• Rabbit MQ
• Apache Active MQ
• Streaming Data libraries
• Apache Spark Streaming, Conduit, Faust, Apache Flink, Apache Storm,
Samza, Apache Beam, Apache Flume
Microservices & Apache Kafka - 24 maart 2021
Classificatie: Public
Publiek
Managed Kafka (-like) Cloud Offering
• Confluent
• AWS
• SQS
• Managed Streaming for Apache Kafka (Amazon MSK)
• EventBridge, Kinesis
• Azure
• Event Hub
• EventGrid, Stream Analytics
• Oracle Cloud Infrastructure
• Streams
• Google Cloud Platform
• PubSub
• DataFlow
• … (Heroku Managed Kafka, Alibaba Cloud LogHub, IBM Event Streams,…)
Microservices & Apache Kafka - 24 maart 2021
?
Classificatie: Public
Publiek
Slide from last week:
Pub/Sub with Dapr from Node applications
Microservices in real life – with Node & Dapr.io
sidecar (the personal assistant)
Node SDK
for Dapr
Pub/Sub
components
publish message
components.yaml
PubSub
Brokers
pub/sub
interface
Node SDK
for Dapr
components.yaml
subscribe on topic
with handler function
message sent to handler
Classificatie: Public
Publiek
Pub/Sub with Dapr from Node applications
Microservices in real life – with Node & Dapr.io
sidecar (the personal assistant)
Node SDK
for Dapr
Pub/Sub
components
publish message
components.yaml
PubSub
Brokers
Node SDK
for Dapr
components.yaml
subscribe on topic
with handler function
message sent to handler
pub/sub
interface
publish
message
Classificatie: Public
Publiek
Pub/Sub with Dapr from Node applications
Microservices in real life – with Node & Dapr.io
sidecar (the personal assistant)
Node SDK
for Dapr
Pub/Sub
components
publish message
ponents.yaml
PubSub
Brokers
Node SDK
for Dapr
components.yaml
pub/sub
interface
subscribe
on topic
message sent
to handler
Classificatie: Public
Publiek
Pub/Sub with Dapr from Node applications
Replace Redis by Apache Kafka
Microservices in real life – with Node & Dapr.io
sidecar (the personal assistant)
Node SDK
for Dapr
Pub/Sub
components
publish message
to topic
components.yaml
PubSub
Brokers
pub/sub
interface
Node SDK
for Dapr
components.yaml
subscribe on topic
with handler function
message sent to handler
9094
9093
9092
test-topic
Classificatie: Public
Publiek
Labs on Kafka and Node and Dapr
• Programmatically work with Kafka from Node – with and without Dapr
• publishing and consuming messages
• Implement the CQRS pattern between two microservices
• one is master of data, the other has a stand alone replica – to be synchronized
• Implement decoupled conversation between multiple
microservices – through Kafka
Microservices in real life – with Node & Dapr.io
Billing Engine
CRM
Handles assignment on
workflow queue to produce a
bill for a customer
Publish Event to Kafka Topic
with question details and
conversation identifier
Consume Event, handle the question and publish
a response with customer details on a second
queue – including the conversation identifier
questions
answers
workflow-
queue
Billing Run
Coordinator
Create bill
processing
instructions for
customers
1
2
3
4
5
bill
Classificatie: Public
Publiek
Lab – Microservice interaction
• Asynchronous conversation between microservices
Microservices & Apache Kafka - 24 maart 2021
Billing Engine
CRM
Handles assignment on
workflow queue to produce
a bill for a customer
Publish Event to Kafka
Topic with question details
and conversation identifier
Consume Event, handle the question
and publish a response with customer
details on a second queue – including
the conversation identifier
questions
answers
workflow-queue
Billing Run
Coordinator
Create bill
processing
instructions for
customers
1
2
3
4
5
bill
Classificatie: Public
Publiek
Summary
• => == =>
• Apache Kafka is emerging as platform of choice for message exchange in a world of
• Microservices
• Event Sourcing, CQRS and Data Source Synchronization
• Clouds
• Fast Data (IoT) and Streaming Analysis
• Real time data integration & distribution
• Getting started with Apache Kafka is not very hard at all
• The platform is open source – and has broad client support (Java, Node, …)
• Many resources are available – tutorials, blog article, demonstrations, presentation
slides and recordings of conference sessions, samples on GitHub
• Using Docker Compose it is quite easy to quickly run a Kafka Cluster
(and with CloudKarafka even easier)
• Note: managing a production grade cluster is not so easy
Microservices & Apache Kafka - 24 maart 2021
Classificatie: vertrouwelijk
Microservices in real life – with Node & Dapr.io
you are invited to come do an internship and explore job opportunities with us!
lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema

Mais conteúdo relacionado

Mais procurados

Kafka 101 and Developer Best Practices
Kafka 101 and Developer Best PracticesKafka 101 and Developer Best Practices
Kafka 101 and Developer Best Practicesconfluent
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using KafkaKnoldus Inc.
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETconfluent
 
Domain events & Kafka in Ruby applications
Domain events & Kafka in Ruby applicationsDomain events & Kafka in Ruby applications
Domain events & Kafka in Ruby applicationsSpyros Livathinos
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Lucas Jellema
 
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Flink Forward
 
Apache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and DevelopersApache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and Developersconfluent
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaShiao-An Yuan
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explainedconfluent
 
Getting Started with Confluent Schema Registry
Getting Started with Confluent Schema RegistryGetting Started with Confluent Schema Registry
Getting Started with Confluent Schema Registryconfluent
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache KafkaAmir Sedighi
 
The Top 5 Apache Kafka Use Cases and Architectures in 2022
The Top 5 Apache Kafka Use Cases and Architectures in 2022The Top 5 Apache Kafka Use Cases and Architectures in 2022
The Top 5 Apache Kafka Use Cases and Architectures in 2022Kai Wähner
 
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache KafkaReal-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache KafkaKai Wähner
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka StreamsGuozhang Wang
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka IntroductionAmita Mirajkar
 
Kafka Streams State Stores Being Persistent
Kafka Streams State Stores Being PersistentKafka Streams State Stores Being Persistent
Kafka Streams State Stores Being Persistentconfluent
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...LibbySchulze
 

Mais procurados (20)

Kafka 101 and Developer Best Practices
Kafka 101 and Developer Best PracticesKafka 101 and Developer Best Practices
Kafka 101 and Developer Best Practices
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using Kafka
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NET
 
Domain events & Kafka in Ruby applications
Domain events & Kafka in Ruby applicationsDomain events & Kafka in Ruby applications
Domain events & Kafka in Ruby applications
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
Squirreling Away $640 Billion: How Stripe Leverages Flink for Change Data Cap...
 
Apache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and DevelopersApache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and Developers
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
 
Getting Started with Confluent Schema Registry
Getting Started with Confluent Schema RegistryGetting Started with Confluent Schema Registry
Getting Started with Confluent Schema Registry
 
An Introduction to Apache Kafka
An Introduction to Apache KafkaAn Introduction to Apache Kafka
An Introduction to Apache Kafka
 
Kafka internals
Kafka internalsKafka internals
Kafka internals
 
The Top 5 Apache Kafka Use Cases and Architectures in 2022
The Top 5 Apache Kafka Use Cases and Architectures in 2022The Top 5 Apache Kafka Use Cases and Architectures in 2022
The Top 5 Apache Kafka Use Cases and Architectures in 2022
 
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache KafkaReal-Life Use Cases & Architectures for Event Streaming with Apache Kafka
Real-Life Use Cases & Architectures for Event Streaming with Apache Kafka
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka Introduction
 
Kafka Streams State Stores Being Persistent
Kafka Streams State Stores Being PersistentKafka Streams State Stores Being Persistent
Kafka Streams State Stores Being Persistent
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...
 
Cloud Monitoring tool Grafana
Cloud Monitoring  tool Grafana Cloud Monitoring  tool Grafana
Cloud Monitoring tool Grafana
 

Semelhante a Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschool, Spring 2022)

What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...Lucas Jellema
 
Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...
Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...
Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...Lucas Jellema
 
How to contribute to Serverless Apache OpenWhisk OpenSource101 NCSU
How to contribute to Serverless Apache OpenWhisk OpenSource101 NCSUHow to contribute to Serverless Apache OpenWhisk OpenSource101 NCSU
How to contribute to Serverless Apache OpenWhisk OpenSource101 NCSUCarlos Santana
 
Snrg2011 6.15.2.sta canney_suranofsky
Snrg2011 6.15.2.sta canney_suranofskySnrg2011 6.15.2.sta canney_suranofsky
Snrg2011 6.15.2.sta canney_suranofskykaran saini
 
Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...
Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...
Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...Emmanuel E C
 
Emerging Trends in Librarianship (2008)
Emerging Trends in Librarianship (2008)Emerging Trends in Librarianship (2008)
Emerging Trends in Librarianship (2008)H Anil Kumar
 
Knowledge Plaza
Knowledge PlazaKnowledge Plaza
Knowledge PlazaElium
 
Message Architectures in Distributed Systems - Data Day Texas 2013-01-11
Message Architectures in Distributed Systems - Data Day Texas 2013-01-11Message Architectures in Distributed Systems - Data Day Texas 2013-01-11
Message Architectures in Distributed Systems - Data Day Texas 2013-01-11Eric Lubow
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sangerChris Dwan
 
Next generation repositories
Next generation repositoriesNext generation repositories
Next generation repositoriesPaul Walk
 
The Europeana Strategy and Linked Open Data
The Europeana Strategy and Linked Open DataThe Europeana Strategy and Linked Open Data
The Europeana Strategy and Linked Open DataDavid Haskiya
 
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented MiddlewareADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented MiddlewareDATAVERSITY
 
CouchbasetoHadoop_Matt_Michael_Justin v4
CouchbasetoHadoop_Matt_Michael_Justin v4CouchbasetoHadoop_Matt_Michael_Justin v4
CouchbasetoHadoop_Matt_Michael_Justin v4Michael Kehoe
 
Yow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with NotesYow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with NotesAdrian Cockcroft
 
Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar)
Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar) Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar)
Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar) Timothy Spann
 
Cloud 2.0: Containers, Microservices and Cloud Hybridization
Cloud 2.0: Containers, Microservices and Cloud HybridizationCloud 2.0: Containers, Microservices and Cloud Hybridization
Cloud 2.0: Containers, Microservices and Cloud HybridizationMark Hinkle
 

Semelhante a Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschool, Spring 2022) (20)

What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
 
Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...
Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...
Introducing Apache Kafka and why it is important to Oracle, Java and IT profe...
 
How to contribute to Serverless Apache OpenWhisk OpenSource101 NCSU
How to contribute to Serverless Apache OpenWhisk OpenSource101 NCSUHow to contribute to Serverless Apache OpenWhisk OpenSource101 NCSU
How to contribute to Serverless Apache OpenWhisk OpenSource101 NCSU
 
Snrg2011 6.15.2.sta canney_suranofsky
Snrg2011 6.15.2.sta canney_suranofskySnrg2011 6.15.2.sta canney_suranofsky
Snrg2011 6.15.2.sta canney_suranofsky
 
Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...
Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...
Use of "NewGenLib" Open Source Software for Library Automation, Digital Libra...
 
Emerging Trends in Librarianship (2008)
Emerging Trends in Librarianship (2008)Emerging Trends in Librarianship (2008)
Emerging Trends in Librarianship (2008)
 
RA21 Charleston Library Conference Presentation
RA21 Charleston Library Conference Presentation RA21 Charleston Library Conference Presentation
RA21 Charleston Library Conference Presentation
 
Knowledge Plaza
Knowledge PlazaKnowledge Plaza
Knowledge Plaza
 
Knowledge Plaza
Knowledge PlazaKnowledge Plaza
Knowledge Plaza
 
Emerging Technologies
Emerging TechnologiesEmerging Technologies
Emerging Technologies
 
Message Architectures in Distributed Systems - Data Day Texas 2013-01-11
Message Architectures in Distributed Systems - Data Day Texas 2013-01-11Message Architectures in Distributed Systems - Data Day Texas 2013-01-11
Message Architectures in Distributed Systems - Data Day Texas 2013-01-11
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sanger
 
Next generation repositories
Next generation repositoriesNext generation repositories
Next generation repositories
 
The Europeana Strategy and Linked Open Data
The Europeana Strategy and Linked Open DataThe Europeana Strategy and Linked Open Data
The Europeana Strategy and Linked Open Data
 
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented MiddlewareADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
 
Drupal In 1 Hour
Drupal In 1 HourDrupal In 1 Hour
Drupal In 1 Hour
 
CouchbasetoHadoop_Matt_Michael_Justin v4
CouchbasetoHadoop_Matt_Michael_Justin v4CouchbasetoHadoop_Matt_Michael_Justin v4
CouchbasetoHadoop_Matt_Michael_Justin v4
 
Yow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with NotesYow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with Notes
 
Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar)
Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar) Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar)
Using the FLiPN Stack for Edge AI (Flink, NiFi, Pulsar)
 
Cloud 2.0: Containers, Microservices and Cloud Hybridization
Cloud 2.0: Containers, Microservices and Cloud HybridizationCloud 2.0: Containers, Microservices and Cloud Hybridization
Cloud 2.0: Containers, Microservices and Cloud Hybridization
 

Mais de Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Lucas Jellema
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...Lucas Jellema
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Lucas Jellema
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Lucas Jellema
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Lucas Jellema
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Lucas Jellema
 
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...Lucas Jellema
 

Mais de Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
 
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
Triple C - Centralize, Cloudify and Consolidate Dozens of Oracle Databases (O...
 

Último

What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 

Último (20)

What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 

Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschool, Spring 2022)

  • 1. Classificatie: vertrouwelijk Microservices in real life – with Apache Kafka, Node & Dapr.io Part 2 March 2022 Lucas Jellema Architect & CTO AMIS | Conclusion
  • 2. Classificatie: vertrouwelijk Microservices in real life – with Node & Dapr.io Founded in 1991 by students from University of Twente – Aircraft Maintenance Information System (AMIS) 80 colleagues, located in Nieuwegein the core of what we do: working with Data. partnering with peers and companies in several countries Lucas Jellema (2002) Cloud Solution Architect & CTO lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema
  • 3. Classificatie: vertrouwelijk Microservices in real life – with Node & Dapr.io Data Engineering, Data Analytics (& Data Science) Data & Application Integration web applications Internet of Things cloud, DevOps, PaaS, streaming, microservices, Software Studio, database, software engineering Oracle, Microsoft Azure, open source, Java, SQL, NodeJS, Python,Kafka React/Angular
  • 4. Classificatie: vertrouwelijk Microservices in real life – with Node & Dapr.io
  • 5. Classificatie: Public Publiek Overview • Part One (last week) • Microservices recap • Dapr.io – personal assistant for applications & distributed application runtime • Handson with Dapr.io • Quick Intro to programming in Node[.js] • Handson Microservice implementation with Node and Dapr.io • Part Two (today) • Introduction of Apache Kafka (“Twitter for systems”) • Asynchronous interactions through Apache Kafka – concepts, terminology • Handson with Apache Kafka and Node • Real world use cases and scenarios with Apache Kafka • Handson Multi-microservice set up with Apache Kafka, Node and Dapr.io Microservices in real life – with Node & Dapr.io
  • 6. Classificatie: Public Publiek Assumed is • A development environment with VS Code, Docker and Docker Composer, the ability (permissions) to install software • Knowledge of • HTTP, REST, JSON • Containers, Docker (and Kubernetes) • Java or C# • SQL and a database (MySQL or PostgreSQL or SQL Server) • perhaps Message Broker/Event Queue (RabbitMQ?), Cache (Redis?) • Cloud fundamentals • Microservices concepts Microservices in real life – with Node & Dapr.io
  • 7. Classificatie: Public Publiek It would be so nice if I could publish my ideas and actions, accessible near instantly for everyone who is interested Heck, I do not even know these people and they may not know me [personally] – just my pearls of wisdom. And if they are late to the party, they can also check out the historic archives of my eloquence Without fretting about the numbers of readers involved and whether they are in the same time zone as me and online when I publish my messages – and which device they use
  • 8. Classificatie: Public Publiek It would be so nice if I could publish my ideas and actions, accessible near instantly for everyone who is interested Heck, I do not even know these people and they may not know me [personally] – just my pearls of wisdom. And if they are late to the party, they can also check out the historic archives of my eloquence Without fretting about the numbers of readers involved and whether they are in the same time zone as me and online when I publish my messages – and which device they use
  • 9. Classificatie: Public Publiek It would be so nice if I could publish my ideas and actions, accessible near instantly for everyone who is interested Heck, I do not even know these people and they may not know me [personally] – just my pearls of wisdom. And if they are late to the party, they can also check out the historic archives of my eloquence Without fretting about the numbers of readers involved and whether they are in the same time zone as me and online when I publish my messages – and which device they use
  • 10. Classificatie: Public Publiek • Decoupled communication • 0, 1 or many followers • Scalable number of messages (and parties) • Reliable (mostly available, few messages lost) • Full history • Open: cross device, cross location • Not Sub-second, near real-time fast • Rate limited (#messages/minute) • Size limited (140-280 characters) • Format limited (text) • Not for private interactions • Not (really) for programmatic use
  • 11. Classificatie: Public Publiek What does the Twitter for System Driven Event Interaction look like? Microservices & Apache Kafka - 24 maart 2021 • Decoupled communication – organized per topic • 0, 1 or many Consumers per Topic • Scalable number of messages (and parties) • Reliable (distributed) • Full history • Open: libraries in many technologies & REST APIs
  • 12. Classificatie: Public Publiek What does the Twitter for System Driven Event Interaction look like? Microservices & Apache Kafka - 24 maart 2021 • Decoupled communication – organized per topic • 0, 1 or many Consumers per Topic • Scalable number of messages (and parties) • Reliable (distributed) • Full history • Open: libraries in many technologies & REST APIs • Near real-time fast • No Rate Limit • No enforced size limit • Anything goes (it’s all byte[]) • On premises or in cloud, private or trusted • Very much for programmatic use
  • 13. Classificatie: Public Publiek Events Producers Consumers Robust, QoS, Scalable, Fast, History Retention Order preserved Containerized/Cloud- enabled Open Microservices & Apache Kafka - 24 maart 2021
  • 14. Classificatie: Public Publiek Messaging as we know it • JMS, IBM MQ, MS MQ, RabbitMQ, MQTT, XMPP, WebSockets, Apache ActiveMQ, … • Challenges • Costs • Scalability (size and speed) • (lack of) Distribution (and therefore availability) • Complexity of infrastructure • Message delivery guarantees (reliability) • Lack of technology openness • Deal with temporarily offline consumers • Retain history Microservices & Apache Kafka - 24 maart 2021
  • 15. Classificatie: Public Publiek Introducing Apache Kafka • ..- 2010 – creation at Linkedin • Message Bus | Event Broker • High volume, low latency, highly reliable, cross technology • Scalable, distributed, strict message ordering, …. • 2011/2012 – open source under the Apache Incubator/ Top Project • Kafka is used by many large corporations: • Walmart, Cisco, Netflix, PayPal, LinkedIn, eBay, Spotify, Uber, Sift Science, Zalando, The New York Times, Airbnb, Coursera, ING Bank,… • … and embraced by many software vendors & cloud providers • Commercial backing by and Enterprise support from Confluent Microservices & Apache Kafka - 24 maart 2021
  • 16. Classificatie: Public Publiek Producers Consumers tcp tcp Microservices & Apache Kafka - 24 maart 2021 Client polls Event Broker for messages
  • 18. Classificatie: Public Publiek Kafka terminology • Topic • Message • == ByteArray • Broker • Producer • Consumer • Offset Producer Consumer Topic Broker Key Value Time Message Microservices & Apache Kafka - 24 maart 2021 offset (for a specific consumer)
  • 20. Classificatie: Public Publiek Consuming • Messages are available to consumers only when they have been committed by the producer • Kafka does not push • Unlike JMS • Read does not destroy • Unlike JMS Topic • (some | much | all) History available • Offline consumers can catch up • Consumers can re-consume from the past (just move offset) • Delivery Guarantees • Ordering maintained • At-least-once (per consumer) by default; at-most-once and exactly-once can be implemented Microservices & Apache Kafka - 24 maart 2021
  • 21. Classificatie: Public Publiek The company bulletin board Microservices & Apache Kafka - 24 maart 2021 ! !! “@#” ! ! !!
  • 22. Classificatie: Public Publiek The company bulletin board Microservices & Apache Kafka - 24 maart 2021 ! ! !! “@#$” € $ ¥ ₤ ₨
  • 26. Classificatie: Public Publiek Consumers Topic Broker Consumer Group tition Microservices & Apache Kafka - 24 maart 2021 Cluster Consumer Group • each consumer group consumes all messages (once) • each consumer in a group consumes from one or more partitions (no partition is consumed by more than one consumer in a group) • when more consumers in a group than partitions in the topic, some consumers get no messages • when consumers disappear from a group, their partition(s) are reassigned to other consumers in the group
  • 27. Classificatie: Public Publiek What’s so special? • Durable transactions • Scalable • High volume • High speed • Parallel processing • Available • Distributed • Open • Quick start • Free (no license costs) • “Self Fulfilling Prophecy” leading to “de facto standard” (positive feedback loop feeding from buzz around Kafka) • Eco system, tools/libraries/resources, cloud services Microservices & Apache Kafka - 24 maart 2021
  • 28. Classificatie: Public Publiek Some Kafka Use Cases • Connected Cars, Manufacturing, Mobility, Gaming, Betting • Tesla: Processing and analyzing the data from their vehicles, smart grids, and factories and integrating with the rest of the IT backend services in real- time is a crucial piece of Tesla’s success Microservices in real life – with Node & Dapr.io https://kai-waehner.medium.com/when-not-to-use-apache-kafka-a35345226a9f
  • 29. Classificatie: Public Publiek Some Kafka Use Cases • Connected Cars, Manufacturing, Mobility, Gaming, Betting • Regulatory compliance and zero data loss are crucial. • transactionally safe data replication Microservices in real life – with Node & Dapr.io https://kai-waehner.medium.com/when-not-to-use-apache-kafka-a35345226a9f
  • 30. Classificatie: Public Publiek Some Kafka Use Cases • Connected Cars, Manufacturing, Mobility, Gaming, Betting • Royal Caribbean: Each cruise ship has a Kafka cluster running locally for use cases such as payment processing, loyalty information, customer recommendations, etc. Sync with shore when entering a port. Microservices in real life – with Node & Dapr.io https://kai-waehner.medium.com/when-not-to-use-apache-kafka-a35345226a9f
  • 31. Classificatie: Public Publiek Quick Demo – Apache Kafka through Kafka Console • Show interaction at the most basic level • Broker • Topic • partition • Produce Message • Consume Message • Consumer Group Microservices & Apache Kafka - 24 maart 2021 Docker Compose Browser Laptop 28042 9092 localhost kafka
  • 32. Classificatie: Public Publiek Lab: First steps with Apache Kafka • Using Kafka Console • Create a topic • Publish messages to topic • Using Kafka Console • Consume messages from topic • Work with Apache Kafka HQ GUI to • inspect the Kafka Cluster • produce additional messages • consume message from a special Consumer Group Microservices & Apache Kafka - 24 maart 2021 Docker Compose Browser Laptop 28042 9092 localhost kafka Lab Resources: https://github.com/lucasjellema/fontys-2022-microservices-kafka-dapr
  • 33. Classificatie: Public Publiek Lab Environment Microservices & Apache Kafka - 24 maart 2021 Docker Compose Browser Laptop 28042 9094 9093 9092 2181 28044 localhost kafka Lab Resources: https://github.com/lucasjellema/fontys-2022-microservices-kafka-dapr
  • 34. Classificatie: Public Publiek Partly Clouded Lab Environment Microservices & Apache Kafka - 24 maart 2021 Browser Laptop 2181 localhost CloudKarafka Console Lab Resources: - www.cloudkarafka.com/plans.html
  • 35. Classificatie: Public Publiek Agenda - • Part One (last week – microservices, Node, Dapr.io) • Part Two (today) • Introduction of Apache Kafka (“Twitter for systems”) • Asynchronous interactions through Apache Kafka – concepts, terminology • Handson with Apache Kafka and Node • Real world use cases and scenarios with Apache Kafka • Handson Multi-microservice set up with Apache Kafka, Node and Dapr.io Microservices in real life – with Node & Dapr.io
  • 36. Classificatie: Public Publiek Programming against Kafka: Client Libraries • Client libraries • C/C++ • Python • Go • Java • .NET • JavaScript/Node • Ruby • Scala • and more.. • Also: REST Proxy (part of open source Confluent Platform) • Produce, Consumer and manage through REST API calls Microservices & Apache Kafka - 24 maart 2021
  • 37. Classificatie: Public Publiek Programming against Kafka: Typical Steps in a Client Producer Application • Create a connection • connected to one or more brokers in a cluster or to the Zookeeper node • you need the broker-endpoints or the Zookeeper endpoint • optionally use credentials or certificate for authentication • Create a Producer on top of the connection • When the Producer-Connection is available… • [Optionally] Start a Transaction • Produce message[s] to topic(s) [or specific topic partition(s)] • [Optionally] Commit the Transaction • [Repeat Message Production] • Disconnect the producer/close the connection Microservices & Apache Kafka - 24 maart 2021 Client Application 9094 9093 9092 2181
  • 38. Classificatie: Public Publiek Programming against Kafka: Typical Steps in a Client Consumer Application • Create a connection • connected to one or more brokers in a cluster or to Zookeeper node • you need the broker-endpoints or the Zookeeper endpoint • optionally use credentials or certificate for authentication • Create a Consumer or a ConsumerStream on top of the connection • Subscribing to one or more topics • [Optionally] Associating with a Consumer Group • (Which leads to a link to one or topic more partitions on the Kafka brokers) • [Optionally] Overriding the auto-commit • When the Consumer or Stream is available… • Consume message[s] (from the specified subscriptions) • [Optionally, depending on auto-commit poperty] Commit the Transaction • [Repeat Message Consumption] • Disconnect the consumer/close the connection Microservices & Apache Kafka - 24 maart 2021 Client Application 9094 9093 9092 2181
  • 39. Classificatie: Public Publiek Node and Kafka • We will use NPM module node-rdkafka to facilitate the interaction with Apache Kafka from our Node application • This module leverages a C/C++ library for Kafka interactions Microservices & Apache Kafka - 24 maart 2021
  • 40. Classificatie: Public Publiek Node and Kafka – a simple producer Microservices & Apache Kafka - 24 maart 2021
  • 41. Classificatie: Public Publiek Node and Kafka – a simple producer Microservices & Apache Kafka - 24 maart 2021
  • 42. Classificatie: Public Publiek Node and Kafka – a simple producer Microservices & Apache Kafka - 24 maart 2021
  • 43. Classificatie: Public Publiek Node and Kafka – a simple producer Microservices & Apache Kafka - 24 maart 2021
  • 44. Classificatie: Public Publiek Node and Kafka – a simple producer Microservices & Apache Kafka - 24 maart 2021
  • 45. Classificatie: Public Publiek Node and Kafka – a simple producer Microservices & Apache Kafka - 24 maart 2021 Client Application 9094 9093 9092 test-topic 1 2
  • 46. Classificatie: Public Publiek Node and Kafka – a simple consumer Microservices & Apache Kafka - 24 maart 2021 9094 9093 9092 test-topic
  • 47. Classificatie: Public Publiek Node and Kafka – a simple consumer Microservices & Apache Kafka - 24 maart 2021 Client Application 9094 9093 9092 test-topic 1 2
  • 48. Classificatie: Public Publiek Lab – Programmatic interaction with Apache Kafka • Prequisite: local Node runtime • Step Two: • Node application to Produce Messages to Kafka Topic • Node application to Consume Messages from Kafka Topic • Bonus Step Three: • Node Web Application to Produce Messages from HTTP Request • Node Web Application to return Messages on Topic in HTTP Response Microservices & Apache Kafka - 24 maart 2021
  • 49. Classificatie: Public Publiek Microservices & Apache Kafka - 24 maart 2021 Produce Consume kjynvuby-default
  • 50. Classificatie: Public Publiek Utility company with data. Lots of it. Microservices & Apache Kafka - 24 maart 2021 Interesting mix of operational, real time systems in physical environments, large scale enterprise systems for 1000s of internal professionals and millions of external consumers – with a mission to improve the world
  • 51. Classificatie: Public Publiek Utility Company looking for Performance, Scalability and Availability in their core data sets Microservices & Apache Kafka - 24 maart 2021 CRM Meter Readings batch Invoicing Billing Marketing Campaigns Load on Core Systems & effect on Performance Availability Core Systems
  • 52. Classificatie: Public Publiek Utility Company looking for Performance, Scalability and Availability in their core data sets Microservices & Apache Kafka - 24 maart 2021 CRM Meter Readings Invoicing Billing Marketing Campaigns CRM Cache DB Meter Readings Cache DB
  • 53. Classificatie: Public Publiek Utility Company looking for Performance, Scalability and Availability in their core data sets Microservices & Apache Kafka - 24 maart 2021 CRM Meter Readings Invoicing Billing Marketing Campaigns CRM Cache DB Meter Readings Cache DB
  • 55. Classificatie: Public Publiek Event Sourcing Microservices & Apache Kafka - 24 maart 2021 Events Event Store Current State accountId: 123 amount: 10 Owner: Jane Doe
  • 56. Classificatie: Public Publiek Event Sourcing Microservices & Apache Kafka - 24 maart 2021 Events Event Store Current State Other State Aggregate
  • 57. Classificatie: Public Publiek Event Sourcing • Event Store is immutable – append-only log of domain state transitions • It is the truth about data – everything else is derived • Replay events • to (re)construct a representation of the current state (aggregate) • up to a specific time to recreate moments in time • in Test environment to investigate an issue • on a remote location to create mirror & share state across boundaries • produce a fine grained audit trail • Challenges • Time required to reconstruct state • Grain of aggregates / definition of domain events Microservices & Apache Kafka - 24 maart 2021
  • 58. Classificatie: Public Publiek Retail chain – 1200 stores and one central environment Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D
  • 59. Classificatie: Public Publiek Retail chain – 1200 stores and one central environment Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D • fast • capable of high volume • reliable / transactional • cross technology • not invasive • future proof (and proven) • bi-directional
  • 60. Classificatie: Public Publiek Outbound – from central to 1200 stores Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D
  • 61. Classificatie: Public Publiek Outbound – from central to 1200 stores Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D
  • 62. Classificatie: Public Publiek Retail chain – 1200 stores and one central environment Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D
  • 63. Classificatie: Public Publiek Inbound – from 1200 stores to Central Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D
  • 64. Classificatie: Public Publiek Inbound – from 1200 stores to Central Microservices in real life – with Node & Dapr.io Central Environment (on Azure) Store A Store B Store C Store D
  • 65. Classificatie: Public Publiek Web Portal – Faster, Simpler and more Available Microservices in real life – with Node & Dapr.io Lab Systems Web Portal
  • 66. Classificatie: Public Publiek Web Portal – The Original Situation (2014) Microservices in real life – with Node & Dapr.io Relational Database Service Bus Lab Systems Web Portal SOAP/XML SQL & Stored Procedures
  • 67. Classificatie: Public Publiek Web Portal – Faster, Simpler and more Available (2021) Microservices in real life – with Node & Dapr.io Relational Database Service Bus Lab Systems Web Portal SOAP/XML Kafka Connect Azure Cloud NoSQL Database Kafka REST/JSON Changed Data Capture
  • 68. Classificatie: Public Publiek Apache Kafka is more than the core distributed platform And there is more to distributed event platforms than Kafka • Apache Kafka is surrounded by an ecosystem • Primary supporting company: Confluent • Extensions, Tools, Enterprise Edition • Supporting resources (books, articles, tutorials, conferences) • Partner companies • Managed cloud services • Kafka-compatible Public Cloud offerings • Kafka-like offerings • Competitors, imitators, … Microservices & Apache Kafka - 24 maart 2021
  • 69. Classificatie: Public Publiek Ecosystem – Kafka and Friends • Kafka Schema Registry – manage message schema definitions • Kafka Connect – read data and change events from many sources and/or write to many targets • Also see Debezium • Kafka Streams • Kafka KSQL • Confluent Enterprise • Enterprise Grade Security • Replicator (synch across regions) • Ops (Operations) support • Confluent Managed Kafka Cloud Offering Microservices & Apache Kafka - 24 maart 2021
  • 71. Classificatie: Public Publiek Select Running Count from <stream of tweet events> select tag , count(*) tweet_count from tweets Where tag = 'COVID2019' or tag = 'KAFKA' group by tag Microservices & Apache Kafka - 24 maart 2021 <--- streaming data
  • 72. Classificatie: Public Publiek Topic Continuous Queries on Streaming Data • Count Events, Aggregate Payloads, Filter, Combine & Enrich… • … and produce: new events Microservices & Apache Kafka - 24 maart 2021 Topic Topic Processor Topic Processor Table
  • 73. Classificatie: Public Publiek Alternatives for Apache Kafka’s Distributed Streaming Event Platform • Apache Pulsar • Solace PubSub+ Event Portal • Rabbit MQ • Apache Active MQ • Streaming Data libraries • Apache Spark Streaming, Conduit, Faust, Apache Flink, Apache Storm, Samza, Apache Beam, Apache Flume Microservices & Apache Kafka - 24 maart 2021
  • 74. Classificatie: Public Publiek Managed Kafka (-like) Cloud Offering • Confluent • AWS • SQS • Managed Streaming for Apache Kafka (Amazon MSK) • EventBridge, Kinesis • Azure • Event Hub • EventGrid, Stream Analytics • Oracle Cloud Infrastructure • Streams • Google Cloud Platform • PubSub • DataFlow • … (Heroku Managed Kafka, Alibaba Cloud LogHub, IBM Event Streams,…) Microservices & Apache Kafka - 24 maart 2021 ?
  • 75. Classificatie: Public Publiek Slide from last week: Pub/Sub with Dapr from Node applications Microservices in real life – with Node & Dapr.io sidecar (the personal assistant) Node SDK for Dapr Pub/Sub components publish message components.yaml PubSub Brokers pub/sub interface Node SDK for Dapr components.yaml subscribe on topic with handler function message sent to handler
  • 76. Classificatie: Public Publiek Pub/Sub with Dapr from Node applications Microservices in real life – with Node & Dapr.io sidecar (the personal assistant) Node SDK for Dapr Pub/Sub components publish message components.yaml PubSub Brokers Node SDK for Dapr components.yaml subscribe on topic with handler function message sent to handler pub/sub interface publish message
  • 77. Classificatie: Public Publiek Pub/Sub with Dapr from Node applications Microservices in real life – with Node & Dapr.io sidecar (the personal assistant) Node SDK for Dapr Pub/Sub components publish message ponents.yaml PubSub Brokers Node SDK for Dapr components.yaml pub/sub interface subscribe on topic message sent to handler
  • 78. Classificatie: Public Publiek Pub/Sub with Dapr from Node applications Replace Redis by Apache Kafka Microservices in real life – with Node & Dapr.io sidecar (the personal assistant) Node SDK for Dapr Pub/Sub components publish message to topic components.yaml PubSub Brokers pub/sub interface Node SDK for Dapr components.yaml subscribe on topic with handler function message sent to handler 9094 9093 9092 test-topic
  • 79. Classificatie: Public Publiek Labs on Kafka and Node and Dapr • Programmatically work with Kafka from Node – with and without Dapr • publishing and consuming messages • Implement the CQRS pattern between two microservices • one is master of data, the other has a stand alone replica – to be synchronized • Implement decoupled conversation between multiple microservices – through Kafka Microservices in real life – with Node & Dapr.io Billing Engine CRM Handles assignment on workflow queue to produce a bill for a customer Publish Event to Kafka Topic with question details and conversation identifier Consume Event, handle the question and publish a response with customer details on a second queue – including the conversation identifier questions answers workflow- queue Billing Run Coordinator Create bill processing instructions for customers 1 2 3 4 5 bill
  • 80. Classificatie: Public Publiek Lab – Microservice interaction • Asynchronous conversation between microservices Microservices & Apache Kafka - 24 maart 2021 Billing Engine CRM Handles assignment on workflow queue to produce a bill for a customer Publish Event to Kafka Topic with question details and conversation identifier Consume Event, handle the question and publish a response with customer details on a second queue – including the conversation identifier questions answers workflow-queue Billing Run Coordinator Create bill processing instructions for customers 1 2 3 4 5 bill
  • 81. Classificatie: Public Publiek Summary • => == => • Apache Kafka is emerging as platform of choice for message exchange in a world of • Microservices • Event Sourcing, CQRS and Data Source Synchronization • Clouds • Fast Data (IoT) and Streaming Analysis • Real time data integration & distribution • Getting started with Apache Kafka is not very hard at all • The platform is open source – and has broad client support (Java, Node, …) • Many resources are available – tutorials, blog article, demonstrations, presentation slides and recordings of conference sessions, samples on GitHub • Using Docker Compose it is quite easy to quickly run a Kafka Cluster (and with CloudKarafka even easier) • Note: managing a production grade cluster is not so easy Microservices & Apache Kafka - 24 maart 2021
  • 82. Classificatie: vertrouwelijk Microservices in real life – with Node & Dapr.io you are invited to come do an internship and explore job opportunities with us! lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema

Notas do Editor

  1. Wat is een microservice? (waarom, problemen met monolitische applicaties, hoe microservice architectuur, generieke voorzieningen & platform voor microservices, data & events als glue tussen microservices) Hier alvast stilstaan bij het belang van een event broker en een korte intro van Kafka (meer in college 2) Implementatie van microservices: afhandelen van http requests, consumeren en publiceren van events, doen van http calls:  wat zijn activiteiten die iedere microservice moet uitvoeren? (state mgt, pub/sub, secrets, config mgt, aanroepen 3rd party (cloud) services, ..) Introductie en demo van Dapr.io framework – de personal assistant die iedere applicatie eenvoudig laat aansluiten op generieke voorzieningen én die applicaties (microservices) met elkaar laat interacteren op ontkoppelde wijze; note: ik zal wijzen op de ondersteuning in Dapr.io voor diverse technologieën zoals RabbitMQ, MySQL, Redis Handson met Dapr – meegeleverde applicaties in Java en C# Zelf implementeren van microservice – introductie van NodeJS ; Handson: afbouwen eenvoudige services in NodeJs en via Dapr.io interactie met elkaar en met generieke voorzieningen
  2. https://cwiki.apache.org/confluence/display/KAFKA/Clients
  3. https://cwiki.apache.org/confluence/display/KAFKA/Clients
  4. https://cwiki.apache.org/confluence/display/KAFKA/Clients
  5. Events are immutable facts Current state (active record) is derived from sum of events Read optimized aggregates are created for specific use case – based on events and rebuildable at any time
  6. Events are immutable facts Current state (active record) is derived from sum of events Read optimized aggregates are created for specific use case – based on events and rebuildable at any time