Why real integration developers ride Camels...• Committer on Apache Camel, Apache ActiveMQ,...

34
Why real integration developers ride Camels

Transcript of Why real integration developers ride Camels...• Committer on Apache Camel, Apache ActiveMQ,...

Why real integration

developers ride Camels

Christian PostaPrincipal Middleware Specialist/Architect

Blog: http://blog.christianposta.com

Twitter: @christianposta

Email: [email protected]

• Committer on Apache Camel, Apache ActiveMQ, Fabric8

• Recovering consultant

• Spent lot of time working with one of the largest Microservices, web-

scale, unicorn companies

• Frequent blogger and speaker about open-source, cloud, and

microservices

Kenneth PeeplesJBoss Technology Evangelist

Blog: www.ossmentor.com

Twitter: @ossmentor

Email: [email protected]

• Prior Public Sector Consultant with a concentration on Security

• Blogger and speaker with a concentration on Mobile, Integration,

Cloud and Data Services

• Open-source Camel riding

• Competitive claims

• What our customers say

• Why you should ride Camels too

• Demo

Agenda

Open-source Camel riding

6

Apache Camel

Apache Camel is an open-source,

light-weight, integration library.

Use Camel to integrate disparate systems

that speak different protocols and data formats

Enterprise Integration Patterns

http://camel.apache.org/eip

Features

● Enterprise Integration Patterns (EIPs)

● Domain Specific Language to write “flows” or “routes”

● Large collection of adapters/components for legacy

systems, B2B, and SaaS

● Strong Unit test/Integration test framework

● Expression languages

● Data Formats

● Tooling with JBoss Developer Studio

Why Open source?

Not so open source…

• Apache Camel is 100% open source

• JBoss Fuse (built with Camel and other

Apache projects) is 100% open source

• Vibrant communities

• Mailing lists

• Code commits

• Issue trackers

• Visible community members

• Blogging, books, social media

Is Camel open source or open core?

Competitive claims

• Well…actually, Camel significantly reduces

the amount of code

• “Went from 90,000 LOC to 2,000”

• Without Camel DSL:

https://gist.github.com/christian-posta/6dc3b96f964c9706fa63

• With Camel DSL:

https://gist.github.com/christian-posta/2d0e119d71ca1808ccba

“I cannot understand the benefit of

Apache Camel as a lot of code is required”

• Well… let’s be honest; every library has a

learning curve

• What that means is flexibility

• Need guidance and best practices?

• Books, community, support

• Starting off “basic” and leveraging more as

become comfortable with the API

“So many different ways to implement

a solution with Apache Camel”

• Well… actually, checkout the new Fuse

tooling!

https://github.com/fusesource/fuseide

http://tools.jboss.org/downloads/jbosstools_is/index.html

• Demo perhaps?

“No drag-and-drop tooling, no data mapper”

• Camel is not an ESB

• Pick the right tool (architecture) for the job!

• Not forced into expensive, mountainous

suites of applications

• If you want to compare ESBs, don’t compare

with Camel

• Do compare with JBoss Fuse

“Apache Camel doesn’t do what ESB X does”

RED HAT JBOSS FUSE

Development and tooling

Develop, test, debug, refine,

deploy

JBoss Developer Studio

Web services frameworkWeb services standards, SOAP,

XML/HTTP, RESTful HTTP

Integration frameworkTransformation, mediation, enterprise

integration patterns

Management and

monitoring

System and web services metrics,

automated discovery, container

status, automatic updates

JBoss Operations Network

+

JBoss Fabric Management

Console

(hawtio)

Apache CXF Apache Camel

Reliable MessagingJMS/STOMP/NMS/MQTT, publishing-subscribe/point-2-point, store and forward

Apache ActiveMQ

ContainerLife cycle management, resource management, dynamic deployment,

security and provisioning

Apache Karaf + Fuse Fabric

RED HAT ENTERPRISE LINUXWindows, UNIX, and other Linux

Ultimately:

Our customers care about making

more money.

How can these tools help them do

that?

What our customers say

http://www.redhat.com/en/resources/value-red-hat-integration-products

• Six organizations studied

• Telecommunications, IT, shipment and logistics,

and document management

• Three year ROI of 488%

• Payback time of 8.2 months

• 51.5% more applications integrated per year

• 40.8% fewer FTEs per application integration

• 62.8% less downtime related to integration

• 18.1% improved performance

• 34.2% less costly than previous middleware

integration solution stack

Crazy ROI!?

• Global, event-based systems

• Eliminate bottlenecks in their systems

• Wanted open-source solution

• Faster time to market

New Case Study: AMD and JBoss Fuse

http://www.redhat.com/en/resources/amd-accelerates-time-market-red-hat-jboss-fuse

Why you should ride Camels too!

Real developers ride Camels!

• Community aspects

• Anyone can become a committer

• Run in whatever JVM container you want

• Run in whatever Dependency Injection

framework you want

No “vendor lock in”

Integration Complexity Made Simple

• Integrations of any Size and Complexity

• Small investment to start

• Extensible and reuse

• Fast Path to Integration

• Strong Unit Testing

• OOTB Component Library

• Declarative

• Uses existing developer tooling (eg, IDE)

• Java, XML, Scala, Groovy, Kotlin

Flexible, powerful DSL

Example: Java DSL

public class OrderProcessorRouteBuilder extends RouteBuilder {

@Override

public void configure() throws Exception {

from(“activemq:orders”)

.choice()

.when(header(“customer-rating”).isEqualTo(“gold”))

.to(“activemq:topic:specialCustomer”)

.otherwise()

.to(“sftp://user@host/orders/regularCustomers”)

.end()

.log(“received new order ${body.orderId}”)

.to(“ibatis:storeOrder?statementType=Insert”);

}

}

• DSL for REST API

• Out of the box Swagger integration

• Powerful exception handling

• Circuit breaker patterns

Rapid REST APIs

rest()

.post(“/order/beer”)

.description(“New order for a mug of beer”)

.consumes(“application/json”)

.route()

.to(“activemq:topic:newOrder”)

.log(“received new order ${body.orderId}”)

.to(“ibatis:storeOrder?statementType=Insert”);

• JMX top to bottom

• Codehale metrics

• HawtIO web console

• Fabric8 management

Operational tooling

Demo

Data Integration

Mobile Integration