INTEGRATING SYSTEMS INTEGRATING SYSTEMS IN THE AGE OF IN THE AGE - - PowerPoint PPT Presentation

integrating systems integrating systems
SMART_READER_LITE
LIVE PREVIEW

INTEGRATING SYSTEMS INTEGRATING SYSTEMS IN THE AGE OF IN THE AGE - - PowerPoint PPT Presentation

Sponsorslides INTEGRATING SYSTEMS INTEGRATING SYSTEMS IN THE AGE OF IN THE AGE OF QUARKUS, KNATIVE AND KAFKA CONNECT QUARKUS, KNATIVE AND KAFKA CONNECT Peter Palaga @ppalaga The original reveal.js presentation this PDF was created from is


slide-1
SLIDE 1

INTEGRATING SYSTEMS INTEGRATING SYSTEMS

IN THE AGE OF IN THE AGE OF

QUARKUS, KNATIVE AND KAFKA CONNECT QUARKUS, KNATIVE AND KAFKA CONNECT Peter Palaga

Sponsorslides

@ppalaga

slide-2
SLIDE 2

The original reveal.js presentation this PDF was created from is available online: http://ppalaga.github.io/presentations/200108-camel

slide-3
SLIDE 3

PETER PALAGA PETER PALAGA

slide-4
SLIDE 4

PETER PALAGA PETER PALAGA

slide-5
SLIDE 5

PETER PALAGA PETER PALAGA

slide-6
SLIDE 6

PETER PALAGA PETER PALAGA

slide-7
SLIDE 7

PETER PALAGA PETER PALAGA

slide-8
SLIDE 8

AGENDA AGENDA

Apache Camel intro

  • Camel on Quarkus
  • Camel on Knative/Kubernetes
  • Camel on Kafka Connect
slide-9
SLIDE 9

WHAT IS APACHE CAMEL? WHAT IS APACHE CAMEL?

http://camel.apache.org/

slide-10
SLIDE 10

WHAT IS APACHE CAMEL? WHAT IS APACHE CAMEL?

Since 2007 http://camel.apache.org/

slide-11
SLIDE 11

HUGE COMMUNITY HUGE COMMUNITY

Follow (new) on Twitter! ~500 contributors ~3k stars on Github ~3.9k forks on Github ~1k subscribers on the Users mailing list ~9.3k questions on StackOverFlow @ApacheCamel

slide-12
SLIDE 12

Apache Camel is...

AN INTEGRATION LIBRARY AN INTEGRATION LIBRARY

System A System B Data

“Route”

Transport A Transport B

slide-13
SLIDE 13

Apache Camel is based on

ENTERPRISE INTEGRATION PATTERNS (EIP) ENTERPRISE INTEGRATION PATTERNS (EIP)

Content Based Router Message Filter Dynamic Router Recipient List Splitter Aggergator Resequencer Content Enricher Content Filter Normalizer https://www.enterpriseintegrationpatterns.com/

slide-14
SLIDE 14

Apache Camel can...

INTEGRATE ANYTHING INTEGRATE ANYTHING

through its

~300 COMPONENTS ~300 COMPONENTS

slide-15
SLIDE 15
slide-16
SLIDE 16

Filetypes:

Plaintext, XML, HTML, CSV, JSON, ZIP , ...

  • Apache Tika (MS Office,

OpenDocument, ...)

slide-17
SLIDE 17

Filetypes: Protocols:

Plaintext, XML, HTML, CSV, JSON, ZIP , ...

  • Apache Tika (MS Office,

OpenDocument, ...)

  • AMQP

, DNS, FTP , HTTP , IRC, SSH, TCP/UDP , ...

  • REST, GRPC, git, ...
  • IoT: CoAP

, MQTT, PubNub

slide-18
SLIDE 18

Filetypes: Protocols: Public Clouds:

Plaintext, XML, HTML, CSV, JSON, ZIP , ...

  • Apache Tika (MS Office,

OpenDocument, ...)

  • AMQP

, DNS, FTP , HTTP , IRC, SSH, TCP/UDP , ...

  • REST, GRPC, git, ...
  • IoT: CoAP

, MQTT, PubNub

  • AWS: S3, SQS, Kinesis, ...
  • Azure: Blob, Queue, ...
  • Google: BigQuery, PubSub
slide-19
SLIDE 19

Filetypes: Protocols: Public Clouds: Enterprise:

Plaintext, XML, HTML, CSV, JSON, ZIP , ...

  • Apache Tika (MS Office,

OpenDocument, ...)

  • AMQP

, DNS, FTP , HTTP , IRC, SSH, TCP/UDP , ...

  • REST, GRPC, git, ...
  • IoT: CoAP

, MQTT, PubNub

  • AWS: S3, SQS, Kinesis, ...
  • Azure: Blob, Queue, ...
  • Google: BigQuery, PubSub
  • Caches: Hazelcast,

Infinispan, Redis, ...

  • Cassandra, MongoDB,

Kafka

  • JDBC, SQL, JPA, CDI, EJB,

JMS, JMX, OpenTracing, OptaPlanner, Syslog,

slide-20
SLIDE 20

Filetypes: Protocols: Public Clouds: Enterprise: APIs:

Plaintext, XML, HTML, CSV, JSON, ZIP , ...

  • Apache Tika (MS Office,

OpenDocument, ...)

  • AMQP

, DNS, FTP , HTTP , IRC, SSH, TCP/UDP , ...

  • REST, GRPC, git, ...
  • IoT: CoAP

, MQTT, PubNub

  • AWS: S3, SQS, Kinesis, ...
  • Azure: Blob, Queue, ...
  • Google: BigQuery, PubSub
  • Caches: Hazelcast,

Infinispan, Redis, ...

  • Cassandra, MongoDB,

Kafka

  • JDBC, SQL, JPA, CDI, EJB,

JMS, JMX, OpenTracing, OptaPlanner, Syslog,

  • Social: Facebook, Twitter,

LinkedIn

  • Box, Dropbox, Google

Calendar/Drive/Mail/Docs

  • Salesforce, SAP

, ServiceNow, FHIR

  • GitHub, Jira, Telegram
slide-21
SLIDE 21

Filetypes: Protocols: Public Clouds: Enterprise: APIs: Misc:

Plaintext, XML, HTML, CSV, JSON, ZIP , ...

  • Apache Tika (MS Office,

OpenDocument, ...)

  • AMQP

, DNS, FTP , HTTP , IRC, SSH, TCP/UDP , ...

  • REST, GRPC, git, ...
  • IoT: CoAP

, MQTT, PubNub

  • AWS: S3, SQS, Kinesis, ...
  • Azure: Blob, Queue, ...
  • Google: BigQuery, PubSub
  • Caches: Hazelcast,

Infinispan, Redis, ...

  • Cassandra, MongoDB,

Kafka

  • JDBC, SQL, JPA, CDI, EJB,

JMS, JMX, OpenTracing, OptaPlanner, Syslog,

  • Social: Facebook, Twitter,

LinkedIn

  • Box, Dropbox, Google

Calendar/Drive/Mail/Docs

  • Salesforce, SAP

, ServiceNow, FHIR

  • GitHub, Jira, Telegram
  • Barcode
  • Base64, JsonPath,

Freemarker, Groovy, Mustache, Ruby

  • Docker, etcd, Kubernetes,

OpenShift,

slide-22
SLIDE 22

Routes defined via

DOMAIN SPECIFIC LANGUAGES (DSL) DOMAIN SPECIFIC LANGUAGES (DSL)

Java XML Groovy, Scala, Kotlin, ...

class MyCamelRouter extends RouteBuilder { @Override public void configure() throws Exception { from("twitter-search:" + "word1,word2") .log("Got a tweet: ${body}") .to("telegram:bots"); } } <routes xmlns="http://camel.apache.org/schema/sprin <route id="my-route"> <from uri="twitter-search:word1,word2"/> <log message="Got a tweet: ${body}"/> <to uri="telegram:bots"/> </route> </routes>

slide-23
SLIDE 23

Apache Camel is...

RUNNABLE ON RUNNABLE ON

slide-24
SLIDE 24

Apache Camel is...

RUNNABLE ON RUNNABLE ON

Standalone

slide-25
SLIDE 25

Apache Camel is...

RUNNABLE ON RUNNABLE ON

Standalone Spring Boot

slide-26
SLIDE 26

Apache Camel is...

RUNNABLE ON RUNNABLE ON

Standalone Spring Boot

Knative/Kubernetes

connect

slide-27
SLIDE 27

WHY CAMEL ON QUARKUS? WHY CAMEL ON QUARKUS?

Java slow to boot and memory intensive for containers and serverless

slide-28
SLIDE 28

WHAT IS WHAT IS ?

slide-29
SLIDE 29

Supersonic, subatomic Java! An intro

slide-30
SLIDE 30

CAMEL QUARKUS CAMEL QUARKUS

Incubated inside

  • Quarkus

Now

  • https://github.com/apache/camel-quarkus

~50 components as of v1.0.0-M2

  • supported

Available via

  • code.quarkus.io
slide-31
SLIDE 31

CAMEL QUARKUS DEMO CAMEL QUARKUS DEMO

Demo code: github.com/ppalaga/camel-quarkus-cnorris-demo

slide-32
SLIDE 32

CAMEL QUARKUS LINKS CAMEL QUARKUS LINKS

Project starter

  • code.quarkus.io
  • User guide
  • Examples
slide-33
SLIDE 33

CAMEL ON KUBERNETES CAMEL ON KUBERNETES AND KNATIVE AND KNATIVE

slide-34
SLIDE 34

HOW FAST CAN YOU (RE-)DEPLOY HOW FAST CAN YOU (RE-)DEPLOY

ON KUBERNETES? ON KUBERNETES?

slide-35
SLIDE 35
slide-36
SLIDE 36

Web UI for "Citizen integrators" Fast feedback required

slide-37
SLIDE 37

CAMEL K DEMO CAMEL K DEMO

slide-38
SLIDE 38

CAMEL K INTERNALS CAMEL K INTERNALS

kamel client side binary

  • ▪ github.com/apache/camel-k/releases

Camel K Operator

slide-39
SLIDE 39

WHAT IS KUBERNETES WHAT IS KUBERNETES OPERATOR? OPERATOR?

An Application Management concept

  • Does what a human operator would have to do
  • Based on declarative input

slide-40
SLIDE 40

WHAT IS KUBERNETES WHAT IS KUBERNETES OPERATOR? OPERATOR?

An Application Management concept

  • Does what a human operator would have to do
  • Based on declarative input

A pattern

slide-41
SLIDE 41

WHAT IS KUBERNETES WHAT IS KUBERNETES OPERATOR? OPERATOR?

An Application Management concept

  • Does what a human operator would have to do
  • Based on declarative input

A pattern

  • (Ex-)CoreOS
  • Operator Framework
slide-42
SLIDE 42

A Kubernetes Operator

HOW IT WORKS HOW IT WORKS

slide-43
SLIDE 43

A Kubernetes Operator

HOW IT WORKS HOW IT WORKS

A running container

slide-44
SLIDE 44

A Kubernetes Operator

HOW IT WORKS HOW IT WORKS

A running container Monitors the cluster via Kubernetes API

slide-45
SLIDE 45

A Kubernetes Operator

HOW IT WORKS HOW IT WORKS

A running container Monitors the cluster via Kubernetes API

  • Reacts:
  • Add/remove/modify resources

(pods/services/custom CRDs)

Scale up/down

Call endpoints of the running applications

slide-46
SLIDE 46

A Kubernetes Operator

HOW IT WORKS HOW IT WORKS

A running container Monitors the cluster via Kubernetes API

  • Reacts:
  • Add/remove/modify resources

(pods/services/custom CRDs)

Scale up/down

Call endpoints of the running applications

Implements custom logic

slide-47
SLIDE 47

Kubernetes

CUSTOM RESOURCE CUSTOM RESOURCE DEFINITIONS (CRD) DEFINITIONS (CRD)

Built-in resources CRDs pods, services, ...

  • c create,
  • c get,
  • c delete
  • Extend the cluster model
  • c create, oc get,
  • c delete
  • Declarative input for
  • perators
slide-48
SLIDE 48

CAMEL K OPERATOR CAMEL K OPERATOR

from("twitter-search:" + "word1,word2") .log('Got a tweet: ${body}') .to("telegram:bots");

routes.groovy

CRDs Integration Integration Platform

Camel K Operator

Built-in Resources Image ConfigMap Deployment

kamel

~4 seconds for the simplest routes

Integration Kit

slide-49
SLIDE 49

Apache Camel K

IMAGE RESOLUTION (1/2) IMAGE RESOLUTION (1/2)

Collect Maven dependencies based on DSL used (Groovy, XML, Java, Kotlin, JavaScript, YAML)

  • Camel components used in the routes
slide-50
SLIDE 50

Camel K

IMAGE RESOLUTION (2/2) IMAGE RESOLUTION (2/2)

Based on the found dependency set

  • Either take an available Image (buildless deploy)

Or build a new image

slide-51
SLIDE 51

Camel K

IMAGE RESOLUTION (2/2) IMAGE RESOLUTION (2/2)

Based on the found dependency set

  • Either take an available Image (buildless deploy)

Or build a new image

Route definition not a part of the image

  • Mounted to the container as a ConfigMap

slide-52
SLIDE 52

CAMEL ON KNATIVE CAMEL ON KNATIVE

slide-53
SLIDE 53

WHAT IS KNATIVE? WHAT IS KNATIVE?

https://knative.dev

slide-54
SLIDE 54

WHAT IS KNATIVE? WHAT IS KNATIVE?

Building blocks for Serverless applications

  • https://knative.dev
slide-55
SLIDE 55

WHAT IS KNATIVE? WHAT IS KNATIVE?

Building blocks for Serverless applications

  • CRDs and operators
  • https://knative.dev
slide-56
SLIDE 56

WHAT IS KNATIVE? WHAT IS KNATIVE?

Building blocks for Serverless applications

  • CRDs and operators
  • https://knative.dev
slide-57
SLIDE 57

WHAT IS KNATIVE? WHAT IS KNATIVE?

Building blocks for Serverless applications

  • CRDs and operators
  • https://knative.dev
slide-58
SLIDE 58

Camel

KNATIVE SERVING (1/2) KNATIVE SERVING (1/2)

routes.groovy

Integration Service (Knative)

kamel

Camel K Operator

from("knative:/channel/a") .to("http:my-host/path")

On Knative ?

Deployment (Kubernetes)

yes no

slide-59
SLIDE 59

Camel

KNATIVE SERVING (2/2) KNATIVE SERVING (2/2)

No requests → no pods

slide-60
SLIDE 60

Camel

KNATIVE SERVING (2/2) KNATIVE SERVING (2/2)

Pod created upon a request

slide-61
SLIDE 61

Camel

KNATIVE SERVING (2/2) KNATIVE SERVING (2/2)

High load → many pods

slide-62
SLIDE 62

KNATIVE EVENTING KNATIVE EVENTING

https://cloudevents.io

slide-63
SLIDE 63

Camel as

KNATIVE EVENT CONSUMER KNATIVE EVENT CONSUMER

slide-64
SLIDE 64

Camel as

KNATIVE EVENT CONSUMER KNATIVE EVENT CONSUMER

slide-65
SLIDE 65

Camel as

KNATIVE EVENT CONSUMER KNATIVE EVENT CONSUMER

slide-66
SLIDE 66

Camel as

KNATIVE EVENT CONSUMER KNATIVE EVENT CONSUMER

slide-67
SLIDE 67

Camel as

KNATIVE EVENT CONSUMER KNATIVE EVENT CONSUMER

slide-68
SLIDE 68

Camel as

KNATIVE EVENT SOURCE KNATIVE EVENT SOURCE

Knative Event Source

kamel run routes.groovy

slide-69
SLIDE 69

Camel as

KNATIVE EVENT SOURCE KNATIVE EVENT SOURCE

Knative Event Source

kamel run routes.groovy

New: a pure kubectl / oc variant

apiVersion: sources.eventing.knative.dev/v1alpha1 kind: CamelSource metadata: name: bot-source spec: source: flow: from: uri: telegram:bots parameters: authorizationToken: xxx sink: apiVersion: messaging.knative.dev/v1alpha1 kind: InMemoryChannel name: mychannel

slide-70
SLIDE 70

Camel

ROLES IN KNATIVE EVENTING ROLES IN KNATIVE EVENTING

slide-71
SLIDE 71

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

slide-72
SLIDE 72

WHAT IS WHAT IS

APACHE KAFKA? APACHE KAFKA?

A stream-processing platform

  • Distributed, scalable, fault-tolerant, fast
slide-73
SLIDE 73

Apache Kafka offers

SEVERAL API SEVERAL APIs

slide-74
SLIDE 74

Apache Kafka offers

SEVERAL API SEVERAL APIs

Producer API - publish records to topics

slide-75
SLIDE 75

Apache Kafka offers

SEVERAL API SEVERAL APIs

Producer API - publish records to topics

  • Consumer API - subscribe to topics to consume

records

slide-76
SLIDE 76

Apache Kafka offers

SEVERAL API SEVERAL APIs

Producer API - publish records to topics

  • Consumer API - subscribe to topics to consume

records

  • Streams API - act as a stream

processor/transformer

slide-77
SLIDE 77

Apache Kafka offers

SEVERAL API SEVERAL APIs

Producer API - publish records to topics

  • Consumer API - subscribe to topics to consume

records

  • Streams API - act as a stream

processor/transformer

  • Connector API - for streaming data between Apache

Kafka and other systems

slide-78
SLIDE 78
slide-79
SLIDE 79

Apache Kafka

CONNECTOR API CONNECTOR API

a.k.a. Kafka Connect

slide-80
SLIDE 80

Apache Kafka

CONNECTOR API CONNECTOR API

a.k.a. Kafka Connect

A framework to write Connectors

slide-81
SLIDE 81

Apache Kafka

CONNECTOR API CONNECTOR API

a.k.a. Kafka Connect

A framework to write Connectors

  • A runtime to run them
slide-82
SLIDE 82

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

slide-83
SLIDE 83

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

Sink

slide-84
SLIDE 84

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

Sink

  • Source
slide-85
SLIDE 85

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

to exchange data with 300+ Camel components Sink

  • Source
slide-86
SLIDE 86

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

to exchange data with 300+ Camel components with minimal config Sink

  • Source
slide-87
SLIDE 87

CAMEL KAFKA CONNECTOR CAMEL KAFKA CONNECTOR

DEMO DEMO

slide-88
SLIDE 88

WRAP UP WRAP UP

slide-89
SLIDE 89

WRAP UP WRAP UP

Apache Camel - an integration lib with 300+ connectors

slide-90
SLIDE 90

WRAP UP WRAP UP

Apache Camel - an integration lib with 300+ connectors

  • Supersonic subatomic on Quarkus
slide-91
SLIDE 91

WRAP UP WRAP UP

Apache Camel - an integration lib with 300+ connectors

  • Supersonic subatomic on Quarkus
  • Producer/Consumer/Router, scale to zero on Knative
slide-92
SLIDE 92

WRAP UP WRAP UP

Apache Camel - an integration lib with 300+ connectors

  • Supersonic subatomic on Quarkus
  • Producer/Consumer/Router, scale to zero on Knative
  • Streaming data from/to Kafka using Camel Kafka

Connect

slide-93
SLIDE 93

Feedback and contributions are welcome!

  • https://camel.apache.org

Chat:

  • https://gitter.im/apache/camel

Mailing list:

  • dev@camel.apache.org

Follow

  • @ApacheCamel