atarazana / eda-workshop

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Event-Driven Architecture Workshop

License Main Lang Languages

Business App Build Status Event Schemas API Build Status Quarkus Streaming Build Status Quarkus Backend Build Status Quarkus Dashboard Build Status

Last Commit Tag Downloads

In the digital transformation strategies of companies, Serverless technologies, Event-Driven Architectures (EDA) and data capture patterns (Change Data Capture) are gaining more strength every day.

Within this scenario, Red Hat OpenShift Serverless, Red Hat AMQ Streams, Red Hat Integration, Red Hat Data Grid, and Red Hat build of Quarkus, offer companies significant cost savings and multiple operational benefits by shifting infrastructure and provisioning responsibilities to the different frameworks. This enables you to solve problems quickly, at scale, and with high availability.

This repository includes a practical business example so that we can adopt modern and agile application designs and implementations (containers, Serverless, streaming, etc.).

The logical architecture diagram of this use case is:

Event-Driven Logical Architecture

At the end of the instructions you will have deployed a full Event-Driven Architecture with the following deployment topology:

Event-Driven Physical Architecture

This file include the list of steps to deploy easily this use case for your learning and testing efforts about these amazing technologies and products.

HINT: If you want to deploy easily, we created a set of shell scripts with all the main commands to deploy the infrastructure, applications and serverless services. Check the shell scripts in the root of this repository.

Prepare OpenShift

This architecture has been tested in Red Hat OpenShift Container Platform 4.12 version and the following operators:

  • Red Hat Integration - AMQ Streams 2.3.0 (Apache Kafka 3.3)
  • Red Hat Integration - Service Registry 2.1.4
  • Red Hat Data Grid 8.3.9
  • Red Hat OpenShift Serverless 1.28.0
  • Prometheus 4.10.0
  • Grafana 4.10.0

As a normal user in your OpenShift cluster, create a eda-workshop namespace:

❯ oc login -u user
❯ oc new-project eda-workshop

This workshop requires deploy many different components and it is needed to have enough resources. This workshop was tested in "OpenShift 4.12 Workshop" Service provided in the Red Hat Product Demo Platform.

Deploy Operators

Follow the instructions

Deploy Metrics Platform

Follow the instructions

Deploy Databases

Follow the instructions

Deploy Streaming Platform

Follow the instructions

Deploy Service Registry

Follow the instructions

Deploy KafkaConnect

Follow the instructions

Deploy DataGrid

Follow the instructions

Deploy Quarkus Business Application

Follow the instructions

Publish Schemas API

Follow the instructions

Deploy Quarkus Streaming Application

Follow the instructions

Deploy Quarkus Backend Application

Follow the instructions

Deploy Quarkus Dashboard Application

Follow the instructions

Deploy Serverless Services

Follow the instructions

Deploy Native Serverless Services

Follow the instructions

Bonus Track - Scripted deployment

There is a set of different shell scripts that allow to deploy easily all the components of this repository avoiding a step-by-step process. The following scripts can help you to deploy this solution in your cluster in few minutes:

  • 01-deploy-infra.sh - Deploy the infrastructure of the solution: Operators, Databases, Kafka and KafkaConnect clusters, Service Registry and Data Grid cluster.

  • 02-load-enterprise-data.sh - Load and initial sequence of data into enterprise database.

  • 05-deploy-apps.sh - Deploy the different applications of the solution: business, streaming, backend, and dashboard.

  • 10-deploy-serverless-services.sh - Deploy the the serverless components of the solution. This script will scale down the previous applications.

  • 12-deploy-serverless-native-services.sh - Deploy the Quarkus Native version of each component updating the previous serverless services created.

  • 98-query-enterprise-data.sh - Summarize some data from the enterprise database.

  • 99-update-regions.sh - Sample script to update the Regions table in the enterprise data base to start the consumption of the data and calculate the values for each region by the data-streaming application.

The order to deploy successfully the solution is:

./01-deploy-infra.sh
./02-load-enterprise-data.sh
./05-deploy-apps.sh

To deploy the serverless version of the solution then you only need to execute:

./10-deploy-serverless-services.sh
./12-deploy-serverless-native-services.sh

About

License:Apache License 2.0


Languages

Language:Java 57.6%Language:TypeScript 19.2%Language:Shell 14.2%Language:JavaScript 5.4%Language:HTML 3.3%Language:Dockerfile 0.2%Language:CSS 0.0%