SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Getting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on KubernetesGetting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on Kubernetes
Databricks
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana
 
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Claus Ibsen
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
Araf Karsh Hamid
 
Ansible Automation Platform.pdf
Ansible Automation Platform.pdfAnsible Automation Platform.pdf
Ansible Automation Platform.pdf
VuHoangAnh14
 
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
 
Helm 3
Helm 3Helm 3
An introduction to terraform
An introduction to terraformAn introduction to terraform
An introduction to terraform
Julien Pivotto
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
James Falkner
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2
Claus 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 3
Claus Ibsen
 
Terraform introduction
Terraform introductionTerraform introduction
Terraform introduction
Jason Vance
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
Claus Ibsen
 
Camel Day Italia 2021 - Camel K
Camel Day Italia 2021 - Camel KCamel Day Italia 2021 - Camel K
Camel Day Italia 2021 - Camel K
Nicola Ferraro
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
Alexei Ledenev
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
Araf Karsh Hamid
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
Platform9
 
Terraform 101
Terraform 101Terraform 101
Terraform 101
Pradeep Loganathan
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...
Bilgin Ibryam
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
Karthik Gaekwad
 

Mais procurados (20)

Getting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on KubernetesGetting Started with Apache Spark on Kubernetes
Getting Started with Apache Spark on Kubernetes
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Ansible Automation Platform.pdf
Ansible Automation Platform.pdfAnsible Automation Platform.pdf
Ansible Automation Platform.pdf
 
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!
 
Helm 3
Helm 3Helm 3
Helm 3
 
An introduction to terraform
An introduction to terraformAn introduction to terraform
An introduction to terraform
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2
 
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
 
Terraform introduction
Terraform introductionTerraform introduction
Terraform introduction
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
 
Camel Day Italia 2021 - Camel K
Camel Day Italia 2021 - Camel KCamel Day Italia 2021 - Camel K
Camel Day Italia 2021 - Camel K
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
 
Terraform 101
Terraform 101Terraform 101
Terraform 101
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
 

Semelhante a 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 - Fredericia
Claus 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 integration
Claus 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 Talk
Red Hat Developers
 
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
Claus Ibsen
 
apachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfapachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdf
ssuserbb9f511
 
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 Lambda
Serkan Özal
 
Camel_From_The_Field
Camel_From_The_FieldCamel_From_The_Field
Camel_From_The_Field
Bryan Saunders
 
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
Burr Sutter
 
OpenCms Days 2013 - OpenCms Cloud eXtensions
OpenCms Days 2013 - OpenCms Cloud eXtensionsOpenCms Days 2013 - OpenCms Cloud eXtensions
OpenCms Days 2013 - OpenCms Cloud eXtensions
Alkacon Software GmbH & Co. KG
 
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 Platform
Amazon 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 Platform
Eva Tse
 
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
AWS 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 EMR
Amazon Web Services
 
Camel Riders in the Cloud
Camel Riders in the CloudCamel Riders in the Cloud
Camel Riders in the Cloud
Red Hat Developers
 
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Thomas Weise
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to Rust
Evan Chan
 

Semelhante a 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
 
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
 
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
 
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
 
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
 
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to Rust
 

Mais de 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.pdf
Claus Ibsen
 
Camel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdfCamel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdf
Claus 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 Kubernetes
Claus Ibsen
 
Camel riders in the cloud
Camel riders in the cloudCamel riders in the cloud
Camel riders in the cloud
Claus 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 Camel
Claus 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 library
Claus 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 containers
Claus Ibsen
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration library
Claus 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 containers
Claus 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 Kubernetes
Claus 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 box
Claus Ibsen
 
Microservices with apache_camel_barcelona
Microservices with apache_camel_barcelonaMicroservices with apache_camel_barcelona
Microservices with apache_camel_barcelona
Claus Ibsen
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
Claus Ibsen
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and Groovy
Claus 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 2014
Claus Ibsen
 

Mais de Claus Ibsen (16)

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
 
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
 

Último

WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
devvsandy
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
ssuserad3af4
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 

Último (20)

WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 

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