SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
State of Integration
with Apache Camel
Claus Ibsen
@davsclaus Las Vegas, September 2019
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
My 1st Apache Con in 2016
ApacheCon EU 2016 in Sevilla, Spain
No attendees
My 1st Apache Con in 2016
ApacheCon EU 2016 in Sevilla, Spain
Agenda
● Integration Evolution
● Camel 3
● Camel K
● Camel Quarkus
● Summary
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 3
Apache Camel 3 - Projects
Camel
Integration Framework
"Swizz army of integration"
Apache Camel 3 - Projects
Camel KCamel
Integration Framework
"Swizz army of integration"
Lightweight Integration
Framework. Camel on
Kubernetes & Knative.
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).
What is Apache Camel
● The swizz army of integration
● 10+ years of development and one
of the most active Apache projects
What is Apache Camel
● Packed with functionality
The giant Swiss army knife 😅
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
System Integration
Integration Framework
Enterprise Integration Patterns
Enterprise Integration Patterns
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 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
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-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
○ EIP model (property placeholders)
○ Endpoint configuration
○ Component configuration
● JMX optional
● Build & Init lifecycle phase
○ Prepare before start (eg Quarkus build time preparation)
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)
● Eclipse Microprofile Integration
○ Configuration
○ Metrics
○ Health Checks
● Tooling Support
○ Eclipse
○ Eclipse Che
○ VSCode
○ IDEA
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
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)
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), Openshift (2) and gives its best on a Knative-powered cluster (3)!
K
1.
K
2.
K
3.
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.
Quick Camel K Demo
Camel Quarkus
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 ?
A Kubernetes Native Java stack tailored for
GraalVM & OpenJDK HotSpot, crafted from the
best of breed Java libraries and standards
https://quarkus.io
Minimal Footprint
● Minimal footprint Java applications
○ Native vs Quarkus+OpenJDK JVM vs Traditional JVM
Apache Camel and Quarkus runs blazingly fast 🚀 with native compiled binaries.
Startup is 7 msec, 28mb binary file, and 15mb RSS memory used.
Summary
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)
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
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
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
Any Questions ?
Follow us on Twitter
@ApacheCamel
@davsclaus
https://github.com/apache/camel
A ⭐ star on github is appreciated

Más contenido relacionado

La actualidad más candente

Using Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivityUsing Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivity
Claus Ibsen
 

La actualidad más candente (20)

Integrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelIntegrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and Camel
 
Apache Camel v3, Camel K and Camel Quarkus
Apache Camel v3, Camel K and Camel QuarkusApache Camel v3, Camel K and Camel Quarkus
Apache Camel v3, Camel K and Camel Quarkus
 
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
 
Camel riders in the cloud
Camel riders in the cloudCamel riders in the cloud
Camel riders in the cloud
 
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
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
 
Sun Web Server Brief
Sun Web Server BriefSun Web Server Brief
Sun Web Server Brief
 
Integrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesIntegrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetes
 
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
 
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
 
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
 
ApacheCon NA - Apache Camel K: a cloud-native integration platform
ApacheCon NA - Apache Camel K: a cloud-native integration platformApacheCon NA - Apache Camel K: a cloud-native integration platform
ApacheCon NA - Apache Camel K: a cloud-native integration platform
 
Building flexible ETL pipelines with Apache Camel on Quarkus
Building flexible ETL pipelines with Apache Camel on QuarkusBuilding flexible ETL pipelines with Apache Camel on Quarkus
Building flexible ETL pipelines with Apache Camel on Quarkus
 
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...
 
Using Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivityUsing Apache Camel connectors for external connectivity
Using Apache Camel connectors for external connectivity
 
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...
 
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
 
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
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
 

Similar a State of integration with Apache Camel (ApacheCon 2019)

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
 

Similar a State of integration with Apache Camel (ApacheCon 2019) (20)

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...
 
Camel_From_The_Field
Camel_From_The_FieldCamel_From_The_Field
Camel_From_The_Field
 
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
 
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
 
Camel Riders in the Cloud
Camel Riders in the CloudCamel Riders in the Cloud
Camel Riders in the Cloud
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 
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
 
CQ5 and Sling overview
CQ5 and Sling overviewCQ5 and Sling overview
CQ5 and Sling overview
 
Analitica de datos en tiempo real con Apache Flink y Apache BEAM
Analitica de datos en tiempo real con Apache Flink y Apache BEAMAnalitica de datos en tiempo real con Apache Flink y Apache BEAM
Analitica de datos en tiempo real con Apache Flink y Apache BEAM
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
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
 
OpenCms Days 2013 - OpenCms Cloud eXtensions
OpenCms Days 2013 - OpenCms Cloud eXtensionsOpenCms Days 2013 - OpenCms Cloud eXtensions
OpenCms Days 2013 - OpenCms Cloud eXtensions
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
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
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
 
DBCC 2021 - FLiP Stack for Cloud Data Lakes
DBCC 2021 - FLiP Stack for Cloud Data LakesDBCC 2021 - FLiP Stack for Cloud Data Lakes
DBCC 2021 - FLiP Stack for Cloud Data Lakes
 
Machine learning at scale with aws sage maker
Machine learning at scale with aws sage makerMachine learning at scale with aws sage maker
Machine learning at scale with aws sage maker
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
 
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
 

Más de 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
 

Más de Claus Ibsen (7)

Camel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdfCamel JBang - Quarkus Insights.pdf
Camel JBang - Quarkus Insights.pdf
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration library
 
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
 
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

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Último (20)

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

State of integration with Apache Camel (ApacheCon 2019)

  • 1. State of Integration with Apache Camel Claus Ibsen @davsclaus Las Vegas, September 2019
  • 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
  • 5. Agenda ● Integration Evolution ● Camel 3 ● Camel K ● Camel Quarkus ● Summary
  • 9. Very old SOA/ESB Architecture
  • 10. 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
  • 12. Microservice Architecture (MSA 1.0) Data store SaaS
  • 13. 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
  • 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
  • 33. Runs on popular Java Runtimes
  • 34. 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
  • 35. 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
  • 36.
  • 37. +
  • 38. + +
  • 39. + + +
  • 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
  • 44. 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-core-engine camel-main
  • 45. 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
  • 46. 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)
  • 47. 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)
  • 48. Camel 3 - Optimized ● Source code generated invocation (no Java reflection) ○ Type Converters ○ EIP model (property placeholders) ○ Endpoint configuration ○ Component configuration ● JMX optional ● Build & Init lifecycle phase ○ Prepare before start (eg Quarkus build time preparation)
  • 49. Camel 3 - Endpoint DSL ● Endpoint DSL ○ Type Safe ○ Java Fluent Builder style
  • 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.
  • 56. 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
  • 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.
  • 60.
  • 62.
  • 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
  • 66. Minimal Footprint ● Minimal footprint Java applications ○ Native vs Quarkus+OpenJDK JVM vs Traditional JVM
  • 67. Apache Camel and Quarkus runs blazingly fast 🚀 with native compiled binaries. Startup is 7 msec, 28mb binary file, and 15mb RSS memory used.
  • 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