SlideShare a Scribd company logo
1 of 23
Download to read offline
Brought to you by
Dejan Bosanac and Henryk Konsek
Eclipse Kapua
Messaging refactoring proposal
Dejan Bosanac
- Messaging rock star
:)
@dejanb
@hekonsek
Henryk Konsek
- engineer at Red Hat
- open source junkie
@hekosek@dejanb
@hekonsek
● Kapua messaging now
● How can we make it better?
● Action plan
This presentation
@dejanb
@hekonsek
Kapua messaging now
@hekonsek@dejanb
@hekonsek
Kapua messaging now
@hekonsek@dejanb
@hekonsek
Kapua messaging now
@hekonsek
- Authentication
- Apache Shiro state
- Connection metrics
- Device lifecycle events
All combined into a single ActiveMQ broker
uber-plugin.
@dejanb
@hekonsek
Implications
@hekonsek
- Kapua can be run on ActiveMQ only, as it relies
on ActiveMQ uber-plugin
- You cannot deploy Kapua services as
microservices (single VM limitation), as Shiro
context is bound to the broker thread
@dejanb
@hekonsek
Why is it bad?
@hekonsek
- Is very challenging to scale Kapua horizontally
- Not everybody has to prefer ActiveMQ as
messaging layer
- Kapua is not PaaS friendly
@dejanb
@hekonsek
Benefits of new approach
@hekonsek
- Kapua running on any AMQP 1.0 compliant messaging
middleware
- Migration to microservices architecture
- Scalability
- First step for Eclipse Hono integration
- Pluggable authentication support
- PaaS-enablement (for example running Kapua in
Kubernetes/OpenShift will be very easy)
@dejanb
@hekonsek
How can we make it
better?
@hekonsek@dejanb
@hekonsek
Warning!
@hekonsek
- Contract of existing MQTT clients (i.e. devices)
should be respected
- Device should not be aware that it talks to “new”
messaging backend
- Backward compatibility FTW!
@dejanb
@hekonsek
Starting point
@hekonsek@dejanb
@hekonsek
Step #1: Extract messaging
@hekonsek
- Extract messaging out of the Kapua JVM
- Messaging provider must support AMQP, may support MQTT
@dejanb
@hekonsek
Authentication
@hekonsek
- It is messaging layer responsibility to perform authentication if needed
- Kapua services should support multiple pluggable strategies to resolve
user/tenant from authenticated message
- Authentication can be optionally delayed and performed on service
level (authentication on message level, not connection level)
@dejanb
@hekonsek
Shiro context binding
@hekonsek
- Services use Camel + Shiro to hold security context
- The same way as Kapua does today, but outside the broker threads
and JVM
@dejanb
@hekonsek
Reference implementation
@hekonsek
- In reference implementation we can use Artemis broker
authentication against KeyCloak (or something else)
@dejanb
@hekonsek
Step #2: Extract metrics into library
@hekonsek
- Extract metrics logic into library
- You can use it on the service (Camel) level or…
- wrap it into msg middleware plugin (for example Artemis plugin)
Step #3: Extract lifecycle into library
@hekonsek
- the same as for metrics library :)
- If you messaging middleware doesn’t allow you to wire library into it
you need to compensate events logic in services layer
Action plan
@hekonsek@dejanb
@hekonsek
How can we do it?
@hekonsek
- I propose to keep existing broker plugin as it is
- Work on the alternative approach in parallel
- At some point just drop old plugin, switch to the
new architecture and celebrate :)
@dejanb
@hekonsek
Any volunteers?
@hekonsek
- Dejan and Henry
- We will handle that. Just give us a green light! ;)
- Any other volunteers are more than welcome!
@dejanb
@hekonsek
Henryk Konsek
@hekonsek
hekonsek@gmail.com
@hekonsek
Thank you!
Dejan Bosanac
@dejanb
dbosanac@redhat.com
@dejanb
@hekonsek

More Related Content

What's hot

SignalR for ASP.NET Developers
SignalR for ASP.NET DevelopersSignalR for ASP.NET Developers
SignalR for ASP.NET Developers
Shivanand Arur
 

What's hot (20)

Manage your APIs and Microservices with an API Gateway
Manage your APIs and Microservices with an API GatewayManage your APIs and Microservices with an API Gateway
Manage your APIs and Microservices with an API Gateway
 
Function Mesh: Complex Streaming Jobs Made Simple - Pulsar Summit NA 2021
Function Mesh: Complex Streaming Jobs Made Simple - Pulsar Summit NA 2021Function Mesh: Complex Streaming Jobs Made Simple - Pulsar Summit NA 2021
Function Mesh: Complex Streaming Jobs Made Simple - Pulsar Summit NA 2021
 
Stream-Native Processing with Pulsar Functions
Stream-Native Processing with Pulsar FunctionsStream-Native Processing with Pulsar Functions
Stream-Native Processing with Pulsar Functions
 
SignalR for ASP.NET Developers
SignalR for ASP.NET DevelopersSignalR for ASP.NET Developers
SignalR for ASP.NET Developers
 
Multi-Clusters Made Easy with Liqo:
Getting Rid of Your Clusters Keeping Them...
Multi-Clusters Made Easy with Liqo:
Getting Rid of Your Clusters Keeping Them...Multi-Clusters Made Easy with Liqo:
Getting Rid of Your Clusters Keeping Them...
Multi-Clusters Made Easy with Liqo:
Getting Rid of Your Clusters Keeping Them...
 
SignalR
SignalRSignalR
SignalR
 
Opening Remarks - Pulsar Virtual Summit Europe 2021
Opening Remarks - Pulsar Virtual Summit Europe 2021Opening Remarks - Pulsar Virtual Summit Europe 2021
Opening Remarks - Pulsar Virtual Summit Europe 2021
 
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
 
API Gateway study
API Gateway studyAPI Gateway study
API Gateway study
 
Building Micro-Services with Scala
Building Micro-Services with ScalaBuilding Micro-Services with Scala
Building Micro-Services with Scala
 
SignalR
SignalRSignalR
SignalR
 
A Look into the Mirror: Patterns and Best Practices for MirrorMaker2 | Cliff ...
A Look into the Mirror: Patterns and Best Practices for MirrorMaker2 | Cliff ...A Look into the Mirror: Patterns and Best Practices for MirrorMaker2 | Cliff ...
A Look into the Mirror: Patterns and Best Practices for MirrorMaker2 | Cliff ...
 
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server PushReal Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
 
Kong API
Kong APIKong API
Kong API
 
Java Microservices with Netflix OSS & Spring
Java Microservices with Netflix OSS & Spring Java Microservices with Netflix OSS & Spring
Java Microservices with Netflix OSS & Spring
 
SignalR with asp.net
SignalR with asp.netSignalR with asp.net
SignalR with asp.net
 
Joint OpenStack Kubernetes Environment (OpenStack Summit)
Joint OpenStack Kubernetes Environment (OpenStack Summit)Joint OpenStack Kubernetes Environment (OpenStack Summit)
Joint OpenStack Kubernetes Environment (OpenStack Summit)
 
WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh?
 
Gatekeeper: API gateway
Gatekeeper: API gatewayGatekeeper: API gateway
Gatekeeper: API gateway
 
Understanding Kafka Produce and Fetch api calls for high throughtput applicat...
Understanding Kafka Produce and Fetch api calls for high throughtput applicat...Understanding Kafka Produce and Fetch api calls for high throughtput applicat...
Understanding Kafka Produce and Fetch api calls for high throughtput applicat...
 

Viewers also liked

Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Dmitry Buzdin
 

Viewers also liked (20)

Open source IoT gateway
Open source IoT gatewayOpen source IoT gateway
Open source IoT gateway
 
Using open source for IoT
Using open source for IoTUsing open source for IoT
Using open source for IoT
 
Fabric8 - Being devOps doesn't suck anymore
Fabric8 - Being devOps doesn't suck anymoreFabric8 - Being devOps doesn't suck anymore
Fabric8 - Being devOps doesn't suck anymore
 
Crash course to the Apache Camel
Crash course to the Apache CamelCrash course to the Apache Camel
Crash course to the Apache Camel
 
(Ultra quick) Rhiot overview
(Ultra quick) Rhiot overview(Ultra quick) Rhiot overview
(Ultra quick) Rhiot overview
 
Internet Of Things for mere mortals
Internet Of Things for mere mortalsInternet Of Things for mere mortals
Internet Of Things for mere mortals
 
Iot and the back-end developers
Iot and the back-end developersIot and the back-end developers
Iot and the back-end developers
 
Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.
 
Iot gateway dream team - Eclipse Kura and Apache Camel
Iot gateway dream team - Eclipse Kura and Apache CamelIot gateway dream team - Eclipse Kura and Apache Camel
Iot gateway dream team - Eclipse Kura and Apache Camel
 
Apache Camel in the belly of the Docker whale
Apache Camel in the belly of the Docker whaleApache Camel in the belly of the Docker whale
Apache Camel in the belly of the Docker whale
 
Eclipse IOT stack over Intel Edison
Eclipse IOT stack over Intel EdisonEclipse IOT stack over Intel Edison
Eclipse IOT stack over Intel Edison
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Presentation
PresentationPresentation
Presentation
 
AD Authenticate All The Things
AD Authenticate All The ThingsAD Authenticate All The Things
AD Authenticate All The Things
 
Openshift v3-a-revolucao-dos-containers-3
Openshift v3-a-revolucao-dos-containers-3Openshift v3-a-revolucao-dos-containers-3
Openshift v3-a-revolucao-dos-containers-3
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
 
Sprint 38 review
Sprint 38 reviewSprint 38 review
Sprint 38 review
 
Microservices with WildFly Swarm - JavaSI 2016
Microservices with WildFly Swarm - JavaSI 2016Microservices with WildFly Swarm - JavaSI 2016
Microservices with WildFly Swarm - JavaSI 2016
 
Writing Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmWriting Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly Swarm
 
WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7
 

Similar to Eclipse Kapua messaging refactoring proposal

XAJA - Reverse AJAX framework
XAJA - Reverse AJAX frameworkXAJA - Reverse AJAX framework
XAJA - Reverse AJAX framework
Sri Prasanna
 

Similar to Eclipse Kapua messaging refactoring proposal (20)

What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?
 
ApacheCon NA - Apache Camel K: connect your Knative serverless applications w...
ApacheCon NA - Apache Camel K: connect your Knative serverless applications w...ApacheCon NA - Apache Camel K: connect your Knative serverless applications w...
ApacheCon NA - Apache Camel K: connect your Knative serverless applications w...
 
vCPE 2.0 – the business case for an open vCPE framework
vCPE 2.0 – the business case for an open vCPE frameworkvCPE 2.0 – the business case for an open vCPE framework
vCPE 2.0 – the business case for an open vCPE framework
 
XAJA - Reverse AJAX framework
XAJA - Reverse AJAX frameworkXAJA - Reverse AJAX framework
XAJA - Reverse AJAX framework
 
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin DunglasINTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
 
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
 
Build Real-Time Streaming ETL Pipelines With Akka Streams, Alpakka And Apache...
Build Real-Time Streaming ETL Pipelines With Akka Streams, Alpakka And Apache...Build Real-Time Streaming ETL Pipelines With Akka Streams, Alpakka And Apache...
Build Real-Time Streaming ETL Pipelines With Akka Streams, Alpakka And Apache...
 
WebSocket Push Fallback - Transcript.pdf
WebSocket Push Fallback - Transcript.pdfWebSocket Push Fallback - Transcript.pdf
WebSocket Push Fallback - Transcript.pdf
 
Develop modern apps using Spring ecosystem at time of BigData
Develop modern apps using Spring ecosystem at time of BigData Develop modern apps using Spring ecosystem at time of BigData
Develop modern apps using Spring ecosystem at time of BigData
 
Enhancing Apache Kafka for Large Scale Real-Time Data Pipeline at Tencent | K...
Enhancing Apache Kafka for Large Scale Real-Time Data Pipeline at Tencent | K...Enhancing Apache Kafka for Large Scale Real-Time Data Pipeline at Tencent | K...
Enhancing Apache Kafka for Large Scale Real-Time Data Pipeline at Tencent | K...
 
Knative goes
 beyond serverless | Alexandre Roman
Knative goes
 beyond serverless | Alexandre RomanKnative goes
 beyond serverless | Alexandre Roman
Knative goes
 beyond serverless | Alexandre Roman
 
Implementing Progressive Delivery with Your Team (by Leigh Capili)
Implementing Progressive Delivery with Your Team (by Leigh Capili)Implementing Progressive Delivery with Your Team (by Leigh Capili)
Implementing Progressive Delivery with Your Team (by Leigh Capili)
 
Function as a Service
Function as a ServiceFunction as a Service
Function as a Service
 
Complex made bearable Clojure conj 2019
Complex made bearable Clojure conj 2019Complex made bearable Clojure conj 2019
Complex made bearable Clojure conj 2019
 
Kafka: Journey from Just Another Software to Being a Critical Part of PayPal ...
Kafka: Journey from Just Another Software to Being a Critical Part of PayPal ...Kafka: Journey from Just Another Software to Being a Critical Part of PayPal ...
Kafka: Journey from Just Another Software to Being a Critical Part of PayPal ...
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
 
Running containerized application in AWS ECS
Running containerized application in AWS ECSRunning containerized application in AWS ECS
Running containerized application in AWS ECS
 
Cloud Computing basic
Cloud Computing basicCloud Computing basic
Cloud Computing basic
 
mu.semte.ch - A journey from TenForce's perspective - SEMANTICS2016
mu.semte.ch - A journey from TenForce's perspective - SEMANTICS2016mu.semte.ch - A journey from TenForce's perspective - SEMANTICS2016
mu.semte.ch - A journey from TenForce's perspective - SEMANTICS2016
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)
 

More from Henryk Konsek (7)

How to cloud #1: Create Kafka cluster with Confluent Cloud
How to cloud #1:  Create Kafka cluster with Confluent CloudHow to cloud #1:  Create Kafka cluster with Confluent Cloud
How to cloud #1: Create Kafka cluster with Confluent Cloud
 
Open source IoT gateway: Tale of Eclipse Kura, Apache Camel and Rhiot
Open source IoT gateway: Tale of Eclipse Kura, Apache Camel and RhiotOpen source IoT gateway: Tale of Eclipse Kura, Apache Camel and Rhiot
Open source IoT gateway: Tale of Eclipse Kura, Apache Camel and Rhiot
 
Internet Of Things for mere mortals
Internet Of Things for mere mortalsInternet Of Things for mere mortals
Internet Of Things for mere mortals
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Messaging with the Docker
Messaging with the DockerMessaging with the Docker
Messaging with the Docker
 
Spring scala - Sneaking Scala into your corporation
Spring scala  - Sneaking Scala into your corporationSpring scala  - Sneaking Scala into your corporation
Spring scala - Sneaking Scala into your corporation
 
Testing Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamTesting Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax Exam
 

Recently uploaded

Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
Muhammad Subhan
 

Recently uploaded (20)

JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistan
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 

Eclipse Kapua messaging refactoring proposal

  • 1. Brought to you by Dejan Bosanac and Henryk Konsek Eclipse Kapua Messaging refactoring proposal
  • 2. Dejan Bosanac - Messaging rock star :) @dejanb @hekonsek
  • 3. Henryk Konsek - engineer at Red Hat - open source junkie @hekosek@dejanb @hekonsek
  • 4. ● Kapua messaging now ● How can we make it better? ● Action plan This presentation @dejanb @hekonsek
  • 7. Kapua messaging now @hekonsek - Authentication - Apache Shiro state - Connection metrics - Device lifecycle events All combined into a single ActiveMQ broker uber-plugin. @dejanb @hekonsek
  • 8. Implications @hekonsek - Kapua can be run on ActiveMQ only, as it relies on ActiveMQ uber-plugin - You cannot deploy Kapua services as microservices (single VM limitation), as Shiro context is bound to the broker thread @dejanb @hekonsek
  • 9. Why is it bad? @hekonsek - Is very challenging to scale Kapua horizontally - Not everybody has to prefer ActiveMQ as messaging layer - Kapua is not PaaS friendly @dejanb @hekonsek
  • 10. Benefits of new approach @hekonsek - Kapua running on any AMQP 1.0 compliant messaging middleware - Migration to microservices architecture - Scalability - First step for Eclipse Hono integration - Pluggable authentication support - PaaS-enablement (for example running Kapua in Kubernetes/OpenShift will be very easy) @dejanb @hekonsek
  • 11. How can we make it better? @hekonsek@dejanb @hekonsek
  • 12. Warning! @hekonsek - Contract of existing MQTT clients (i.e. devices) should be respected - Device should not be aware that it talks to “new” messaging backend - Backward compatibility FTW! @dejanb @hekonsek
  • 14. Step #1: Extract messaging @hekonsek - Extract messaging out of the Kapua JVM - Messaging provider must support AMQP, may support MQTT @dejanb @hekonsek
  • 15. Authentication @hekonsek - It is messaging layer responsibility to perform authentication if needed - Kapua services should support multiple pluggable strategies to resolve user/tenant from authenticated message - Authentication can be optionally delayed and performed on service level (authentication on message level, not connection level) @dejanb @hekonsek
  • 16. Shiro context binding @hekonsek - Services use Camel + Shiro to hold security context - The same way as Kapua does today, but outside the broker threads and JVM @dejanb @hekonsek
  • 17. Reference implementation @hekonsek - In reference implementation we can use Artemis broker authentication against KeyCloak (or something else) @dejanb @hekonsek
  • 18. Step #2: Extract metrics into library @hekonsek - Extract metrics logic into library - You can use it on the service (Camel) level or… - wrap it into msg middleware plugin (for example Artemis plugin)
  • 19. Step #3: Extract lifecycle into library @hekonsek - the same as for metrics library :) - If you messaging middleware doesn’t allow you to wire library into it you need to compensate events logic in services layer
  • 21. How can we do it? @hekonsek - I propose to keep existing broker plugin as it is - Work on the alternative approach in parallel - At some point just drop old plugin, switch to the new architecture and celebrate :) @dejanb @hekonsek
  • 22. Any volunteers? @hekonsek - Dejan and Henry - We will handle that. Just give us a green light! ;) - Any other volunteers are more than welcome! @dejanb @hekonsek
  • 23. Henryk Konsek @hekonsek hekonsek@gmail.com @hekonsek Thank you! Dejan Bosanac @dejanb dbosanac@redhat.com @dejanb @hekonsek