34
Why real integration developers ride Camels

Why real integration developers ride Camels...• Committer on Apache Camel, Apache ActiveMQ, Fabric8 • Recovering consultant • Spent lot of time working with one of the largest

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

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