12.05.2015 Views

Introduction to Application Integration RoadMap RoadMap

Introduction to Application Integration RoadMap RoadMap

Introduction to Application Integration RoadMap RoadMap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Introduction</strong> <strong>to</strong><br />

<strong>Application</strong> <strong>Integration</strong><br />

<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

• Conclusions


“Acme corp. will help their cus<strong>to</strong>mers<br />

improve their minds, bodies, and spirits<br />

through books about the oriental culture .”<br />

A business opportunity<br />

• You has been tasked with developing an<br />

e-commerce portal <strong>to</strong> service Acme Corp.<br />

business across the globe<br />

Your solution<br />

• Process: AUP, EUP, UP, XP, SCRUM …<br />

• Model notations<br />

• Hybrid architectural style<br />

– Client / Server<br />

– Three Layers<br />

• Patterns<br />

• My portfolio<br />

• …


What about technologies?<br />

• It depends on<br />

– My Culture developing Web <strong>Application</strong>s<br />

…<br />

–Acme Corp Enterprise<br />

Architecture<br />

<strong>Application</strong> <strong>Integration</strong><br />

ECM<br />

CRM<br />

E-commerce<br />

Human<br />

Resources<br />

IRV<br />

Accounting<br />

S<strong>to</strong>re<br />

Billing<br />

Orders<br />

Processing<br />

<strong>Application</strong> <strong>Integration</strong><br />

IRV<br />

ECM<br />

CRM<br />

E-commerce<br />

Ficheros, Carga de da<strong>to</strong>s,<br />

RPC, CORBA, Java RMI,<br />

DCOM,<br />

.Net Remoting, ...<br />

Human<br />

Resources<br />

Accounting<br />

S<strong>to</strong>re<br />

Billing<br />

Orders<br />

Processing


Do not forget external systems!<br />

Visa,<br />

Mastercard...<br />

IRV<br />

ECM<br />

E-commerce<br />

CRM<br />

Ficheros, Carga de da<strong>to</strong>s,<br />

RPC, CORBA, Java RMI,<br />

DCOM,<br />

.Net Remoting, ...<br />

Human<br />

Resources<br />

Logistic<br />

Accounting<br />

S<strong>to</strong>re<br />

Billing<br />

Orders<br />

Processing<br />

<strong>Integration</strong> spaghetti!!<br />

A costly task<br />

IBM Global Services Report


<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

Decision criteria<br />

• <strong>Application</strong> coupling<br />

• Other criteria:<br />

– Intrusiveness<br />

– Technology selection<br />

– Data format<br />

– Data timeliness<br />

– Data or functionality<br />

– Remote Communication<br />

– …<br />

Loose Coupling<br />

“<strong>to</strong> reduce the assumptions two parties<br />

(components, applications, services,<br />

programs, users) make about each other<br />

when they exchange information”


• File Transfer<br />

• Shared Database<br />

<strong>Integration</strong> styles<br />

• Remote Procedure Call<br />

• Messaging<br />

<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

– File transfer<br />

– Shared Database<br />

– Remote Procedure Call<br />

– Messaging<br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

File Transfer<br />

• One application writes a file that another<br />

later reads<br />

e-commerce<br />

Share<br />

d data<br />

Order Processing<br />

System


• A low cost solution:<br />

Characteristics<br />

– It is simple<br />

– Files are a universal s<strong>to</strong>rage mechanism<br />

– Integra<strong>to</strong>rs need no knowledge of the<br />

internals of applications <strong>to</strong> integrate<br />

• <strong>Application</strong>s need <strong>to</strong> agree on:<br />

– Filename and location<br />

– Format of the file (XML)<br />

– Timing of when it will be written and read, and<br />

who will delete the file (synchronisation)<br />

Side Effects<br />

• Allows <strong>to</strong> keep the applications well<br />

decoupled but at the cost of timeliness<br />

(Staleness of the data)<br />

• Enable applications <strong>to</strong> share their data but<br />

not their functionality<br />

• May not enforce data format sufficiently<br />

(Semantic dissonance)<br />

<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

– File transfer<br />

– Shared Database<br />

– Remote Procedure Call<br />

– Messaging<br />

• Software Oriented Architecture (SOA)<br />

• Conclusions


Shared Database<br />

• Integrate applications by having them<br />

s<strong>to</strong>re their data in a single Shared<br />

Database, and define the schema of the<br />

database <strong>to</strong> handle all the needs of the<br />

different applications<br />

Shared<br />

data<br />

Characteristics<br />

• SQL-based relational databases<br />

• All application development platforms can<br />

work with SQL<br />

• Transaction management systems<br />

• <strong>Application</strong>s are always consistent all of<br />

the time<br />

Side Effects<br />

• <strong>Application</strong>s coupled <strong>to</strong> the database<br />

• Semantic dissonance<br />

• Performance bottleneck<br />

• Can cause deadlocks<br />

• The unified schema can result in a schema that<br />

programmers find difficult <strong>to</strong> work with<br />

• Most packaged applications won't work with a<br />

schema other than their own<br />

• Software vendors usually reserve the right <strong>to</strong><br />

change the schema with every new release of<br />

the software


<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

– File transfer<br />

– Shared Database<br />

– Remote Procedure Call<br />

– Messaging<br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

Remote Procedure Call<br />

• Have each application expose some of its<br />

procedures so that they can be called<br />

remotely, and have applications invoke<br />

those <strong>to</strong> initiate behavior and exchange<br />

data<br />

Call<br />

e-commerce<br />

Result<br />

Order Processing<br />

System<br />

RPC Execution Model<br />

• Standar model: synchronous method-call<br />

semantics (request/reply)<br />

• Other models: Doors, Asynchronous RPC,<br />

Callback RPC, Batch RPC, Broadcast<br />

RPC


Some RPC technologies<br />

• Basic RPC: Sun RPC, DCE RPC, Xerox<br />

Courier<br />

• Extended RPC: CORBA, .NET Remoting,<br />

Java RMI, XML-RPC, COM, …<br />

Characteristics<br />

• RPC applies the principle of encapsulation<br />

<strong>to</strong> integrating applications which allows<br />

each application <strong>to</strong> maintain the integrity of<br />

the data it owns (reduces coupling)<br />

• It deals with semantic dissonance by<br />

allowing applications <strong>to</strong> provide multiple<br />

interfaces <strong>to</strong> the same data<br />

Side Effects<br />

• <strong>Application</strong>s are still fairly tightly coupled<br />

because RPC is for building distributed<br />

applications and not for integrating<br />

applications


<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

– File transfer<br />

– Shared Database<br />

– Remote Procedure Call<br />

– Messaging<br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

The book<br />

Enterprise <strong>Integration</strong> Patterns: Designing,<br />

Building, and Deploying Messaging<br />

Solutions By Gregor Hohpe, Bobby Woolf<br />

Messaging<br />

• Each application connect <strong>to</strong> a common<br />

messaging system, and exchange data<br />

and invoke behavior using messages


Messaging<br />

It sounds me as the<br />

File Transfer style<br />

Messaging core concepts (1)<br />

• Messages<br />

– An a<strong>to</strong>mic packet of data that can be<br />

transmitted on a channel<br />

• Channels<br />

– A virtual pipe that connects a sender <strong>to</strong> a<br />

receiver<br />

• EndPoints<br />

– A layer of code (wrapper) that knows both<br />

how the application works and how the<br />

messaging system works, enabling the<br />

application <strong>to</strong> send and receive messages<br />

Messaging core concepts (2)<br />

• Routing<br />

– If the sender does not know where <strong>to</strong> address<br />

the data, it can send the data <strong>to</strong> a Message<br />

Router, which will direct the data <strong>to</strong> the<br />

proper receiver<br />

• Transformation<br />

– If the sender and receiver do not agree on the<br />

data format, the sender can direct the data <strong>to</strong><br />

a Message Transla<strong>to</strong>r that will convert the<br />

data <strong>to</strong> the receiver's format and then forward<br />

the data <strong>to</strong> the receiver


Patterns (1)<br />

• Messaging channels Patterns<br />

– Point-<strong>to</strong>-Point Channel, Publish-Subscribe Channel,<br />

Datatype Channel, Invalid Message Channel, Dead Letter<br />

Channel, Guaranteed Delivery, Channel Adapter, Messaging<br />

Bridge, Message Bus<br />

• Message Construction Patterns<br />

– Command Message, Document Message, Event Message,<br />

Request-Reply, Return Address, Correlation Identifier, Message<br />

Sequence, Message Expiration, Format Indica<strong>to</strong>r<br />

• Message Routing Patterns<br />

– Content-Based Router, Message Filter, Dynamic Router,<br />

Recipient List, Splitter, Aggrega<strong>to</strong>r, Resequencer, Composed<br />

Message Processor, Scatter-Gather, Routing Slip, Process<br />

Manager, Message Broker<br />

Patterns (2)<br />

• Message Transformation Patterns<br />

– Envelope Wrapper, Content Enricher, Content Filter, Claim<br />

Check, Normalizer, Canonical Data Model<br />

• Messaging Endpoints Patterns<br />

– Messaging Gateway, Messaging Mapper, Transactional Client,<br />

Polling Consumer, Event-Driven Consumer, Competing<br />

Consumers, Message Dispatcher, Selective Consumer, Durable<br />

Subscriber, Idempotent Receiver, Service Activa<strong>to</strong>r<br />

• System Management Patterns<br />

– Control Bus, De<strong>to</strong>ur, Wire Tap, Message His<strong>to</strong>ry, Message<br />

S<strong>to</strong>re, Smart Proxy, Test Message, Channel Purger<br />

Messaging Channels Patterns<br />

Point-<strong>to</strong>-Point Channel<br />

• How can the caller be sure that exactly<br />

one receiver will receive the document or<br />

perform the call?<br />

• Send the message on a Point-<strong>to</strong>-Point<br />

Channel, which ensures that only one<br />

receiver will receive a particular message.


Messaging Channels Patterns<br />

Publish-Subscribe Channel<br />

• How can the sender broadcast an event <strong>to</strong><br />

all interested receivers?<br />

• Send the event on a Publish-Subscribe<br />

Channel, which delivers a copy of a<br />

particular event <strong>to</strong> each receiver<br />

Messaging Channels Patterns<br />

Channel Adapter<br />

• How can you connect an application <strong>to</strong> the<br />

messaging system so that it can send and<br />

receive messages?<br />

• Use a Channel Adapter that can access the<br />

application's API or data <strong>to</strong> publish messages on<br />

a channel based on this data and that likewise<br />

can receive messages and invoke functionality<br />

inside the application<br />

Messaging Channels Patterns<br />

Message Bus<br />

• What architecture enables separate applications<br />

<strong>to</strong> work <strong>to</strong>gether but in a decoupled fashion such<br />

that applications can be easily added or<br />

removed without affecting the others?<br />

• Structure the connecting middleware between<br />

these applications as a Message Bus that<br />

enables them <strong>to</strong> work <strong>to</strong>gether using messaging


Message Construction Patterns<br />

Command/Document/Event Message<br />

• How can messaging be used <strong>to</strong> invoke a<br />

procedure transfer data/transmit events between<br />

applications?<br />

• Use a Command Message/Document/Event<br />

Message<br />

Message Routing Patterns<br />

Message Broker<br />

• How can you decouple the destination of a message<br />

from the sender and maintain central control over the<br />

flow of messages?<br />

• Use a central Message Broker that can receive<br />

messages from multiple destinations, determine the<br />

correct destination, and route the message <strong>to</strong> the correct<br />

channel. Implement the internals of the Message Broker<br />

using other message routers<br />

Message Transformation<br />

Patterns<br />

Canonical Data Model<br />

• How can you minimize dependencies when<br />

integrating applications that use different data<br />

formats?<br />

• Design a Canonical Data Model that is<br />

independent from any specific application.<br />

Require each application <strong>to</strong> produce and<br />

consume messages in this common format


Messaging Endpoints Patterns<br />

Service Activa<strong>to</strong>r<br />

• How can an application design a service <strong>to</strong> be<br />

invoked both via various messaging<br />

technologies and via non-messaging<br />

techniques?<br />

• Design a Service Activa<strong>to</strong>r that connects the<br />

messages on the channel <strong>to</strong> the service being<br />

accessed<br />

Characteristics<br />

• Messaging makes applications loosely<br />

coupled by communicating<br />

asynchronously<br />

• The communication is reliable because the<br />

two applications do not have <strong>to</strong> be running<br />

at the same time<br />

• The messaging system is the responsible<br />

for transferring data from one application<br />

<strong>to</strong> another, so the applications can focus<br />

on what data they need <strong>to</strong> share as<br />

opposed <strong>to</strong> how <strong>to</strong> share it<br />

Some Messaging technologies<br />

• J2EE JMS Reference Implementation<br />

• IBM WebSphere MQ (Implementation of<br />

JMS)<br />

• Microsoft MSMQ<br />

Note: Most Solutions on Enterprise<br />

<strong>Application</strong> <strong>Integration</strong> are based on<br />

messaging technologies


<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

What is SOA?<br />

• What if you could change the elements of<br />

your EA in relation <strong>to</strong> changes in your<br />

business without enormous expenditures<br />

of time and money?<br />

Just play Lego EA!!<br />

Service<br />

But, What is SOA?


<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

– Reference Architecture<br />

– Radiography of a SOA Compliant Enterprise<br />

• Conclusions<br />

SOA and Services<br />

“A Service-Oriented Architecture is a<br />

software architecture that is based on the<br />

key concepts of an application frontend,<br />

service, service reposi<strong>to</strong>ry, and service<br />

bus”<br />

“A service consists of a contract, one or<br />

more interfaces, and an implementation”<br />

Service structure<br />

End-points<br />

End-Point<br />

Dirección<br />

Servicio<br />

Implementación<br />

Ligadura<br />

Contra<strong>to</strong>


Kinds of services<br />

Complexity<br />

State<br />

Frequency of<br />

Change<br />

Reusability<br />

Manda<strong>to</strong>ry<br />

Fronten<br />

d<br />

Basic<br />

Intermedi<br />

ary<br />

Process<br />

Public<br />

Deployment layers<br />

Web Server<br />

<strong>Application</strong> Server<br />

Enterprise layer<br />

Process layer<br />

Intermediary layer<br />

Basic layer<br />

Operating System<br />

Access <strong>to</strong> services<br />

Enterprise Service Bus


ESB is a meta-bus<br />

RPC<br />

Messaging<br />

FTP, …<br />

<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

– Reference Architecture<br />

– Radiography of a SOA Compliant<br />

Enterprise<br />

• Conclusions<br />

SOA Compliant Enterprise<br />

Enterprise A<br />

Presentación Proceso Lógica Da<strong>to</strong>s<br />

Enterprise B<br />

Presentación<br />

Proceso<br />

passport.com


<strong>RoadMap</strong><br />

• <strong>Introduction</strong><br />

• Enterprise <strong>Application</strong> <strong>Integration</strong><br />

• Software Oriented Architecture (SOA)<br />

• Conclusions<br />

Conclussions<br />

• EAI is a costly, difficulty task<br />

• RPC and Messaging systems are simply<br />

instances of enabling technology that can<br />

make EAI happen<br />

• Secondary Effects of SOA provides EAI:<br />

– ESB integrates EAI enabling technologies<br />

(meta-bus)<br />

– Service concept<br />

Thank you!<br />

e-mail: jose.arjona @diesia.uhu.es<br />

web: http://www.uhu.es/jose.arjona

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!