Apache Camel is the leading open source integration framework, which has been around for over a decade. In this talk we will look back in history, to understand how the integration landscape has evolved from EAI, SOA, and ESB architectures up to microservices, and now with modern serverless and cloud native platforms. Apache Camel has been along for the ride. And we will look to the future and see how the latest release v3 of Apache Camel, is aimed for running modern cloud native workloads with Camel K. In this talk you will: Learn from history software integration, and why you should rely on existing, proven fully featured integration frameworks instead of rolling out your own DIY solutions. See how software integration is (still) important in today’s modern architectures and what role does Camel have in the new cloud native world. What is new and noteworthy in Apache Camel version 3
2. About me
● Senior Principal Software Engineer at Red Hat
● ASF member / Java Champion
● 11+ years as Apache Camel committer
● Author of Camel in Action books
● https://medium.com/@davsclaus
3. My 1st Apache Con in 2016
ApacheCon EU 2016 in Sevilla, Spain
No attendees
4. My 1st Apache Con in 2016
ApacheCon EU 2016 in Sevilla, Spain
20. Apache Camel 3 - Projects
Camel
Integration Framework
"Swizz army of integration"
21. Apache Camel 3 - Projects
Camel KCamel
Integration Framework
"Swizz army of integration"
Lightweight Integration
Framework. Camel on
Kubernetes & Knative.
22. Apache Camel 3 - Projects
Camel
Quarkus
Camel KCamel
Integration Framework
"Swizz army of integration"
Lightweight Integration
Framework. Camel on
Kubernetes & Knative.
Camel extensions for
Quarkus. Native compiled
Java (GraalVM).
23. What is Apache Camel
● The swizz army of integration
● 10+ years of development and one
of the most active Apache projects
24. What is Apache Camel
● Packed with functionality
The giant Swiss army knife 😅
25. What is Apache Camel
● Java based integration framework
● Runtime support: Spring Boot, Apache Karaf / OSGi, JEE / WAR, Standalone
● Based on Enterprise Integration Patterns
● Comes with 300+ components
● DSL (Java or XML) to describe integration flow (routes)
● Can integrate everything ... almost everything
42. Camel 3 - Website
● New website and documentation
43. 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
50. 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)
51. 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)
● Eclipse Microprofile Integration
○ Configuration
○ Metrics
○ Health Checks
● Tooling Support
○ Eclipse
○ Eclipse Che
○ VSCode
○ IDEA
52. 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)
53. 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
Finalized
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,
stabilizing
codebase,
New website live
Reduced
Footprint
Camel 3 - Timeline
10/2019
RC2
11/2019
GA
5000+ commits (Camel 3.x)
55. 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.
57. 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
58. 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.
63. 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/
65. What is Quarkus ?
A Kubernetes Native Java stack tailored for
GraalVM & OpenJDK HotSpot, crafted from the
best of breed Java libraries and standards
https://quarkus.io
69. 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)
70. More Camel Talks
● Efficient data integrations with the Medley platform
○ Sami Adranly
○ Wednesday, 11th Sep, 16:45 - 17:35 in room Laughlin 2
● Apache Camel K: a cloud-native integration platform
○ Nicola Ferraro & Andrea Tarocchi
○ Wednesday, 11th Sep, 17:45 - 18:35 in room Laughlin 2
● Apache Camel K: connect your Knative serverless applications with
everything else
○ Nicola Ferraro & Andrea Tarocchi
○ Thursday, 12th Sep, 09:00 - 09:50 in room Laughlin 2
71. More Camel Talks
● Agile Integration - Cloud Native Application Development
○ Christina Lin
○ Thursday, 12th Sep, 14:00 - 14:50 in room Laughlin 2
● Configuring Apache Camel for the Cloud
○ Bob Paulin
○ Thursday, 12th Sep, 15:30 - 16:20 in room Laughlin 2
● Serverless Integration with Apache Camel and Knative
○ Michael Costello
○ Thursday, 12th Sep, 16:30 - 17:20 in room Laughlin 2
72. More Camel Material
● Apache Camel
https://camel.apache.org
● Quick Camel K demo
https://www.youtube.com/watch?v=I-g2xt-Qcb8
● Kubernetes enterprise integration patterns with Camel K video
https://www.youtube.com/watch?v=51x9BewGCYA
● Camel K and Knative video
https://www.youtube.com/watch?v=btf_e2GniXM
73. Any Questions ?
Follow us on Twitter
@ApacheCamel
@davsclaus
https://github.com/apache/camel
A ⭐ star on github is appreciated