SlideShare a Scribd company logo
1 of 168
Download to read offline
Apache Camel v3
Camel K
Camel Quarkus
Claus Ibsen
Senior Principal Software Engineer
Red Hat
November 2019
About me
Claus Ibsen
● Senior Principal Software Engineer at Red Hat
● ASF Member & Java Champion
● Apache Camel tech lead
● Author of Camel in Action books
● Based in Denmark
● Blog: https://medium.com/@davsclaus
Agenda
● Integration Evolution
● Apache Camel
● Camel 3
● Camel K
● Serverless
● Camel K & Knative
● Camel Quarkus
● Roadmap
● More Material
Integration
Evolution
Integration 10 years ago
Integration Architectures
Very old SOA/ESB Architecture
Today's ESB Architecture
Apache
Camel
OSGi Framework
Apache
CXF
Apache
ActiveMQ
App App App App
App App App App
App App App App
Deployer Shell Config
Manage Blueprint HTTP
Integration
Core
Application
Apache Karaf
Integration Architectures
Microservice Architecture (MSA 1.0)
Data
store
SaaS
Today's Microservice Architecture (MSA 1.0)
Apache
Camel
Apache Tomcat
Spring
Rest
App
Spring
Framework
Spring Boot
Integration
Core
Application
Spring Boot
Hystrix
Circuit
Breaker
Integration Architectures
Cloud Native Architecture
Camel
App
Integration
Core
Application
Service
Mesh
Pod
Sidecar
Camel
Spring Boot
Spring Boot
Tomcat
Cloud Native Architecture
Camel
App
Integration
Core
Application
Service
Mesh
Pod
Sidecar
Camel Main
Cloud Native Architecture
Camel
App
Integration
Application
Service
Mesh
Pod
Sidecar
Camel
Quarkus
Quarkus
Core
Serverless Architecture
Camel
App
Integration
Core
Application
Knative
Pod
Sidecar
Camel K
K
Apache Camel
What is Apache Camel
● The swiss knife of integration
● 10+ years of development and one
of the most active Apache projects
What is Apache Camel
● Packed with functionality
The giant Swiss knife 😅
What is Apache Camel
● Java based integration framework
● Runtime support: Spring Boot, Apache Karaf / OSGi, JEE / WAR,
Microprofile, Quarkus, Standalone, and more ...
● Based on Enterprise Integration Patterns
● Comes with 300+ components (connectors)
● DSL (Java or XML) to describe integration flow (routes)
● Can integrate everything ... almost everything
● 10+ years of development - still one of the most active Apache projects
● The cornerstone of Red Hat Fuse
System Integration
System A System B?
System Integration
System A System B?
● Different Transports
● Different Data Model
● Asynchronous vs Synchronous
● Failures
● Observability
● ...
Enterprise Integration Patterns
Enterprise Integration Patterns
Integration Framework
System Integration
System A System B?
System Integration
System A System B
Transport A Transport B
?
Camel Routes
from("file:data/inbox")
.to("jms:queue:order");
<route>
<from uri="file:data/inbox"/>
<to uri="jms:queue:order"/>
</route>
Java DSL
XML DSL
Camel Routes with Splitter
Camel Routes with Splitter
from("file:inbox")
Camel Routes with Splitter
from("file:inbox")
.split(body().tokenize("n"))
Camel Routes with Splitter
from("file:inbox")
.split(body().tokenize("n"))
.marshal(customToXml)
Custom data
transformation
Camel Routes with Splitter
from("file:inbox")
.split(body().tokenize("n"))
.marshal(customToXml)
.to("activemq:line");
Camel Architecture
Camel runs everywhere
Application
Servers
Linux
Containers
Runs on popular Java Runtimes
Camel connects everything
Enterprise
Systems
● File
● FTP
● JMS
● AMQP
● JDBC
● SQL
● TCP/UDP
● Mail
● HDFS
● JPA
● MongoDB
● Kafka
● ...
Public Cloud
● AWS
○ S3
○ SQS
○ Kinesis
○ ...
● Google
○ BigQuery
○ PubSub
● Azure
○ Blob
○ Queue
● Box
● Dropbox
● Facebook
● Linkedin
● Salesforce
● SAP
● ServiceNowIoT
● CoAP
● MQTT
● PubNub
SaaS
300+ Components
ahc ahc-ws amqp apns as2 asn1 asterisk atmos atmosphere-websocket atom atomix avro aws aws-xray azure bam barcode base64
beanio beanstalk bean-validator bindy blueprint bonita boon box braintree cache caffeine cassandraql castor cdi chronicle chunk cmis
cm-sms coap cometd consul context corda core-osgi core-xml couchbase couchdb crypto crypto-cms csv cxf cxf-transport
digitalocean disruptor dns docker dozer drill dropbox eclipse ehcache ejb elasticsearch elasticsearch5 elasticsearch-rest elsql etcd
eventadmin exec facebook fastjson fhir flatpack flink fop freemarker ftp ganglia geocoder git github google-bigquery google-calendar
google-drive google-mail google-pubsub google-sheets gora grape groovy groovy-dsl grpc gson guava-eventbus guice hawtdb
hazelcast hbase hdfs hdfs2 headersmap hessian hipchat hl7 http http4 http-common hystrix ibatis ical iec60870 ignite infinispan
influxdb ipfs irc ironmq jackson jacksonxml jasypt javaspace jaxb jbpm jcache jclouds jcr jdbc jetty jetty9 jetty-common jgroups jibx
jing jira jms jmx johnzon jolt josql jpa jsch jsonpath json-validator jt400 juel jxpath kafka kestrel krati kubernetes kura ldap ldif leveldb
linkedin lra lucene lumberjack lzf mail master metrics micrometer milo mina mina2 mllp mongodb mongodb3 mongodb-gridfs mqtt
msv mustache mvel mybatis nagios nats netty netty4 netty4-http netty-http nsq ognl olingo2 olingo4 openshift openstack opentracing
optaplanner paho paxlogging pdf pgevent printer protobuf pubnub quartz quartz2 quickfix rabbitmq reactive-streams reactor restlet
rest-swagger ribbon rmi routebox rss ruby rx rxjava2 salesforce sap-netweaver saxon scala schematron scr script service servicenow
servlet servletlistener shiro sip sjms sjms2 slack smpp snakeyaml snmp soap solr spark spark-rest splunk spring spring-batch
spring-boot spring-cloud spring-cloud-consul spring-cloud-netflix spring-cloud-zookeeper spring-integration spring-javaconfig
spring-ldap spring-redis spring-security spring-ws sql ssh stax stomp stream stringtemplate swagger swagger-java syslog tagsoup
tarfile telegram test test-blueprint test-cdi testcontainers testcontainers-spring test-karaf testng test-spring thrift tika twilio twitter
undertow univocity-parsers urlrewrite velocity vertx weather web3j websocket wordpress xchange xmlbeans xmljson xmlrpc
xmlsecurity xmpp xstream yammer yql zendesk zipfile zipkin zookeeper zookeeper-master
+
+
+
+
+
+
+
+
+
=
Apache Camel 3
Apache Camel 3 - Projects
Camel
Integration Framework
Swiss knife of integration
Apache Camel 3 - Projects
Camel KCamel
Integration Framework
Swiss knife of integration
Lightweight Serverless
Integration Platform
Camel on Kubernetes &
Knative
Apache Camel 3 - Projects
Camel
Quarkus
Camel KCamel
Integration Framework
Swiss knife of integration
Lightweight Serverless
Integration Platform
Camel on Kubernetes &
Knative
Camel extensions
for Quarkus
Optimized JVM & Native
compiled Java (GraalVM)
Apache Camel 3
Camel 3 Goals
● Tidy up APIs & cleanup of technical debt
● Light-weight & modular camel-core
● Reactive Routing Engine
● Camel Main (standalone)
● Fluent Builder Endpoint configuration (Java)
● Backwards compatible (for most end users)
● Java 11 support
● New website
● Camel K
● Camel Quarkus
Camel 3 - Website
● New website and documentation
Camel 3 - Platforms & Runtimes
● Java 8
○ will be dropped later on 3.x
● Java 11
○ first version to support
● GraalVM
○ camel-quarkus sub-project
● Spring Boot 2.x
● Standalone (camel-main)
● Apache Karaf (OSGi)
● WAR / JEE
● Eclipse Microprofile
Camel 3 - Modularized
● Modularized camel-core
camel-core
( Camel 2.x)
camel-api camel-core-osgi camel-management-api
camel-base camel-core-xml camel-management-impl
camel-caffeine-lrucache camel-endpointdsl camel-support
camel-cloud camel-headersmap camel-util
camel-core camel-jaxp camel-util-json
camel-core-engine camel-main
Camel 3 - Modularized
● Modularized camel-core components
camel-core
( Camel 2.x)
camel-bean camel-log camel-stub
camel-browse camel-mock camel-timer
camel-controlbus camel-properties camel-validator
camel-dataformat camel-ref camel-vm
camel-direct camel-rest camel-xpath
camel-directvm camel-saga camel-xslt
camel-file camel-scheduler camel-zip-deflater
camel-language camel-seda
Camel 3 - Modularized
● camel-core vs camel-core-engine
camel-core
(Camel 3.x)
camel-core-engine
(Camel 3.x)
Includes 33 Camel JARs
(core & core components)
(similar to camel-core 2.x)
Includes 12 Camel JARs
(core only functionality)
Camel 3 - Optimized
● Faster startup and lower footprint
○ Smaller core & less classes loaded etc
● Optimized camel-core
○ Many smaller optimizations
examples/camel-example-console
Camel 2.x: 5179 classes loaded (5.3 mb camel JARs)
Camel 3.x: 4286 classes loaded (3.9 mb camel JARs)
Camel 3 - Optimized
● Source code generated invocation (no Java reflection)
○ Type Converters
○ Route configuration
○ Endpoint configuration
○ Component configuration
● Build & Init lifecycle phase
○ Prepare before start (eg Quarkus build time preparation)
● JMX management optional
Camel 3 - Endpoint DSL
● Endpoint DSL
○ Type Safe
○ Java Fluent Builder style
Camel 3 - Reactive
● Reactive Core
○ All EIPs now fully reactive
○ Blocking vs Non-Blocking code-paths merged into one (Non-Blocking)
● Postponed for Camel 3.x
○ Backpressure
○ Client API
○ Java 9+ Flowable API (requires to drop Java 8)
Camel 3 - Camel Main
● Standalone Camel
○ Bootstrap for Camel K & Camel Quarkus
○ Unified configuration (also for Camel Spring Boot)
● Configurable
○ application.properties (ala Spring Boot)
● Tooling Support
○ Eclipse
○ Eclipse Che
○ VSCode
○ IDEA
Camel 3 - Microprofile
● Eclipse Microprofile Integration
○ Configuration
○ Metrics
○ Health Checks
○ Fault Tolerance (in progress)
○ Reactive Messaging (3rd party)
■ https://smallrye.io/smallrye-reactive-messaging/#_integrating_with_apache_camel
Camel 3 - Other
● JUnit 5 support
○ camel-test-junit5
● Step EIP
○ Group together N+ EIPs (logical name)
○ Grouped performance statistics
● Lazy start producer
○ Avoid Camel to fail on startup if producer fails to start
(typically connecting to remote system)
● Writeable Registry
○ Easier to add your own beans
● Route Model more extensible
○ YAML route builder (Camel K)
19/12/2018
Master switched
to camel 3
02/2019
M1
❏ New Camel API
❏ Move components
out of camel core
❏ Extract basic
classes in a support
JAR
❏ Reactive Routing
Engine
❏ Faster releases
❏ Quarkus Support
for a subset of
components
❏ Writeable registry
❏ Step EIP
❏ Faster build
❏ Reactive Routing
Engine improved
❏ Java 11 support
improved
❏ EIP at scale
❏ More Quarkus
support
Final
Release
04/2019
M2
06/2019
M3
07/2019
M4
❏ Auto-generate
Endpoint DSL
❏ Camel-core-engine
❏ Camel-main
improved
❏ Website and docs
almost done
09/2019
RC1
❏ Renaming
components
❏ New website live
❏ Stabilizing
❏ Reduce footprint
Camel 3 - Timeline
10/2019
RC2 RC3
12/2019
GA
5700+ commits (Camel 3.x)
Camel K
A lightweight integration platform, based on Apache Camel,
born on Kubernetes, with serverless superpowers.
What is Apache Camel K ?
A lightweight integration platform, based on Apache Camel,
born on Kubernetes, with serverless superpowers.
What is Apache Camel K ?
Runs on “vanilla” Kubernetes (1) ...
K
1.
A lightweight integration platform, based on Apache Camel,
born on Kubernetes, with serverless superpowers.
What is Apache Camel K ?
Runs on “vanilla” Kubernetes (1), Openshift (2) ...
K
1.
K
2.
A lightweight integration platform, based on Apache Camel,
born on Kubernetes, with serverless superpowers.
What is Apache Camel K ?
Runs on “vanilla” Kubernetes (1), Openshift (2) and gives its best on a Knative-powered cluster (3)!
K
1.
K
2.
K
3.
How?
How?
from(“telegram:bots/bot-id”)
.transform()...
.to(“kafka:topic”);
from(“kafka:topic”)
.to(“http:my-host/api/path”);
1. Create a integration file (Java, Groovy, Kotlin, JS, XML…)
Camel DSL, based on
EIPs...
How?
from(“telegram:bots/bot-id”)
.transform()...
.to(“kafka:topic”);
from(“kafka:topic”)
.to(“http:my-host/api/path”);
1. Create a integration file (Java, Groovy, Kotlin, JS, XML…)
Camel DSL, based on
EIPs...
$ kamel run integration.groovy
2. Run it
How?
from(“telegram:bots/bot-id”)
.transform()...
.to(“kafka:topic”);
from(“kafka:topic”)
.to(“http:my-host/api/path”);
1. Create a integration file (Java, Groovy, Kotlin, JS, XML…)
Camel DSL, based on
EIPs...
3. Runs on Openshift or
Kubernetes
$ kamel run integration.groovy
2. Run it
Architecture of Camel K
Dev Environment Remote Cloud
kamel CLI
Camel K
Operator
“Integration”
Custom
Resource
Running Pod
Live updates!
Fast redeploy!
Less than 1 second!
Tailored for cloud-native development experience
Fast Deployment of Camel K
Time to run a integration using different strategies (in seconds)
Lower is better
😃
F-m-p is the “fabric8-maven-plugin”
(http://maven.fabric8.io/) deploying a
average spring-boot based
integration on Minishift vs. a remote
OpenShift cluster (accounting time to
upload the fat Jar). Source S2I build
has been measured in Red Hat Fuse
Online.
Camel K on OperatorHub
Quick Camel K Demo
https://www.youtube.com/watch?v=I-g2xt-Qcb8
Camel K Chuck Demo
Routes.
java
Telegram Camel K
Serverless
What is serverless?
“Serverless computing refers to the concept of building and running applications
that don’t require server management. It describes a finer-grained deployment
model where applications, bundled as one or more functions, are uploaded to a
platform and executed, scaled, billed in response to the exact demand needed”
https://github.com/cncf/wg-serverless
Serverless personas:
● Developer: writes code for, and benefits from the serverless platform.
● Provider: manages the serverless platform.
What is serverless?
“Serverless computing refers to the concept of building and running applications that
don’t require server management. It describes a finer-grained deployment model
where applications, bundled as one or more functions, are uploaded to a platform and
executed, scaled, billed in response to the exact demand needed”
https://github.com/cncf/wg-serverless
Serverless personas:
● Developer: writes code for, and benefits from the serverless platform.
● Provider: manages the serverless platform.
Serverless (Compute)
Here’s my personal definition of “serverless”.
Before it becomes a billing model, we need to define it “technically”.
Serverless is a programming model based on:
Serverless (Compute)
Here’s my personal definition of “serverless”.
Before it becomes a billing model, we need to define it “technically”.
Serverless is a programming model based on:
...
1) Auto-scaling services/functions
(including scaling to zero)
2) Event-driven execution
Serverless (Compute)
Here’s my personal definition of “serverless”.
Before it becomes a billing model, we need to define it “technically”.
Serverless is a programming model based on:
...
1) Auto-scaling services/functions
(including scaling to zero)
Serverless requirements
For the platform
● Scaling to zero
● Rapid scaling up and down
● Eventing mechanism
● Routing and networking
For the application runtime
● Fast startup
● Fast first response
● Low on memory and CPU
● Small size on disk
Serverless requirements
For the platform
● Scaling to zero
● Rapid scaling up and down
● Eventing mechanism
● Routing and networking
For the application runtime
● Fast startup
● Fast first response
● Low on memory and CPU
● Small size on disk
K
Camel K
&
Knative
What is Knative ?
Build
A pluggable model for
building artifacts, like jar
files, zips or containers
from source code.
Knative Overview - Components
Serving
An event-driven model
that serves the container
with your application and
can "scale to zero".
Eventing
Common infrastructure for
consuming and producing
events that will stimulate
applications.
Kubernetes-based platform to build, deploy, and manage modern serverless workloads
What about Camel K & Knative ?
K
Camel K and Knative
<<custom-resource>>
Build
Knative components relevance to Camel
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Build
<<custom-resource>>
Service
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Serving
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Eventing
Standardize building
container images
Auto-scaling and scale-to-zero Messaging for event-based
applications
<<custom-resource>>
Channel
Camel K and Knative
<<custom-resource>>
Build
Knative components relevance to Camel
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Build
<<custom-resource>>
Service
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Serving
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Eventing
Standardize building
container images
Auto-scaling and scale-to-zero Messaging for event-based
applications
<<custom-resource>>
Channel
XNo longer included in
Knative
Use external projects
such as Tekton
Camel K and Knative
<<custom-resource>>
Build
Knative components relevance to Camel
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Build
<<custom-resource>>
Service
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Serving
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Eventing
Standardize building
container images
Auto-scaling and scale-to-zero Messaging for event-based
applications
<<custom-resource>>
Channel
X
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Request
Camel K and Knative Serving
Kubernetes Namespace
A container is created only when needed!
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Request Pod
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Request Pod
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Request Pod
Camel K and Knative Serving
Kubernetes Namespace
Scale to zero when no load
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Multiple containers under high load!
Request Pod
Request
Request
Pod
Pod
Camel K and Knative Serving
Kubernetes Namespace
rest().post(“/path”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Scale to zero when no load
Camel K and Knative
<<custom-resource>>
Build
Knative components relevance to Camel
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Build
<<custom-resource>>
Service
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Serving
<<custom-resource>>
...<<custom-resource>>
...<<custom-resource>>
...
Knative Eventing
Standardize building
container images
Auto-scaling and scale-to-zero Messaging for event-based
applications
<<custom-resource>>
Channel
X
Kubernetes Namespace
Camel K and Knative Eventing
300+ components!
System 1
System 2
Channel a
Persisted by
Kafka, in-memory
(pluggable)
Kubernetes Namespace
Camel K and Knative Eventing
from(“knative:channel/a”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Knative
Subscription
Channel a
Kubernetes Namespace
Camel K and Knative Eventing
from(“knative:channel/a”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Knative
Subscription
Cloud Event
https://cloudevents.io/
Channel a
Kubernetes Namespace
Camel K and Knative Eventing
from(“knative:channel/a”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Knative
Subscription
PodCloud Event
https://cloudevents.io/
Channel a
Kubernetes Namespace
Camel K and Knative Eventing
from(“knative:channel/a”)
.to(“xx:system1”)
.to(“xx:system2”)
300+ components!
System 1
System 2
Knative
Service
Knative
Subscription
PodCloud Event
https://cloudevents.io/
Channel a
Camel K: same model for different purposes
Camel K and Knative Eventing
Channel
Channel
Channel
Ext
System
Camel K: same model for different purposes
Camel K and Knative Eventing
Channel
Channel
Channel
Ext
System
Event
Source
(Sink)
300+ components!
Camel K: same model for different purposes
Camel K and Knative Eventing
Channel
Channel
Channel
Ext
System
Event
Source
(Sink)
Enterprise
Integration
Patterns
(Routing)
300+ components!
65+ patterns
Camel K: same model for different purposes
Camel K and Knative Eventing
Channel
Channel
Channel
Ext
System
Event
Source
(Sink)
Enterprise
Integration
Patterns
(Routing)
Function
(Integration)
300+ components!
300+ components!
65+ patterns
Knative Eventing includes Camel
Standard Knative
Sources
That can be used
without any knowledge
of Camel K!
... but Camel K is under the
hood :)
Apache Camel K on CNCF
https://camel.apache.org/blog/CamelK-CNCF-Landscape/
Camel K &
Knative
DEMO
Camel K and Knative Demo
Legacy to Telegram
Legacy Telegram
Camel K and Knative Demo
Camel K and Knative Demo
legacy.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
Camel K and Knative Demo
legacy.
groovy
channel/in
process.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Quarkus is now supported out of the box with
Camel K since this demo was created
(no longer needed to build your own kit)
https://camel.apache.org/camel-k/latest/traits/quarkus.html
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo
legacy.
groovy
channel/in
channel/out
channel/null
process.
groovy
quarkus.
yaml
telegram.
groovy
Camel K and Knative Demo (Video)
Camel
Quarkus
Characteristic Monolithic/SOA Microservies/CNA Functions/Serverless
Packaging Ear/War/Jar Fat-jar Native executable
Startup procedure XML scanning Annotation scanning Instant (ahead-of-time compilation)
Memory/binary size 1000s MBs 100s MBs 10s of MBs
Startup/first response Minutes Seconds Milliseconds
Process lifecycle Long running Managed by platform Ephemeral (executed per request)
State (app/user) Stateful Stateless (no user state) Ephemeral (no application state)
Data ownership Shared data model Owns data No data ownership
Operations Multiple unrelated operations Multiple domain operations Single event driven operation
Scope Multiple business domains Single business domain Single task
Motivation Non-scalable, high complexity
domains
Portable, autonomous,
scalable workloads
Rapid productivity, at the expense
of control and portability
Application trends (Java)
Platform trends (Kubernetes)
Java Density Problem
CONTAINER ORCHESTRATION
Node Node Node
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
https://developers.redhat.com/blog/2017/03/14/java-inside-docker/
SCALE-UP SCALE-DOWN SCALE-TO-
ZERO
Java Fast Scaling Problem
What is Quarkus ?
What is Quarkus ?
Supersonic Subatomic Java
What is Quarkus ?
Supersonic Subatomic Java
A Kubernetes Native Java stack tailored for GraalVM &
OpenJDK HotSpot, crafted from the best of breed Java libraries
and standards
Minimal Footprint
Camel Quarkus
DEMO
Apache Camel and Quarkus runs blazingly fast with native compiled binaries.
Startup is 10 msec, 32mb binary file, and 13mb RSS memory used.
Observabilty Example
● Microprofile Health
● Microprofile Monitoring
● Random delay 1s to 5s
Jaeger UI
Roadmap
Camel K - Roadmap
● Support for Camel 3 (Now RC3, GA in Nov/Dec 2019)
○ Lightweight modules to reduce footprint
○ Webhook meta-component (more components that
can scale down to 0)
○ Camel K 1.0.0-M3 supports Camel 3.0.0-RC1
● Quarkus as integration runtime
○ Reduced footprint and cold start-up time
○ Native image build in parallel swapped with JVM
image during auto-scaling once ready
● Knative 1.0 → Camel K 1.0.0
● Support the Broker / Trigger model
● Support Tekton builds
● Push-based endpoints
● Fully integrated with Syndesis / Fuse Online
● Better IDE support
● Better integration with CI tools
● BDD testing
● Operator Capability Level 3+
Camel Quarkus - Roadmap
● Camel Extensions on http://code.quarkus.io
● Port more Camel components as Extensions
(22 done out of 300)
● More build time optimisations
● Reduce startup overhead
● Quarkus 1.0 → Camel Quarkus 1.0.0
● Better IDE support
Camel Kafka Connector
● A kafka connector source and sink implementation that embeds camel.
● It is configurable to use most of the camel-components.
● Making it able to talk with 300+ different kind of external systems.
300+ components!
Camel Debezium
● Stream changes from databases to Camel
● camel-debezium component in Camel 3
○ MySQL connector
○ Other databases on the way ...
Debezium
https://www.youtube.com/watch?time_continue=12&v=xLXx8bUyTtk
Knative
Camel Sources
&
Syndesis
300+ components!
CamelTwitterSource
CamelFacebookSource
CamelTelegramSource
CamelServiceNowSource
Camel components...
“Cloud Edition”
Knative Camel Sources
...
Knative Camel Sources
Camel Sources are an addon to Knative, currently in
Knative eventing-contrib
It translates Camel-based Knative eventing sources
into Camel K integrations
https://github.com/knative/eventing-contrib/tree/master/camel/source
apiVersion: sources.eventing.knative.dev/v1alpha1
kind: CamelSource
metadata:
name: camel-timer-flow-source
spec:
source:
flow: |
from:
uri: timer:tick?period=3s
steps:
- set-body:
constant: Hello world!
sink:
apiVersion: eventing.knative.dev/v1alpha1
kind: Channel
name: camel-test
kind: Integration
apiVersion: camel.apache.org/v1alpha1
metadata:
name: my-integration
spec:
source:
- content: |
- from:
uri: timer:tick?period=3s
steps:
- set-body:
constant: Hello world!
- to:
uri: knative://endpoint/sink
language: yaml
name: flow.yaml
traits:
knative:
configuration:
configuration:
'{"services":[{"type":"endpoint","protocol":"h
ttp","name":"sink","host":"camel-test-channel-
4dlgs.camel-k.svc.cluster.local","port":80,"me
tadata":{"service.path":"/"}}]}'
Camel Sources
Operator
YourOwnSource
from("timer:tick?period={{period}}")
.to("xx:my-system")
.unmarshal().json()
.transform("custom")
.to("knative:endpoint/sink")
A Dev writes Camel K code Users can instantiate the
source to do their job
Knative Camel Sources
Serverless Integration Repository
Camel
Source
Camel
Source
Camel
Source
Camel
Source
Camel
Source
Camel
Source
Integration
function
Integration
Integration
function
Integration
apiVersion: sources.eventing.knative.dev/v1alpha1
kind: CamelSource
metadata:
name: camel-timer-flow-source
spec:
source:
flow: |
from:
uri: timer:tick?period=3s
steps:
- set-body:
constant: Hello world!
sink:
apiVersion: eventing.knative.dev/v1alpha1
kind: Channel
name: camel-test
Serverless Integration
Microservices Microservices Microservices External SaaS
External SaaS
External SaaS
External SaaS
Integration
function
Integration
function
Integration
function
Integration
function
Integration
function
KNative
Service
Service
Service
Service
Microservices Microservices
function
More Material
More Material
● Apache Camel K
https://github.com/apache/camel-k
● Apache Camel Quarkus
https://github.com/apache/camel-quarkus
● Quick Camel K demo
https://www.youtube.com/watch?v=I-g2xt-Qcb8
● Camel K Introduction Blog
https://www.nicolaferraro.me/2018/10/15/introducing-camel-k
● Kubernetes enterprise integration patterns with Camel K webinar
https://www.youtube.com/watch?v=51x9BewGCYA
● Camel K and Knative video
https://www.youtube.com/watch?v=lOqubmVSGdw
Books
Any Questions ?
Follow us on Twitter
@davsclaus
@ApacheCamel
https://github.com/apache/camel
A star on github is appreciated

More Related Content

What's hot

Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorApache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorDatabricks
 
Discover Quarkus and GraalVM
Discover Quarkus and GraalVMDiscover Quarkus and GraalVM
Discover Quarkus and GraalVMRomain Schlick
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache CamelClaus Ibsen
 
Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!Krishna-Kumar
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explainedconfluent
 
Integrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelIntegrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelClaus Ibsen
 
Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaSyah Dwi Prihatmoko
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversScyllaDB
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusGrafana Labs
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesAlexei Ledenev
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Claus Ibsen
 
OpenTelemetry For Developers
OpenTelemetry For DevelopersOpenTelemetry For Developers
OpenTelemetry For DevelopersKevin Brockhoff
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeMartin Schütte
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...LibbySchulze
 
Introducing AWS Elastic Beanstalk
Introducing AWS Elastic BeanstalkIntroducing AWS Elastic Beanstalk
Introducing AWS Elastic BeanstalkAmazon Web Services
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentFlink Forward
 

What's hot (20)

Ansible - Hands on Training
Ansible - Hands on TrainingAnsible - Hands on Training
Ansible - Hands on Training
 
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorApache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
 
Discover Quarkus and GraalVM
Discover Quarkus and GraalVMDiscover Quarkus and GraalVM
Discover Quarkus and GraalVM
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
 
Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
 
Integrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelIntegrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and Camel
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
 
Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and Grafana
 
Apache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the CoversApache Iceberg: An Architectural Look Under the Covers
Apache Iceberg: An Architectural Look Under the Covers
 
Yaml
YamlYaml
Yaml
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2
 
OpenTelemetry For Developers
OpenTelemetry For DevelopersOpenTelemetry For Developers
OpenTelemetry For Developers
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...
 
Prometheus monitoring
Prometheus monitoringPrometheus monitoring
Prometheus monitoring
 
Introducing AWS Elastic Beanstalk
Introducing AWS Elastic BeanstalkIntroducing AWS Elastic Beanstalk
Introducing AWS Elastic Beanstalk
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production Deployment
 

Similar to Apache Camel v3, Camel K and Camel Quarkus

State of integration with Apache Camel (ApacheCon 2019)
State of integration with Apache Camel (ApacheCon 2019)State of integration with Apache Camel (ApacheCon 2019)
State of integration with Apache Camel (ApacheCon 2019)Claus Ibsen
 
Apache Camel K - Fredericia
Apache Camel K - FredericiaApache Camel K - Fredericia
Apache Camel K - FredericiaClaus Ibsen
 
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationSouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationClaus Ibsen
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
 
DevNation Live 2020 - What's new with Apache Camel 3
DevNation Live 2020 - What's new with Apache Camel 3DevNation Live 2020 - What's new with Apache Camel 3
DevNation Live 2020 - What's new with Apache Camel 3Claus Ibsen
 
What's new with Apache Camel 3? | DevNation Tech Talk
What's new with Apache Camel 3? | DevNation Tech TalkWhat's new with Apache Camel 3? | DevNation Tech Talk
What's new with Apache Camel 3? | DevNation Tech TalkRed Hat Developers
 
apachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfapachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfssuserbb9f511
 
Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...
Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...
Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...HostedbyConfluent
 
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Claus Ibsen
 
Flying Server-less on the Cloud with AWS Lambda
Flying Server-less on the Cloud with AWS LambdaFlying Server-less on the Cloud with AWS Lambda
Flying Server-less on the Cloud with AWS LambdaSerkan Özal
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersBurr Sutter
 
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...Nicola Ferraro
 
(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data Platform(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data PlatformAmazon Web Services
 
Running Presto and Spark on the Netflix Big Data Platform
Running Presto and Spark on the Netflix Big Data PlatformRunning Presto and Spark on the Netflix Big Data Platform
Running Presto and Spark on the Netflix Big Data PlatformEva Tse
 
Integrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesIntegrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesClaus Ibsen
 
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS Riyadh User Group
 
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMRAmazon Web Services
 

Similar to Apache Camel v3, Camel K and Camel Quarkus (20)

State of integration with Apache Camel (ApacheCon 2019)
State of integration with Apache Camel (ApacheCon 2019)State of integration with Apache Camel (ApacheCon 2019)
State of integration with Apache Camel (ApacheCon 2019)
 
Apache Camel K - Fredericia
Apache Camel K - FredericiaApache Camel K - Fredericia
Apache Camel K - Fredericia
 
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationSouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...
 
DevNation Live 2020 - What's new with Apache Camel 3
DevNation Live 2020 - What's new with Apache Camel 3DevNation Live 2020 - What's new with Apache Camel 3
DevNation Live 2020 - What's new with Apache Camel 3
 
What's new with Apache Camel 3? | DevNation Tech Talk
What's new with Apache Camel 3? | DevNation Tech TalkWhat's new with Apache Camel 3? | DevNation Tech Talk
What's new with Apache Camel 3? | DevNation Tech Talk
 
apachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfapachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdf
 
Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...
Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...
Camel Kafka Connectors: Tune Kafka to “Speak” with (Almost) Everything (Andre...
 
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
 
Flying Server-less on the Cloud with AWS Lambda
Flying Server-less on the Cloud with AWS LambdaFlying Server-less on the Cloud with AWS Lambda
Flying Server-less on the Cloud with AWS Lambda
 
Camel_From_The_Field
Camel_From_The_FieldCamel_From_The_Field
Camel_From_The_Field
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java Developers
 
OpenCms Days 2013 - OpenCms Cloud eXtensions
OpenCms Days 2013 - OpenCms Cloud eXtensionsOpenCms Days 2013 - OpenCms Cloud eXtensions
OpenCms Days 2013 - OpenCms Cloud eXtensions
 
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...
 
(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data Platform(BDT303) Running Spark and Presto on the Netflix Big Data Platform
(BDT303) Running Spark and Presto on the Netflix Big Data Platform
 
Running Presto and Spark on the Netflix Big Data Platform
Running Presto and Spark on the Netflix Big Data PlatformRunning Presto and Spark on the Netflix Big Data Platform
Running Presto and Spark on the Netflix Big Data Platform
 
Integrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesIntegrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetes
 
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
 
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR
(SEC403) Diving into AWS CloudTrail Events w/ Apache Spark on EMR
 
Camel Riders in the Cloud
Camel Riders in the CloudCamel Riders in the Cloud
Camel Riders in the Cloud
 

More from Claus Ibsen

Low Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdfLow Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdfClaus Ibsen
 
Camel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdfCamel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdfClaus Ibsen
 
Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Claus Ibsen
 
Serverless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesServerless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesClaus Ibsen
 
JEEConf 2018 - Camel microservices with Spring Boot and Kubernetes
JEEConf 2018 - Camel microservices with Spring Boot and KubernetesJEEConf 2018 - Camel microservices with Spring Boot and Kubernetes
JEEConf 2018 - Camel microservices with Spring Boot and KubernetesClaus Ibsen
 
Camel riders in the cloud
Camel riders in the cloudCamel riders in the cloud
Camel riders in the cloudClaus Ibsen
 
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...Claus Ibsen
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelClaus Ibsen
 
ApacheCon EU 2016 - Apache Camel the integration library
ApacheCon EU 2016 - Apache Camel the integration libraryApacheCon EU 2016 - Apache Camel the integration library
ApacheCon EU 2016 - Apache Camel the integration libraryClaus Ibsen
 
Developing Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersDeveloping Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersClaus Ibsen
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration libraryClaus Ibsen
 
Developing Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersDeveloping Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersClaus Ibsen
 
Riga Dev Day 2016 - Microservices with Apache Camel & fabric8 on Kubernetes
Riga Dev Day 2016 - Microservices with Apache Camel & fabric8 on KubernetesRiga Dev Day 2016 - Microservices with Apache Camel & fabric8 on Kubernetes
Riga Dev Day 2016 - Microservices with Apache Camel & fabric8 on KubernetesClaus Ibsen
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxClaus Ibsen
 
Microservices with apache_camel_barcelona
Microservices with apache_camel_barcelonaMicroservices with apache_camel_barcelona
Microservices with apache_camel_barcelonaClaus Ibsen
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache CamelClaus Ibsen
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and GroovyClaus Ibsen
 
Getting Started with Apache Camel at DevNation 2014
Getting Started with Apache Camel at DevNation 2014Getting Started with Apache Camel at DevNation 2014
Getting Started with Apache Camel at DevNation 2014Claus Ibsen
 

More from Claus Ibsen (18)

Low Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdfLow Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdf
 
Camel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdfCamel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdf
 
Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3
 
Serverless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesServerless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on Kubernetes
 
JEEConf 2018 - Camel microservices with Spring Boot and Kubernetes
JEEConf 2018 - Camel microservices with Spring Boot and KubernetesJEEConf 2018 - Camel microservices with Spring Boot and Kubernetes
JEEConf 2018 - Camel microservices with Spring Boot and Kubernetes
 
Camel riders in the cloud
Camel riders in the cloudCamel riders in the cloud
Camel riders in the cloud
 
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
ApacheCon EU 2016 - Apache Camel the integration library
ApacheCon EU 2016 - Apache Camel the integration libraryApacheCon EU 2016 - Apache Camel the integration library
ApacheCon EU 2016 - Apache Camel the integration library
 
Developing Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersDeveloping Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containers
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration library
 
Developing Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersDeveloping Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containers
 
Riga Dev Day 2016 - Microservices with Apache Camel & fabric8 on Kubernetes
Riga Dev Day 2016 - Microservices with Apache Camel & fabric8 on KubernetesRiga Dev Day 2016 - Microservices with Apache Camel & fabric8 on Kubernetes
Riga Dev Day 2016 - Microservices with Apache Camel & fabric8 on Kubernetes
 
Apache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the boxApache Camel Introduction & What's in the box
Apache Camel Introduction & What's in the box
 
Microservices with apache_camel_barcelona
Microservices with apache_camel_barcelonaMicroservices with apache_camel_barcelona
Microservices with apache_camel_barcelona
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and Groovy
 
Getting Started with Apache Camel at DevNation 2014
Getting Started with Apache Camel at DevNation 2014Getting Started with Apache Camel at DevNation 2014
Getting Started with Apache Camel at DevNation 2014
 

Recently uploaded

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
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.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
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
 

Recently uploaded (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
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
 

Apache Camel v3, Camel K and Camel Quarkus

  • 1. Apache Camel v3 Camel K Camel Quarkus Claus Ibsen Senior Principal Software Engineer Red Hat November 2019
  • 2. About me Claus Ibsen ● Senior Principal Software Engineer at Red Hat ● ASF Member & Java Champion ● Apache Camel tech lead ● Author of Camel in Action books ● Based in Denmark ● Blog: https://medium.com/@davsclaus
  • 3. Agenda ● Integration Evolution ● Apache Camel ● Camel 3 ● Camel K ● Serverless ● Camel K & Knative ● Camel Quarkus ● Roadmap ● More Material
  • 7. Very old SOA/ESB Architecture
  • 8. Today's ESB Architecture Apache Camel OSGi Framework Apache CXF Apache ActiveMQ App App App App App App App App App App App App Deployer Shell Config Manage Blueprint HTTP Integration Core Application Apache Karaf
  • 10. Microservice Architecture (MSA 1.0) Data store SaaS
  • 11. Today's Microservice Architecture (MSA 1.0) Apache Camel Apache Tomcat Spring Rest App Spring Framework Spring Boot Integration Core Application Spring Boot Hystrix Circuit Breaker
  • 18. What is Apache Camel ● The swiss knife of integration ● 10+ years of development and one of the most active Apache projects
  • 19. What is Apache Camel ● Packed with functionality The giant Swiss knife 😅
  • 20. What is Apache Camel ● Java based integration framework ● Runtime support: Spring Boot, Apache Karaf / OSGi, JEE / WAR, Microprofile, Quarkus, Standalone, and more ... ● Based on Enterprise Integration Patterns ● Comes with 300+ components (connectors) ● DSL (Java or XML) to describe integration flow (routes) ● Can integrate everything ... almost everything ● 10+ years of development - still one of the most active Apache projects ● The cornerstone of Red Hat Fuse
  • 22. System Integration System A System B? ● Different Transports ● Different Data Model ● Asynchronous vs Synchronous ● Failures ● Observability ● ...
  • 27. System Integration System A System B Transport A Transport B ?
  • 29. Camel Routes with Splitter
  • 30. Camel Routes with Splitter from("file:inbox")
  • 31. Camel Routes with Splitter from("file:inbox") .split(body().tokenize("n"))
  • 32. Camel Routes with Splitter from("file:inbox") .split(body().tokenize("n")) .marshal(customToXml) Custom data transformation
  • 33. Camel Routes with Splitter from("file:inbox") .split(body().tokenize("n")) .marshal(customToXml) .to("activemq:line");
  • 36. Runs on popular Java Runtimes
  • 37. Camel connects everything Enterprise Systems ● File ● FTP ● JMS ● AMQP ● JDBC ● SQL ● TCP/UDP ● Mail ● HDFS ● JPA ● MongoDB ● Kafka ● ... Public Cloud ● AWS ○ S3 ○ SQS ○ Kinesis ○ ... ● Google ○ BigQuery ○ PubSub ● Azure ○ Blob ○ Queue ● Box ● Dropbox ● Facebook ● Linkedin ● Salesforce ● SAP ● ServiceNowIoT ● CoAP ● MQTT ● PubNub SaaS
  • 38. 300+ Components ahc ahc-ws amqp apns as2 asn1 asterisk atmos atmosphere-websocket atom atomix avro aws aws-xray azure bam barcode base64 beanio beanstalk bean-validator bindy blueprint bonita boon box braintree cache caffeine cassandraql castor cdi chronicle chunk cmis cm-sms coap cometd consul context corda core-osgi core-xml couchbase couchdb crypto crypto-cms csv cxf cxf-transport digitalocean disruptor dns docker dozer drill dropbox eclipse ehcache ejb elasticsearch elasticsearch5 elasticsearch-rest elsql etcd eventadmin exec facebook fastjson fhir flatpack flink fop freemarker ftp ganglia geocoder git github google-bigquery google-calendar google-drive google-mail google-pubsub google-sheets gora grape groovy groovy-dsl grpc gson guava-eventbus guice hawtdb hazelcast hbase hdfs hdfs2 headersmap hessian hipchat hl7 http http4 http-common hystrix ibatis ical iec60870 ignite infinispan influxdb ipfs irc ironmq jackson jacksonxml jasypt javaspace jaxb jbpm jcache jclouds jcr jdbc jetty jetty9 jetty-common jgroups jibx jing jira jms jmx johnzon jolt josql jpa jsch jsonpath json-validator jt400 juel jxpath kafka kestrel krati kubernetes kura ldap ldif leveldb linkedin lra lucene lumberjack lzf mail master metrics micrometer milo mina mina2 mllp mongodb mongodb3 mongodb-gridfs mqtt msv mustache mvel mybatis nagios nats netty netty4 netty4-http netty-http nsq ognl olingo2 olingo4 openshift openstack opentracing optaplanner paho paxlogging pdf pgevent printer protobuf pubnub quartz quartz2 quickfix rabbitmq reactive-streams reactor restlet rest-swagger ribbon rmi routebox rss ruby rx rxjava2 salesforce sap-netweaver saxon scala schematron scr script service servicenow servlet servletlistener shiro sip sjms sjms2 slack smpp snakeyaml snmp soap solr spark spark-rest splunk spring spring-batch spring-boot spring-cloud spring-cloud-consul spring-cloud-netflix spring-cloud-zookeeper spring-integration spring-javaconfig spring-ldap spring-redis spring-security spring-ws sql ssh stax stomp stream stringtemplate swagger swagger-java syslog tagsoup tarfile telegram test test-blueprint test-cdi testcontainers testcontainers-spring test-karaf testng test-spring thrift tika twilio twitter undertow univocity-parsers urlrewrite velocity vertx weather web3j websocket wordpress xchange xmlbeans xmljson xmlrpc xmlsecurity xmpp xstream yammer yql zendesk zipfile zipkin zookeeper zookeeper-master
  • 39.
  • 40. +
  • 41. + +
  • 42. + + +
  • 45. Apache Camel 3 - Projects Camel Integration Framework Swiss knife of integration
  • 46. Apache Camel 3 - Projects Camel KCamel Integration Framework Swiss knife of integration Lightweight Serverless Integration Platform Camel on Kubernetes & Knative
  • 47. Apache Camel 3 - Projects Camel Quarkus Camel KCamel Integration Framework Swiss knife of integration Lightweight Serverless Integration Platform Camel on Kubernetes & Knative Camel extensions for Quarkus Optimized JVM & Native compiled Java (GraalVM)
  • 49. Camel 3 Goals ● Tidy up APIs & cleanup of technical debt ● Light-weight & modular camel-core ● Reactive Routing Engine ● Camel Main (standalone) ● Fluent Builder Endpoint configuration (Java) ● Backwards compatible (for most end users) ● Java 11 support ● New website ● Camel K ● Camel Quarkus
  • 50. Camel 3 - Website ● New website and documentation
  • 51. Camel 3 - Platforms & Runtimes ● Java 8 ○ will be dropped later on 3.x ● Java 11 ○ first version to support ● GraalVM ○ camel-quarkus sub-project ● Spring Boot 2.x ● Standalone (camel-main) ● Apache Karaf (OSGi) ● WAR / JEE ● Eclipse Microprofile
  • 52. Camel 3 - Modularized ● Modularized camel-core camel-core ( Camel 2.x) camel-api camel-core-osgi camel-management-api camel-base camel-core-xml camel-management-impl camel-caffeine-lrucache camel-endpointdsl camel-support camel-cloud camel-headersmap camel-util camel-core camel-jaxp camel-util-json camel-core-engine camel-main
  • 53. Camel 3 - Modularized ● Modularized camel-core components camel-core ( Camel 2.x) camel-bean camel-log camel-stub camel-browse camel-mock camel-timer camel-controlbus camel-properties camel-validator camel-dataformat camel-ref camel-vm camel-direct camel-rest camel-xpath camel-directvm camel-saga camel-xslt camel-file camel-scheduler camel-zip-deflater camel-language camel-seda
  • 54. Camel 3 - Modularized ● camel-core vs camel-core-engine camel-core (Camel 3.x) camel-core-engine (Camel 3.x) Includes 33 Camel JARs (core & core components) (similar to camel-core 2.x) Includes 12 Camel JARs (core only functionality)
  • 55. Camel 3 - Optimized ● Faster startup and lower footprint ○ Smaller core & less classes loaded etc ● Optimized camel-core ○ Many smaller optimizations examples/camel-example-console Camel 2.x: 5179 classes loaded (5.3 mb camel JARs) Camel 3.x: 4286 classes loaded (3.9 mb camel JARs)
  • 56. Camel 3 - Optimized ● Source code generated invocation (no Java reflection) ○ Type Converters ○ Route configuration ○ Endpoint configuration ○ Component configuration ● Build & Init lifecycle phase ○ Prepare before start (eg Quarkus build time preparation) ● JMX management optional
  • 57. Camel 3 - Endpoint DSL ● Endpoint DSL ○ Type Safe ○ Java Fluent Builder style
  • 58. Camel 3 - Reactive ● Reactive Core ○ All EIPs now fully reactive ○ Blocking vs Non-Blocking code-paths merged into one (Non-Blocking) ● Postponed for Camel 3.x ○ Backpressure ○ Client API ○ Java 9+ Flowable API (requires to drop Java 8)
  • 59. Camel 3 - Camel Main ● Standalone Camel ○ Bootstrap for Camel K & Camel Quarkus ○ Unified configuration (also for Camel Spring Boot) ● Configurable ○ application.properties (ala Spring Boot) ● Tooling Support ○ Eclipse ○ Eclipse Che ○ VSCode ○ IDEA
  • 60. Camel 3 - Microprofile ● Eclipse Microprofile Integration ○ Configuration ○ Metrics ○ Health Checks ○ Fault Tolerance (in progress) ○ Reactive Messaging (3rd party) ■ https://smallrye.io/smallrye-reactive-messaging/#_integrating_with_apache_camel
  • 61. Camel 3 - Other ● JUnit 5 support ○ camel-test-junit5 ● Step EIP ○ Group together N+ EIPs (logical name) ○ Grouped performance statistics ● Lazy start producer ○ Avoid Camel to fail on startup if producer fails to start (typically connecting to remote system) ● Writeable Registry ○ Easier to add your own beans ● Route Model more extensible ○ YAML route builder (Camel K)
  • 62. 19/12/2018 Master switched to camel 3 02/2019 M1 ❏ New Camel API ❏ Move components out of camel core ❏ Extract basic classes in a support JAR ❏ Reactive Routing Engine ❏ Faster releases ❏ Quarkus Support for a subset of components ❏ Writeable registry ❏ Step EIP ❏ Faster build ❏ Reactive Routing Engine improved ❏ Java 11 support improved ❏ EIP at scale ❏ More Quarkus support Final Release 04/2019 M2 06/2019 M3 07/2019 M4 ❏ Auto-generate Endpoint DSL ❏ Camel-core-engine ❏ Camel-main improved ❏ Website and docs almost done 09/2019 RC1 ❏ Renaming components ❏ New website live ❏ Stabilizing ❏ Reduce footprint Camel 3 - Timeline 10/2019 RC2 RC3 12/2019 GA 5700+ commits (Camel 3.x)
  • 64. A lightweight integration platform, based on Apache Camel, born on Kubernetes, with serverless superpowers. What is Apache Camel K ?
  • 65. A lightweight integration platform, based on Apache Camel, born on Kubernetes, with serverless superpowers. What is Apache Camel K ? Runs on “vanilla” Kubernetes (1) ... K 1.
  • 66. A lightweight integration platform, based on Apache Camel, born on Kubernetes, with serverless superpowers. What is Apache Camel K ? Runs on “vanilla” Kubernetes (1), Openshift (2) ... K 1. K 2.
  • 67. A lightweight integration platform, based on Apache Camel, born on Kubernetes, with serverless superpowers. What is Apache Camel K ? Runs on “vanilla” Kubernetes (1), Openshift (2) and gives its best on a Knative-powered cluster (3)! K 1. K 2. K 3.
  • 68. How?
  • 70. How? from(“telegram:bots/bot-id”) .transform()... .to(“kafka:topic”); from(“kafka:topic”) .to(“http:my-host/api/path”); 1. Create a integration file (Java, Groovy, Kotlin, JS, XML…) Camel DSL, based on EIPs... $ kamel run integration.groovy 2. Run it
  • 71. How? from(“telegram:bots/bot-id”) .transform()... .to(“kafka:topic”); from(“kafka:topic”) .to(“http:my-host/api/path”); 1. Create a integration file (Java, Groovy, Kotlin, JS, XML…) Camel DSL, based on EIPs... 3. Runs on Openshift or Kubernetes $ kamel run integration.groovy 2. Run it
  • 72. Architecture of Camel K Dev Environment Remote Cloud kamel CLI Camel K Operator “Integration” Custom Resource Running Pod Live updates! Fast redeploy! Less than 1 second! Tailored for cloud-native development experience
  • 73. Fast Deployment of Camel K Time to run a integration using different strategies (in seconds) Lower is better 😃 F-m-p is the “fabric8-maven-plugin” (http://maven.fabric8.io/) deploying a average spring-boot based integration on Minishift vs. a remote OpenShift cluster (accounting time to upload the fat Jar). Source S2I build has been measured in Red Hat Fuse Online.
  • 74. Camel K on OperatorHub
  • 75. Quick Camel K Demo https://www.youtube.com/watch?v=I-g2xt-Qcb8
  • 76.
  • 77. Camel K Chuck Demo Routes. java Telegram Camel K
  • 79. What is serverless? “Serverless computing refers to the concept of building and running applications that don’t require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and executed, scaled, billed in response to the exact demand needed” https://github.com/cncf/wg-serverless Serverless personas: ● Developer: writes code for, and benefits from the serverless platform. ● Provider: manages the serverless platform.
  • 80. What is serverless? “Serverless computing refers to the concept of building and running applications that don’t require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and executed, scaled, billed in response to the exact demand needed” https://github.com/cncf/wg-serverless Serverless personas: ● Developer: writes code for, and benefits from the serverless platform. ● Provider: manages the serverless platform.
  • 81. Serverless (Compute) Here’s my personal definition of “serverless”. Before it becomes a billing model, we need to define it “technically”. Serverless is a programming model based on:
  • 82. Serverless (Compute) Here’s my personal definition of “serverless”. Before it becomes a billing model, we need to define it “technically”. Serverless is a programming model based on: ... 1) Auto-scaling services/functions (including scaling to zero)
  • 83. 2) Event-driven execution Serverless (Compute) Here’s my personal definition of “serverless”. Before it becomes a billing model, we need to define it “technically”. Serverless is a programming model based on: ... 1) Auto-scaling services/functions (including scaling to zero)
  • 84. Serverless requirements For the platform ● Scaling to zero ● Rapid scaling up and down ● Eventing mechanism ● Routing and networking For the application runtime ● Fast startup ● Fast first response ● Low on memory and CPU ● Small size on disk
  • 85. Serverless requirements For the platform ● Scaling to zero ● Rapid scaling up and down ● Eventing mechanism ● Routing and networking For the application runtime ● Fast startup ● Fast first response ● Low on memory and CPU ● Small size on disk K
  • 88. Build A pluggable model for building artifacts, like jar files, zips or containers from source code. Knative Overview - Components Serving An event-driven model that serves the container with your application and can "scale to zero". Eventing Common infrastructure for consuming and producing events that will stimulate applications. Kubernetes-based platform to build, deploy, and manage modern serverless workloads
  • 89. What about Camel K & Knative ? K
  • 90. Camel K and Knative <<custom-resource>> Build Knative components relevance to Camel <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Build <<custom-resource>> Service <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Serving <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Eventing Standardize building container images Auto-scaling and scale-to-zero Messaging for event-based applications <<custom-resource>> Channel
  • 91. Camel K and Knative <<custom-resource>> Build Knative components relevance to Camel <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Build <<custom-resource>> Service <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Serving <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Eventing Standardize building container images Auto-scaling and scale-to-zero Messaging for event-based applications <<custom-resource>> Channel XNo longer included in Knative Use external projects such as Tekton
  • 92. Camel K and Knative <<custom-resource>> Build Knative components relevance to Camel <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Build <<custom-resource>> Service <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Serving <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Eventing Standardize building container images Auto-scaling and scale-to-zero Messaging for event-based applications <<custom-resource>> Channel X
  • 93. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service
  • 94. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service
  • 95. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Request
  • 96. Camel K and Knative Serving Kubernetes Namespace A container is created only when needed! rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Request Pod
  • 97. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Request Pod
  • 98. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Request Pod
  • 99. Camel K and Knative Serving Kubernetes Namespace Scale to zero when no load rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service
  • 100. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Multiple containers under high load! Request Pod Request Request Pod Pod
  • 101. Camel K and Knative Serving Kubernetes Namespace rest().post(“/path”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Scale to zero when no load
  • 102. Camel K and Knative <<custom-resource>> Build Knative components relevance to Camel <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Build <<custom-resource>> Service <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Serving <<custom-resource>> ...<<custom-resource>> ...<<custom-resource>> ... Knative Eventing Standardize building container images Auto-scaling and scale-to-zero Messaging for event-based applications <<custom-resource>> Channel X
  • 103.
  • 104. Kubernetes Namespace Camel K and Knative Eventing 300+ components! System 1 System 2 Channel a Persisted by Kafka, in-memory (pluggable)
  • 105. Kubernetes Namespace Camel K and Knative Eventing from(“knative:channel/a”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Knative Subscription Channel a
  • 106. Kubernetes Namespace Camel K and Knative Eventing from(“knative:channel/a”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Knative Subscription Cloud Event https://cloudevents.io/ Channel a
  • 107. Kubernetes Namespace Camel K and Knative Eventing from(“knative:channel/a”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Knative Subscription PodCloud Event https://cloudevents.io/ Channel a
  • 108. Kubernetes Namespace Camel K and Knative Eventing from(“knative:channel/a”) .to(“xx:system1”) .to(“xx:system2”) 300+ components! System 1 System 2 Knative Service Knative Subscription PodCloud Event https://cloudevents.io/ Channel a
  • 109. Camel K: same model for different purposes Camel K and Knative Eventing Channel Channel Channel Ext System
  • 110. Camel K: same model for different purposes Camel K and Knative Eventing Channel Channel Channel Ext System Event Source (Sink) 300+ components!
  • 111. Camel K: same model for different purposes Camel K and Knative Eventing Channel Channel Channel Ext System Event Source (Sink) Enterprise Integration Patterns (Routing) 300+ components! 65+ patterns
  • 112. Camel K: same model for different purposes Camel K and Knative Eventing Channel Channel Channel Ext System Event Source (Sink) Enterprise Integration Patterns (Routing) Function (Integration) 300+ components! 300+ components! 65+ patterns
  • 113. Knative Eventing includes Camel Standard Knative Sources That can be used without any knowledge of Camel K! ... but Camel K is under the hood :)
  • 114. Apache Camel K on CNCF https://camel.apache.org/blog/CamelK-CNCF-Landscape/
  • 116. Camel K and Knative Demo Legacy to Telegram Legacy Telegram
  • 117. Camel K and Knative Demo
  • 118. Camel K and Knative Demo legacy. groovy
  • 119. Camel K and Knative Demo legacy. groovy channel/in
  • 120. Camel K and Knative Demo legacy. groovy channel/in process. groovy
  • 121. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy
  • 122. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml
  • 123. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 124. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 125. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 126.
  • 127. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 128.
  • 129. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 130.
  • 131. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 132. Quarkus is now supported out of the box with Camel K since this demo was created (no longer needed to build your own kit) https://camel.apache.org/camel-k/latest/traits/quarkus.html
  • 133. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 134.
  • 135. Camel K and Knative Demo legacy. groovy channel/in channel/out channel/null process. groovy quarkus. yaml telegram. groovy
  • 136.
  • 137. Camel K and Knative Demo (Video)
  • 139. Characteristic Monolithic/SOA Microservies/CNA Functions/Serverless Packaging Ear/War/Jar Fat-jar Native executable Startup procedure XML scanning Annotation scanning Instant (ahead-of-time compilation) Memory/binary size 1000s MBs 100s MBs 10s of MBs Startup/first response Minutes Seconds Milliseconds Process lifecycle Long running Managed by platform Ephemeral (executed per request) State (app/user) Stateful Stateless (no user state) Ephemeral (no application state) Data ownership Shared data model Owns data No data ownership Operations Multiple unrelated operations Multiple domain operations Single event driven operation Scope Multiple business domains Single business domain Single task Motivation Non-scalable, high complexity domains Portable, autonomous, scalable workloads Rapid productivity, at the expense of control and portability Application trends (Java)
  • 141.
  • 142. Java Density Problem CONTAINER ORCHESTRATION Node Node Node Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack NodeJS NodeJS NodeJS NodeJS NodeJS NodeJS NodeJS Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go Go https://developers.redhat.com/blog/2017/03/14/java-inside-docker/
  • 145. What is Quarkus ? Supersonic Subatomic Java
  • 146. What is Quarkus ? Supersonic Subatomic Java A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot, crafted from the best of breed Java libraries and standards
  • 149. Apache Camel and Quarkus runs blazingly fast with native compiled binaries. Startup is 10 msec, 32mb binary file, and 13mb RSS memory used.
  • 150. Observabilty Example ● Microprofile Health ● Microprofile Monitoring ● Random delay 1s to 5s Jaeger UI
  • 152. Camel K - Roadmap ● Support for Camel 3 (Now RC3, GA in Nov/Dec 2019) ○ Lightweight modules to reduce footprint ○ Webhook meta-component (more components that can scale down to 0) ○ Camel K 1.0.0-M3 supports Camel 3.0.0-RC1 ● Quarkus as integration runtime ○ Reduced footprint and cold start-up time ○ Native image build in parallel swapped with JVM image during auto-scaling once ready ● Knative 1.0 → Camel K 1.0.0 ● Support the Broker / Trigger model ● Support Tekton builds ● Push-based endpoints ● Fully integrated with Syndesis / Fuse Online ● Better IDE support ● Better integration with CI tools ● BDD testing ● Operator Capability Level 3+
  • 153. Camel Quarkus - Roadmap ● Camel Extensions on http://code.quarkus.io ● Port more Camel components as Extensions (22 done out of 300) ● More build time optimisations ● Reduce startup overhead ● Quarkus 1.0 → Camel Quarkus 1.0.0 ● Better IDE support
  • 154. Camel Kafka Connector ● A kafka connector source and sink implementation that embeds camel. ● It is configurable to use most of the camel-components. ● Making it able to talk with 300+ different kind of external systems. 300+ components!
  • 155. Camel Debezium ● Stream changes from databases to Camel ● camel-debezium component in Camel 3 ○ MySQL connector ○ Other databases on the way ... Debezium https://www.youtube.com/watch?time_continue=12&v=xLXx8bUyTtk
  • 158. Knative Camel Sources Camel Sources are an addon to Knative, currently in Knative eventing-contrib It translates Camel-based Knative eventing sources into Camel K integrations https://github.com/knative/eventing-contrib/tree/master/camel/source apiVersion: sources.eventing.knative.dev/v1alpha1 kind: CamelSource metadata: name: camel-timer-flow-source spec: source: flow: | from: uri: timer:tick?period=3s steps: - set-body: constant: Hello world! sink: apiVersion: eventing.knative.dev/v1alpha1 kind: Channel name: camel-test kind: Integration apiVersion: camel.apache.org/v1alpha1 metadata: name: my-integration spec: source: - content: | - from: uri: timer:tick?period=3s steps: - set-body: constant: Hello world! - to: uri: knative://endpoint/sink language: yaml name: flow.yaml traits: knative: configuration: configuration: '{"services":[{"type":"endpoint","protocol":"h ttp","name":"sink","host":"camel-test-channel- 4dlgs.camel-k.svc.cluster.local","port":80,"me tadata":{"service.path":"/"}}]}' Camel Sources Operator
  • 160. Serverless Integration Repository Camel Source Camel Source Camel Source Camel Source Camel Source Camel Source Integration function Integration Integration function Integration apiVersion: sources.eventing.knative.dev/v1alpha1 kind: CamelSource metadata: name: camel-timer-flow-source spec: source: flow: | from: uri: timer:tick?period=3s steps: - set-body: constant: Hello world! sink: apiVersion: eventing.knative.dev/v1alpha1 kind: Channel name: camel-test
  • 161. Serverless Integration Microservices Microservices Microservices External SaaS External SaaS External SaaS External SaaS Integration function Integration function Integration function Integration function Integration function KNative Service Service Service Service Microservices Microservices function
  • 162.
  • 163.
  • 164.
  • 166. More Material ● Apache Camel K https://github.com/apache/camel-k ● Apache Camel Quarkus https://github.com/apache/camel-quarkus ● Quick Camel K demo https://www.youtube.com/watch?v=I-g2xt-Qcb8 ● Camel K Introduction Blog https://www.nicolaferraro.me/2018/10/15/introducing-camel-k ● Kubernetes enterprise integration patterns with Camel K webinar https://www.youtube.com/watch?v=51x9BewGCYA ● Camel K and Knative video https://www.youtube.com/watch?v=lOqubmVSGdw
  • 167. Books
  • 168. Any Questions ? Follow us on Twitter @davsclaus @ApacheCamel https://github.com/apache/camel A star on github is appreciated