Do we need ESB any more? Artur Karaźniewicz

Do we need ESB any more? Artur Karaźniewicz About me • Artur Karaźniewicz - Chief Integration And Solution Architect, Integration Team Leader - All...
9 downloads 3 Views 715KB Size
Do we need ESB any more? Artur Karaźniewicz

About me •

Artur Karaźniewicz - Chief Integration And Solution Architect, Integration Team Leader - Allianz Poland



Working with Java since 1999 (JServ anybody?)



Experience in Financial Services

What’s an ESB? First things first, but not necessarily in that order. -- Doctor Who

What’s an ESB Enterprise Service Bus - term first coined by Gartner around 2002 (although few others claim They coined the term before) (Enterprise Service Bus) Universal integration backbone. An ESB acts as a shared messaging layer for connecting applications and other services throughout an enterprise computing infrastructure. It supplements its core asynchronous messaging backbone with intelligent transformation and routing to ensure messages are passed reliably. Services participate in the ESB using either web services messaging standards or the Java Message System (JMS).

What’s an ESB Sonic Software, one of the first ESB bandwagon members has it's own definition

An ESB is software infrastructure that simplifies the integration and flexible reuse of business components using a service-oriented architecture. An ESB makes it easy to dynamically connect, mediate and control services and their interactions. -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html

What’s an ESB IONA has little bit different perception what ESB actually is

In general we agree with Sonic's requirements for an ESB, at a technical level when it comes to how to meet those requirements we think they have got it all wrong. [...] Specifically, he said that Iona believes Sonic's ESB is "overly JMS [Java Message Service] and broker based". -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html

What’s an ESB PolarLake, another ESB Vendor adds another view

Great to see Sonic Software's definition converge towards ours. In particular, they are correctly identifying that mediation - a term we have used for quite some time - is the core feature of an ESB. -- source http://www.businessreviewonline.com/blog/archives/2005/12/does_sonics_esb.html

So what’s ESB after all? Odd that we think definitions are definitive. -- Larry Wall, Perl Creator

So What’s an ESB, after all? WS Stack

Adapters/Connectors

Routing and mediation

Messaging Backbone

Legacy Systems

So What’s an ESB, after all? •

A little bit of distribution mechanisms



Bus Architecture vs. Hub And Spoke



Strong monitoring and management capabilities



With little pinch of flexibility...

What ESB is not? •

It’s not an Application Server!



It’s not centralized nor monolithic



It’s not BPMS (Business Process Management Suite)



It’s not MOM

What’s wrong with ESB, then? For every complex problem, there is a solution that is simple, neat, and wrong. -- Henry Louis Mencken

What’s wrong with ESB?

ESB

What’s wrong with ESB? •

It looks Great!..



...But in practice - most ESBs are typical 80/20 solutions (or simple, neat and wrong)



80% of (simple) things are very easy to implement using of the shelve ESB



20% of things are extremely difficult to implement using of the shelve ESB

We have 80% of Perl6 done and we are now working on the next 80%. -- Anonymous Coward, slashdot.org, Perl 6 discussion

Examples? Excerpt from (some) ESB documentation

The Oracle Database adapter does not support the following data types: * PL/SQL TABLE * TABLE * VARRAY * OBJECT etc..

Examples? Excerpt from (some) ESB documentation

The Oracle Database adapter accepts a character data for a NUMBER field without throwing an error. In the database, the character is stored as 0.

What’s wrong with ESB? •

Lack of sound community •

“Community driven” vs. “consultants driven”



Extremely proprietary solutions



Proprietary extensions to standards

No standard or clause in a standard has a divine right of existence -- A Microsoft PKI architect explaining Microsoft's position on standards compliance.

What’s wrong with ESB? •



Focused on Vendor Background •

Application Servers Vendors base their ESB on their Application Servers



EAI Vendors base ESB on their EAI



Messaging Vendors base ESB on Message Brokers

Some solutions became ESB for one night...

The trouble is that things never get better, they just stay the same, only more so. -- Terry Pratchett, "Eric"

What’s wrong with ESB? Steve Vinoski, chief engineer of product innovation for IONA Frankly, if I were an enterprise architect today, and I were genuinely concerned about development costs, agility, and extensibility, I’d be looking to solve everything I possibly could with dynamic languages and REST, and specifically the HTTP variety of REST. I’d avoid ESBs and the typical enterprise middleware frameworks unless I had a problem that really required them (see below). I’d also try to totally avoid SOAP and WS-*.

The ESB check list • Contract first development • What does this mean • Why it’s important?

• Agility • Test Driven Development • Contiguous Integration • “Mockability”

The ESB check list •

Standard compliance • WS-* standards compliance (beware of Vendor’s bias!) • Interoperability • WS Stack standard compliance



Flexibility • REST • SOAP



Sound Community

CXF the ESB framework My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant

What's CXF • IONA Celtix + Codehouse XFire = CXF Celtix is an Open Source, Java Enterprise Service Bus and hosted in the ObjectWeb community. -- http://www.iona.com, in 2006

While Celtix has traditionally called itself an ESB, if you look at the code you'll see that Celtix has primarily focused on providing JAX-WS and WS-* support. The new project will NOT be branded as an ESB. -- http://xfire.codehaus.org/XFire+and+Celtix+Merge

What’s CXF?

• JAX-WS certified stack • Commercially Supported • Embeddable stack

IONA

• J2EE containers (BEA WLS, JBoss, IBM WebSphere, Tomcat, Oracle iAS, Apache Geronimo etc. ) • JBI (Apache Service Mix) • Standalone Spring Container

What’s CXF? WS-* compliant stack









WS-Addressing,



WS-Policy,



WS-ReliableMessaging



WS-Security

Fully integrated with Spring REST enabled framework through JAX-RS and HTTP binding

CXF architecture Transports JMS

Front-ends

Bindings

JAX-WS

Simple

JAXB

HTTP Local

Bus

Messaging / Interceptors

Aegis

JAX-WS Architecture JAXB 2

SAAJ

JAX-WS

•JAX-WS – Java API for XML WS • JSR 224 (java.xml.soap) • Web Services metadata JSR 170 (java.jws)

••JAXB Java XML Binding API •• JSR 222 (java.xml.bind) ••••Tooling • •WSDL to Java •Java to WSDL •etc... •

Tooling

• • • •

•SAAJ •SOAP with Attachments API for Java

• • •

CXF Architecture How does CXF fit into ESB landscape?

WS Stack

CXF Routing and mediation

Messaging Backbone

Adapters/Connectors

Exposing Services Seeing is believing -- American Proverb

Hello World, CXF Way...

Hello World, CXF Way...

Hello World, CXF Way • Look Ma! no XML, no generated artefacts!

• POJO service • Dead simple! Even Your Grandma’ can do it!

• Up and running - in just 19 lines of code!

What’s Wrong with this Example?

• It’s not contract first • It’s just remoting • It runs in built-in HTTP container

Real-world CXF Webservices ShipIt Inc. - Shipping service The contract

Real-world CXF Webservices ShipIt Inc. - Shipping service The contract

Real-world CXF Webservices Generating the service model

Real-world CXF Webservices Generated POJO model

Real-world CXF Webservices Generated POJO model

Real-world CXF Webservices Service Endpoint Interface

Real-world CXF Webservices Implementing the Endpoint

Real-world CXF Webservices Wiring it all together, and deploying

Real-world CXF Webservices •

What's wrong with this service? •

No value constructors

• No toString, hashCode and equals ●

XMLGregorianCalendar?



No validation



No Security

Real-world CXF Webservices •

Customizing JAXB binding via xjc plugins • Jakarta Commons Plugin • Value Constructor Plugin ●

Simple Preserve Plugin



Value Constructor Plugin



More on: ●

https://jaxb2-commons.dev.java.net/

Real-world CXF Webservices • Getting rid of XMLGregorianCalendar

Real-world CXF Webservices Adding validation and security

Real-world CXF Webservices Putting it all together

Real-world CXF Webservices Putting it all together

Real-world CXF Webservices Monitoring and managing CXF ●



Built-in JMX monitoring and managing module Exposing custom components

Real-world CXF Webservices ●

Monitoring and managing CXF

Consuming Services There are only two tragedies in life: one is not getting what one wants, and the other is getting it. -- Oscar Wilde

Consuming Services •

Generate Stubs from WSDL, as before



Use generated Client Stub



Disadvantages

• • •

No CXF fine-tuning Bloated client No Spring integration

Consuming Webservices Consuming through CXF client API

The same in Spring

Testing Services There are only two tragedies in life: one is not getting what one wants, and the other is getting it. -- Oscar Wilde

Testing services •

Service implementation is just POJO



Service can be exposed using Endpoint.publish and consumed as a standard endpoint

• •

Leads to problems with CI servers

Services can be exposed through CXF convenient API, and through local:// (in VM) transport

Real-world CXF Webservices Unit testing CXF services

Do we need ESB? • • • •

In complex scenarios... yes!

• •

Try to avoid Vendor Lock-in

But maybe You have one already? Check something that works for You Use ESB Check List when selecting concrete solution Community is important!

Questions?

Dziękuję!