NServiceBus Mule ESB Comparison

  • View
    626

  • Download
    11

  • Category

    Software

Preview:

Citation preview

intelligenceinnovationintegrity

NServiceBus / Mule ESB Comparison

February, 2015

Michael Byrne

Practice Director, Integration and Custom Solutions

mbyrne@spitfiregroup.com

Doug Gregory

Practice Director, Enterprise Architecture

dgregory@spitfiregroup.com

www.spitfiregroup.com

intelligenceinnovationintegrity

Overview

• Apples and Oranges are both food

• NServiceBus and Mule are both ESBs

intelligenceinnovationintegrity

High-Level Comparison

• Code-centric API / Framework

• One-way / request-response / publish-subscribe messaging

• Sagas for long running processes

• Good for messaging between .NET applications

NServiceBus

• Configuration Centric

• Integration-platform-as-a-service (IPAAS)

• Heterogeneous environmentMule ESB

intelligenceinnovationintegrity

NServiceBus Challenges

• Cannot necessarily be plugged directly into existing WCF

services without changes

• Web App

• Send to another tier (service tier) which then publishes

(Don’t use Publish from Web Application!).

• Command -> Event architecture

• http://www.make-awesome.com/2010/10/why-not-publish-

nservicebus-messages-from-a-web-application/

• Requires Service layers as either custom windows services,

or NServiceBus.Host.exe services.

• Easier to configure using NServiceBus Studio extensions

for Visual Studio

intelligenceinnovationintegrity

Comparative Estimates

• Independently estimated a 66% reduction in the needed

development effort compared to a implementation against an

existing NServiceBus architecture.

• Matches numbers we later learned from MuleSoft

• After initial architecture patterns are created, skill level to

apply the patterns is lower

intelligenceinnovationintegrity

Mule Connectors

• Out-of-box access to many systems

• SalesForce• Streaming API support allows for integration from behind a firewall

(Bayeux protocol based on COMET – similar to SignalR)

• ServiceNow

• SQL Server (JDBC)

• Concur

• Many More – 125+ Connectors

intelligenceinnovationintegrity

Mule Support for Microsoft Platform

With MuleSoft’s Anypoint Platform instantly access a large library of Microsoft products and enable cross-platform connectivity:

intelligenceinnovationintegrity

Vision for developer experienceCall .NET assets in the context of

a Mule flow

Build and debug integrationcomponents in VS.NET

intelligenceinnovationintegrity

.Vision for Microsoft Platform

RESTful APIsSOAP APIs

RAML for .NET (Coming Soon)

AMQP Connector

WCF/JAX Support

Visual Studios Designer Integration(coming soon)

BizTalk Migrator(coming Soon)

MSMQ Connector

.NET Connector

Microsoft Application Connectors (Dynamics, SharePoint, SQL Server)

intelligenceinnovationintegrity

Scenario – Integration with

SalesForce

• NServiceBus

• Connectivity• Need a web application listener exposed through the firewall to

receive SalesForce events. Follow Command – Event pattern to

handle events in Services tier.

• or a custom implementation of Bayeux protocol to receive streaming

events, AND a custom Windows Service for polling implementation to

guarantee message reliability

• API• Need to implement custom code to call SalesForce APIs

• Mule

• Connectivity• Add an endpoint for streaming.

• Add a polling endpoint for reliability

• API• SalesForce connector provides extremely easy / no-code API access

intelligenceinnovationintegrity

Scenario – Integration with

SalesForce – Flows

intelligenceinnovationintegrity

Scenario – Integration with

SalesForce - Upsert

intelligenceinnovationintegrity

Scenario – Integration with

SalesForce – Streaming Flow

intelligenceinnovationintegrity

Scenario – Integration with

SalesForce – Polling Flow

intelligenceinnovationintegrity

Scenario - Integration with COTS

Database

• May not be able to have COTS send an NServiceBus

message

• NServiceBus

• Need a scheduled polling solution, either NServiceBus

scheduler, or a custom Windows Service.

• Need a mechanism to track progress (watermark).

• Need to implement database access code

• Need to create an consume events and translate to APIs

in various systems

• Mule

• Built-in polling / watermarking

• Built-in JDBC access / infrastructure

• Datamapper can map data between message payloads

and APIs

intelligenceinnovationintegrity

Scenario – Integration with COTS

Database – Polling

intelligenceinnovationintegrity

Scenario – Integration with COTS

Database – Polling XML

intelligenceinnovationintegrity

Scenario – Integration with COTS

Database – Data Mapper

intelligenceinnovationintegrity

Staged Event Driven Architecture

(SEDA)

• Each flow is treated as a configurable Stage

http://www.mulesoft.org/documentation/display/current/Tuning+Performance

intelligenceinnovationintegrity

Mule ESB - Enterprise

• Self-contained 480 MB distribution

• Includes an integrated management console website

intelligenceinnovationintegrity

CloudHub

• Lighter set of Admin features

• Requires network connections back into SQL databases

intelligenceinnovationintegrity

AnyPoint API Platform

(RAML developer experience inside VS.NET IDE)

Anypoint Studio

API Designer

API Manager

API Notebook

intelligenceinnovationintegrity

RAML Example

Mule is working on adding RAML design to Visual Studio

intelligenceinnovationintegrity

Mule for C# Developers

AnyPoint Studio

•Based on Eclipse

•Source Code integration

•No custom code integration

MEL

•Mule Expression Language (based on MVEL / MVFLEX Expression Language)

•Java / JavaScript syntax

Groovy

•Dynamic Language based on Java

Spring

•Dependency Injection

Maven

•Build and Template Management

Java

•Writing simple POJOs instead of POCOs

•Helper classes

•Classes to override and extend behavior

intelligenceinnovationintegrity

Platform Tools Comparison

NServiceBus Mule ESB

Code Centric Configuration Centric

C# .NET Java / Invoke .NET Business Logic

Visual Studio AnyPoint Studio (Eclipse)

MSMQ (other pluggableTransports)

MSMQJMS / AMQP (ActiveMQ / RabbitMQ, etc)

MS Build Maven

Unity / Castle Windsor / Spring.NET / StructureMap / Autofac / Niject / other

Spring (Beans)

NServiceBus.Host.Exe or custom service

Mule ESB / Mule Management Console

Windows Clustering Active-Active Shared Memory Clustering

intelligenceinnovationintegrity

Spitfire Lessons Learned

NServiceBus

• Good solution for integrating custom .NET applications where you control the code

• Integrating with Cloud or COTS solutions where you don’t control the code can require a lot of custom code to get messages onto the ESB

Mule ESB

• Good solution if you have a heterogeneous environment, or know you will need to integrate with Cloud or COTS in the future

• A working Mule application can be developed through AnyPoint Studio with no Java code / Spring / Maven / Groovy

• Minimize Java dependencies by engaging specific resources or outside help with basic setup / architecture, then leverage that architecture across configuration-based flows.

intelligenceinnovationintegrity

Questions / Discussion

???