SlideShare una empresa de Scribd logo
1 de 34
Messaging-as-a-Service
Building a scalable messaging service on Kubernetes
and OpenShift
Ulf Lilleengen
Senior Software Engineer, Red Hat
@lulf
1
2
Outline
● Background
● Messaging as a service
● Platform scalability
● Platform configuration
● Platform CI
● Platform interface
3
● Sending messages
○ Internally in distributed systems
○ Externally between systems
● Communication at the application level
● Messages go from sender/producer to receiver/consumer
○ Asynchronously
○ Time decoupling
What is messaging?
4
Basic features
Request-response Publish-subscribe Competing-consumers
5
Basic features
At most once At least once Exactly once
X X
6
Interoperability
Standards
7
Messaging in the cloud
8
● Freedom of choice
○ On-premise or in the cloud
○ Ability to choose which cloud
○ Open Standards protocols allows users to choose client freely
● Migrating from one to the other can be complex
Cloud provider limitations
9
● Open source cloud messaging running on Kubernetes and OpenShift
● enmasse.io
● github.com/enmasseproject/enmasse
EnMasse
Messaging-as-a-Service
1
0
● Multiple communication patterns: request-response, publish-subscribe and competing
consumers
● Support for store-and-forward and direct messaging mechanisms
● Scale and elasticity of message brokers
● AMQP 1.0 and MQTT support
● Simple setup, management and monitoring
● Multitenancy: manage multiple independent instances
● Deploy on-premise or in the cloud
EnMasse
Features
1
1
● Authentication and authorization
● Service broker API
● HTTP(S)
● Message grouping
● Distributed transactions
● Message ordering
● Multiple flavors
○ Apache Kafka?
● ...
EnMasse
In progress/TODO
1
2
Basic idea
R
R
R
P C
B
B
1
3
Routing vs “Broking”
Broker
Producer Broker Consumer
Send message
Accepted
Send message
Accepted
1
4
Routing vs “Broking”
Router
Producer Router Consumer
Send message
Accepted
Send message
Accepted
1
5
Architecture
1
6
Scaling (routers and brokers)
1
7
Scaling routers
R
R
R
R
A
1
8
Scaling routers (#2)
R
R
R
R
A
Scaling brokers
1
9
a a b b
Router network
Adding brokers
2
0
a a b b
Router network
a
Removing brokers
2
1
a a b b
Router network
a
2
2
Configuration management
2
3
Configuration distribution
2
4
Configuration interface
{
"apiVersion": "v3",
"kind": "Address",
"metadata": {
"name": "myqueue"
},
"spec": {
"store_and_forward": true,
"multicast": false,
"flavor": "vanilla-queue"
}
}
{
"apiVersion": "v3",
"kind": "Flavor",
"metadata": {
"name": "vanilla-queue"
},
"spec": {
"type": "queue",
"Description": "Simple in-memory queue",
"templateName": "queue-inmemory",
"templateParameters": {}
}
}
2
5
Configuration interface
2
6
Continuous integration
Continuous integration
2
7
Component build pipeline
build test
Build docker
image & push
success
failure
trigger
systemtests
2
8
User interface
OpenShift console
2
9
Messaging console
3
0
3
1
Monitoring
3
2
DEMO
3
3
Questions?
MQTT support
3
4
● MQTT gateway
○ Handles connections with remote MQTT clients
○ Bridges MQTT - AMQP protocols
● MQTT lwt
○ Provides the “will testament” feature
○ In charge to recover & send the “will” if client dies

Más contenido relacionado

La actualidad más candente

EMQ Company Deck
EMQ Company DeckEMQ Company Deck
EMQ Company DeckEMQ
 
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014Dominik Obermaier
 
A New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityA New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityNATS
 
MQTT 101 - Getting started with the lightweight IoT Protocol
MQTT 101  - Getting started with the lightweight IoT ProtocolMQTT 101  - Getting started with the lightweight IoT Protocol
MQTT 101 - Getting started with the lightweight IoT ProtocolChristian Götz
 
Service mesh with istio
Service mesh with istioService mesh with istio
Service mesh with istioWisnuPrabowo20
 

La actualidad más candente (6)

EMQ Company Deck
EMQ Company DeckEMQ Company Deck
EMQ Company Deck
 
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
IoT with MQTT and Paho for Webpages - Eclipse Democamp München 2014
 
Mqtt presentation
Mqtt presentationMqtt presentation
Mqtt presentation
 
A New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & ConnectivityA New Way of Thinking | NATS 2.0 & Connectivity
A New Way of Thinking | NATS 2.0 & Connectivity
 
MQTT 101 - Getting started with the lightweight IoT Protocol
MQTT 101  - Getting started with the lightweight IoT ProtocolMQTT 101  - Getting started with the lightweight IoT Protocol
MQTT 101 - Getting started with the lightweight IoT Protocol
 
Service mesh with istio
Service mesh with istioService mesh with istio
Service mesh with istio
 

Similar a Messaging-as-a-Service Rivieradev 2017

Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
Osacon 2021   hello hydrate! from stream to clickhouse with apache pulsar and...Osacon 2021   hello hydrate! from stream to clickhouse with apache pulsar and...
Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...Timothy Spann
 
Orchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQOrchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQVMware Tanzu
 
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de BruinITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de BruinOrtus Solutions, Corp
 
Multi-language/multi-OS communication using RabbitMQ
Multi-language/multi-OS communication using RabbitMQMulti-language/multi-OS communication using RabbitMQ
Multi-language/multi-OS communication using RabbitMQWil de Bruin
 
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ Jitendra Bafna
 
Scenic City Summit (2021): Real-Time Streaming in any and all clouds, hybrid...
Scenic City Summit (2021):  Real-Time Streaming in any and all clouds, hybrid...Scenic City Summit (2021):  Real-Time Streaming in any and all clouds, hybrid...
Scenic City Summit (2021): Real-Time Streaming in any and all clouds, hybrid...Timothy Spann
 
WSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product OverviewWSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product OverviewWSO2
 
CNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyCNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyHarish
 
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...HostedbyConfluent
 
(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the ConferenceTimothy Spann
 
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureNGINX, Inc.
 
Big data conference europe real-time streaming in any and all clouds, hybri...
Big data conference europe   real-time streaming in any and all clouds, hybri...Big data conference europe   real-time streaming in any and all clouds, hybri...
Big data conference europe real-time streaming in any and all clouds, hybri...Timothy Spann
 
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183Robert Nicholson
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric OverviewMichelle Holley
 
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsPortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsTimothy Spann
 
KubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATSKubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATSNATS
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQICS
 
Music city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lakeMusic city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lakeTimothy Spann
 

Similar a Messaging-as-a-Service Rivieradev 2017 (20)

Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
Osacon 2021   hello hydrate! from stream to clickhouse with apache pulsar and...Osacon 2021   hello hydrate! from stream to clickhouse with apache pulsar and...
Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
 
Orchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQOrchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQ
 
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de BruinITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
 
Multi-language/multi-OS communication using RabbitMQ
Multi-language/multi-OS communication using RabbitMQMulti-language/multi-OS communication using RabbitMQ
Multi-language/multi-OS communication using RabbitMQ
 
AMQP with RabbitMQ
AMQP with RabbitMQAMQP with RabbitMQ
AMQP with RabbitMQ
 
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
 
Scenic City Summit (2021): Real-Time Streaming in any and all clouds, hybrid...
Scenic City Summit (2021):  Real-Time Streaming in any and all clouds, hybrid...Scenic City Summit (2021):  Real-Time Streaming in any and all clouds, hybrid...
Scenic City Summit (2021): Real-Time Streaming in any and all clouds, hybrid...
 
WSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product OverviewWSO2 Enterprise Service Bus - Product Overview
WSO2 Enterprise Service Bus - Product Overview
 
CNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyCNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to Envoy
 
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
 
(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference(Current22) Let's Monitor The Conditions at the Conference
(Current22) Let's Monitor The Conditions at the Conference
 
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
 
Big data conference europe real-time streaming in any and all clouds, hybri...
Big data conference europe   real-time streaming in any and all clouds, hybri...Big data conference europe   real-time streaming in any and all clouds, hybri...
Big data conference europe real-time streaming in any and all clouds, hybri...
 
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
 
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsPortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
 
KubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATSKubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATS
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQ
 
Music city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lakeMusic city data Hail Hydrate! from stream to lake
Music city data Hail Hydrate! from stream to lake
 
APIs at the Edge
APIs at the EdgeAPIs at the Edge
APIs at the Edge
 

Último

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
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
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Último (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
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...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

Messaging-as-a-Service Rivieradev 2017

Notas del editor

  1. The purpose of this presentation is twofold Present an open source messaging platform for the cloud Share our experiences building this platform and show how it integrates with OpenShift/Kubernetes Software engineer at Red Hat, working in the messaging team Team is maintaining the messaging middleware products at Red Hat
  2. Starting off with a quick introduction to messaging for those not familiar, and what protocols/products already exists for messaging in the cloud Then introducing the EnMasse open source messaging platform Then moving on to different aspects of the messaging platform Showing how we solved some of the elasticity problems How we configure the platform How we do CI How we think in terms of the platform interface My hope is that this will be useful for more than just people interested in messaging, but also those who are building platforms on top of OpenShift or Kubernetes
  3. Really, messaging is so generic it can sometimes be a bit hard to explain what it is But here is an attempt at least Messaging is sort of a software defined network, in the sense that addresses are defined by the application and not the infrastructure An important part of it is the time decoupling, where you have these intermediaries like a broker
  4. In addition, you typically have different QoS levels, to allow a tradeoff between guarantees and performance You also have more advanced features like distributed transactions, message grouping, but this should give an idea
  5. Messaging components are often focused around the different patterns of communication you can do, and try to create simple ways to facilitate those In addition, you typically have different QoS levels, to allow a tradeoff between guarantees and performance You also have more advanced features like distributed transactions, message grouping, but this should give an idea
  6. In the messaging world, there are many protocols AMQP 1.0 MQTT OpenWire STOMP HTTP ... Standardized APIs JMS The important takeway with standards is not that there has to be one, but that they are open Developer is free to choose library ... … using the preferred programming language Our main focus in the messaging team today is AMQP and MQTT AMQP 1.0 is a fairly new standard that can support messaging both with and without brokers
  7. Exists a lot of cloud messaging solutions today Microsoft is heavy into the enterprise messaging, supporting AMQP AWS has the SQS Google FireBase popular with Android developers
  8. Although these providers work quite well and might be the solution for many companies, there are some limitations The software in the back of these services are not open source Freedom of choosing is lost Moving from one to the other is not trivial
  9. Effort to build an open source messaging platform on Kubernetes and OpenShift Goals is to Scale and performance like just as any cloud provider solution Simple to deploy and manage Support both Kubernetes and OpenShift
  10. Supports the messaging patterns described earlier Store and forward Basically message brokers, storing the message in a queue When you don’t want to wait for consumers Direct Allows communicating directly with another client (or server for that matter) When you don’t need the intermediate queue and want to get response/confirmation from the consumer directly Elastic scaling Want to be able to scale the backend capacity dynamically (and eventually automatically) AMQP and MQTT Open standards already in use by many messaging products MQTT features like “will testament” and “retained messages” over AMQP A higher level of abstraction for management and monitoring, brokers are an implementation detail Multitenancy Multiple address spaces that are managed independently Using OpenShift and Kubernetes allows it to be deployed anywhere
  11. Here is a list of coming features in the project that we are working on, and some of this is already there such as the service broker API We want to support authentication of clients using SASL, bridging to a local or shared keycloak instance Have an implementation of the open service broker API in the address-controller Allows integration with OpenShift Service Catalog A standard way of requesting services We want to support more protocols like HTTP and CoAP, possibly other messaging protocols There are some guarantees such as message ordering that suffer when we scale up brokers The focus so far has been on scalability and performance More important now is features that provide guarantees such as ordering within message groups
  12. A network of AMQP routers (qpid-dispatch) A set of brokers to provide store-and-forward semantics Producers and consumers connect to any of the routers Brokers are hidden from clients, allowing transparent scaling of brokers Message are routed according to address configuration Router network can be scaled from 1 to N Brokers can be scaled from 1 to N
  13. Broker decouples producer and consumer Consumers can retrieve their data at any point (temporal decoupling) Consumers can retrieve their data at their own pace (i.e. could be slower than the producers) Broker persists messages to disk
  14. Router requires consumer being active in order to give “credits” to the producer for sending messages Router requires consumer to accept/reject message before responding to producer Does not persist messages Multiple routers in a network provides path redundancy
  15. Routers and brokers Clients are load balanced across a messaging service Brokers connect to router network Kubernetes integration Messaging - deployment and service for routers Admin - deployment and service with multiple containers managing configuration of brokers Address controller - Deployment, service and Route/Ingress with API for deploying address configuration. Originally part of Admin deployment, but moved out for multitenancy support Implements a standalone REST/HTTP and AMQP API for deploying configuration Implements the Open Service Broker API Myqueue and mytopic, deployments (no service) of messaging brokers handling the same address Created by the address-controller for store-and-forward=true addresses Subscription: deployment + service for durable subscriptions. Messages with a special address are routed to this service Creates subscriptions in the topic brokers mqtt-gateway : deployment + service for MQTT. Mqtt-lwt: deployment for mqtt last-will and testament service
  16. One of the key advantages of running in Kubernetes is that mechanisms for scaling your deployments are already available However, since we are deploying pods that needs to be connected, one does need an additional mechanism for discovering others For routers, we want to connect them in a mesh, to minimize the hops required for a message
  17. The router agent is part of the admin deployment, but is exposed on a designated port in the admin service When a router starts, it creates a connection to the router agent service Not shown in this picture is the connection between the other routers and the router agent.
  18. Once connected to the agent, the agent instructs the router (using AMQP management) to create a connection to all the other routers it knows about With multiple agents, the agents discovers each other by watching for other agent pods
  19. Arrows indicate client connections to the router network Brokers require a bit more care than routers, because they require persistence Today, brokers uses deployments and not stateful sets, so they share persistent volumes This may change in the future, where we might want to support local storage + replication for brokers Queues and topics are handled a bit differently In this diagram, there are 2 brokers handling address ‘a’, and 2 brokers handling address ‘b’ Address ‘a’ is a queue, while ‘b’ is a topic Queues are really simple, because the brokers do not have to know about eachother, the routers will simply handle balance messages across the broker cluster Topics is a harder problem, because subscribers might be spread across multiple brokers, thus requiring a message to go to both brokers The intuitive approach would be for the router to handle this distribution, but this is not yet supported The current approach is that we create a link between these two brokers The topic brokers discover each other by watching pods with labels matching their use
  20. When the broker starts, it simply connects to the router service, and will end up connecting to one of the routers The router looks at the broker id, which matches that of address ‘a’, so it will create a route for messages to go to that broker For topics, the same mechanism is used with a slight variation, so I won’t cover that in detail here For topics, there is an additional container running alongside each broker that discovers the other brokers, and creates a forwarding link for each of the discovered brokers
  21. When scaling brokers down, we use a kubernetes feature called preStop hooks A prestop hook will send a SIGTERM to any of the broker pods, then SIGKILL after grace period The broker pod will _block_ the SIGTERM The preStop hook will execute: kill router link and send messages in the broker queue back into the router network, which will forward them to one of the other brokers Once finished, the preStop hook will instruct the broker to shut down What if the hook is not able to move all messages? The terminationGracePeriod is default 30 seconds, but may be adjusted Why scale down if you have a lot of messages to move? Might complement the hook with another approach where the hook would spin up a pod that handles the migration by spinning up a temporary broker to read the data from disk For topics, need to move durable subscriptions and messages for those subscriptions to one of the other brokers in the cluster Uses a preStop hook as well, but slightly more advanced Does broker discovery Creates queues on one other broker and moves messages to that queue
  22. Configuration management in OpenShift is quite simple, but there are two parts to this The user interface for configuring the platform The mechanism for distributing the configuration
  23. Address configuration is stored in OpenShift as config maps, one per address The address controller acts as the API and writes these config maps Configserv consumes these maps and provides an AMQP interface for configuration data Consumed by router agent, queue scheduler, and subscription service The address controller supports both HTTP/REST, AMQP 1.0 and Service Broker API for deploying address configuration
  24. In the HTTP and AMQP API, address configuration modeled as kubernetes resources Allows for extending as a ThirdPartyResource once API is stable An address can currently have 4 different semantics Queue - standard queue Topic - pub sub Direct anycast - no queue involed, a message is delivered to a single consumer Direct multicast - no queue involved, a message is delivered to all consumers The configuration is currently transformed into an internal config map ( + deployment for queues and topics)
  25. Flavors is a mechansim for queues and topics to be able to select configurations for that queue The available flavors in the system is controlled by the messaging operator Stored as config maps, and only read only in the address controller
  26. When creating a platform today, you need to think CI from the start How will components deal with upgrades How do you build and test your components and to an integration test
  27. We split most of the components across multiple github repositories Each of them runs a build, tests, builds a docker image, and pushes that image to docker hub Runs on travis Systemtests is a repository with java unit tests that runs against EnMasse deployed on OpenShift The openshift instance is created locally within the travis job for each test run This approach is simple, though travis build time limitations may become a problematic limit soon Want to setup a jenkins CI as well
  28. When you create a platform, you typically end up with another role in the system In EnMasse, there is Application Messaging tenant Messaging operator Infrastructure (Kubernetes or OpenShift) operator Going to quickly show a few pictures, and then demo the interface
  29. The standard console in openshift and kubernetes is very low level All deployments and pods are exposed This is good for the messaging operators running the service Not appropriate for messaging tenants
  30. A platform specific UI that hides details from platform users Focus on concepts in the domain of messaging Senders Receivers Connections Queue depths
  31. Same way as for the console, need to provide application level metrics, not just CPU /disk per pod OpenShift has an affinity toward graphana Messaging components expose prometheus or jolokia metrics