DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Related

  • Bridging Cloud and On-Premises Log Processing
  • A Step-by-Step Guide to Write a System Design Document
  • Unifying SecOps and Observability for Enhanced Cloud Security in Azure
  • Essential Guidelines for Building Optimized ETL Data Pipelines in the Cloud With Azure Data Factory

Trending

  • Rust, WASM, and Edge: Next-Level Performance
  • The Role of AI in Identity and Access Management for Organizations
  • Understanding IEEE 802.11(Wi-Fi) Encryption and Authentication: Write Your Own Custom Packet Sniffer
  • How to Convert XLS to XLSX in Java
  1. DZone
  2. Software Design and Architecture
  3. Cloud Architecture
  4. Hybrid Multi-Cloud Event Mesh Architectural Design

Hybrid Multi-Cloud Event Mesh Architectural Design

Building the event mesh with Camel

By 
Christina Lin user avatar
Christina Lin
DZone Core CORE ·
Apr. 23, 21 · Opinion
Likes (7)
Comment
Save
Tweet
Share
11.8K Views

Join the DZone community and get the full member experience.

Join For Free

Part 1 || Part 2 || Part 3

This blog is part one of my three blogs on how to build a hybrid multi cloud event mesh with Camel. In this part I am going over what inspired me to do the demo, and architecturally how everything is put together. I will be using Red Hat OpenShift (Kubernetes) as the platform for my mesh. And using Kafka as the backbone to stream/persist events and last but not least using Apache Camel (in Red Hat Integration) to weave the mesh across Service Now, Amazon AWS,  Microsoft Azure and Google Cloud Platform.

Why hybrid multi cloud demo and challenges in it? 

The whole reason why I'm doing this is because I'm seeing trends from our customers. More than 50% of the CTO and architect we interview are moving at least part of the workload to either a single cloud or multiple clouds. And not surprisingly most would also have in-house data centers and purchase SaaS services. And it got me thinking, what are the possible ways to bridge and connect everything?  What are the challenges we will face when trying to connect the dots? 

Taking a look specifically from the integration side. As more applications, services and functionality are deployed across geo, data centers and clouds, you will start to see problems arise: 

Service Silo:  Possibly causes could be geo regulation, how the company structure the teams, deployment policies or vendor specific features. Services were NOT effectively reused, simply because it’s hard to get to. Or not even know among different teams. 

Data Integrity: Keeping the data in sync across the multi-cloud can be challenging. Event driven architecture can help by streamlining real-time events simultaneously across multiple clouds, events can be changed from state, request or command. To achieve eventual consistency, and the faster the broader the events gets to, the more real time it can achieve. 

Integration Mess. Having many point to point could lead to disarray of connections. And it will definitely affect how fast to deliver change for your application. As there are no organized and holistic view of where the events are going and the subscriber of the events.



Building an Event Mesh

I propose to avoid your solutions becoming a bowl of spaghetti, is to build an event mesh.

There are many components in the mesh, what you need first is a reliable streaming platform that is able to handle high throughput of events. Here I am using the Kafka platform by Red Hat. In the cluster, we can create topics, each topic is responsible for a particular type of event, for instance, inventory removal request, state of an order or transaction log of an account.  To access these events, you will need a connector, here I am using Camel, that is used to connect the dot and building the event mesh. It's obvious from the diagram above. Having a connector can make your mesh FLEXIBLE! You can easily plug and unplug from the mesh if needed. (Of course you can switch some connectors to Debezium if you need access to the state event in the database or a simple application.) 

Once you have established the foundation of the mesh, it will be the hardest part. Defining the what events that you need in your system. Domain driven design (DDD) can get you started on that. Once you figure out the context of the domain, define the Entities. These entities are where you want to consider as the base of the events. And think about do you need to provide state change of an entity? That could be an event, What about those query requests for an entity? Do I need to combine entities for analytic purposes? In my demo the use case is simple, I have two events, one is the service request I have gathered from ServiceNow and the second one is the result event that I will use to display in Telegram.


Some Serverless workload

Serverless itself is also event driven, and not all the nodes in the mesh needs to be up 24/7. Having to scale down making  the connector standby with 0 running instance, this will optimize the resource allocation on the cloud and lower the cost of running the mesh.I have made some connector nodes serverless. In order to demonstrate that the mesh is not just flexible architecture but also physically and budget friendly. 


The Demo


Demo starts by creating a connector(Camel Quarkus) that collects incident tasks from ServiceNow, while collecting, it filters and transforms the incoming data event into smaller payload for lower ingress/egress cost. The payload is then picked up by other nodes in the mesh and push the events to AWS, Azure and GCP, depending on the request type. For Azure, I am sending the event to both Eventhub(Streaming in Azure) and ServiceBus to trigger an Azure function. On AWS the events are sent to SNS and it will be picked up by a Lambda function. Lastly events are sent via pub/sub and consumed by a Cloud function on Google Cloud Platform. We will be using serverless connectors(Kamelet) to subscribe from each cloud for any result notification. When the result event occurs the serverless function will scale up and return the result back to the Telegram. 

Watch this video for actual demonstration: 


The technology stack that I used to build is pretty simple. OpenShift for the onsite hybrid platform, Red Hat Integration for setting the foundational stream platform - Kafka, and using Apache Camel to build the connectors. 

I will dive into each connector, and also monitoring of the mesh in my upcoming blogs. 



Data event azure Cloud Design

Opinions expressed by DZone contributors are their own.

Related

  • Bridging Cloud and On-Premises Log Processing
  • A Step-by-Step Guide to Write a System Design Document
  • Unifying SecOps and Observability for Enhanced Cloud Security in Azure
  • Essential Guidelines for Building Optimized ETL Data Pipelines in the Cloud With Azure Data Factory

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!