SlideShare a Scribd company logo
1 of 24
PROBLEMS OF
MIXING SOA AND EAI
APPROACHES
Lessons learned from practical implementation.
Strong knowledge
and «a-can-do»
attitude
Integration: Definition of the “Old” problem
3
Spiral, 1969 (ended)
Boing Dream Chaser, 2017 (planned)
Three reasons to shake the dust off
"Studies have shown that software specialists spend
about 40 to 50 percent of their time on avoidable
rework rather than on what they call value-added
work, which is basically work that's done right the first
time..." - Robert Charette, IEEE Spectrum, Sept. 2005
CAUTION !
INTEGRATION
AHEAD
1.SOA is dead (again).
2.SOA is the advanced
(or more expensive) form of
integration
3. Recent project (disclaimer !)
In 2001, Larry Ellison announced the following:
Oracle saved $1 billion by implementing and using
its own business applications.
"It's like if you want to buy a car. Would you get an engine
from BMW, a chassis from Jaguar, windshield wipers from
Ford? No, of course not. Right now with the software that's
out there, you need a glue gun—or hire all these
consultants to put it together. They call it best of breed. I
call it a mess. We want to put an end to that."
2.1
2.2
2.3
Requirements for… Integration ?
Employee EBO
QDO1 QDO2
HR ACCOUNTING
Integration – good for the batch operation
SOA – real-time message/object propagationMs1
• No available Interfaces
- No data model
- No MEP
- No protocol
- No policy
• No commonly
recognised Events
• No references to the
Processes
Employee Service
Where to start ? Speculating on the building block
Maintain homogeneous technical infrastructureMs2
MDM
Storage
Service Logic
Service
Contract
12
2
1
Employee Service
How to understand
negative coupling
MDM
Storage
Service Logic
Service
Contact
TP1 TP2
Employee
message
1
File Poller
TPn
OFM Adapter Framework
App Farm
2
TP Subscriber TP Sender Ms3
Async protocol does not
denote decoupling
Ms4
Mixing delivery technology
do not decouple from core
technology stack
MDM
Storage
Employee Service
Service Logic
Service
Contract
3
TP1 TP2 TPn
TP subscribers
App Farm
Publish
4
Polling changes: Direct Changes
5
6
Event Delivery network: Alternative FSO
XSL transform
Accepted Ignored
Ms5
TP subscribers management
denote coupling (or
decentralisation)
ABCS Recap
9
Behind the alternative BINDING.JCA-11614, BINDING.JCA11812
10
2
1
A1
A2
DWH
MDM
Employee
API
Tables
File
dump
API
Tables
FSO
Boxes
JMS Topic
JMS Topic
Service
Logic
Interchange channel I
Interchange channel II
Adapter Framework
Interchange
channel III
AD/LDAP
User accounts
Interchange
channel IV
Adapter Framework
Event Delivery
Framework (and CDC)
CDCCDC
Legend
SRC Target
Target
Target
Target
Service at consistent
state(source mode)
Creeping… The Common model will be implemented in
the Oracle middle layerMs6
Non-invasive
Invasive
A2
A1
MDM
Employee
API
Tables
File
dumpAPI
Tables
FSO
Boxes
DB Adapter
Service
Logic
Interchange channel I
Interchange channel II
Adapter Framework
Interchange
channel III
Adapter Framework
Event Delivery
Framework (and CDC)
CDCCDC
Legend
ESR
Target
Source
Service at consistent
state(source mode)
FSO Adapter
FSO Adapter
DB AdaptersI* File
dump
FSO
Boxes
Adapter Framework
SELECT * FROM old_version
MINUS SELECT * FROM
new_version;
• it requires that the new version of the entire table be transported to the staging database, not just the change data, thereby
greatly increasing transport costs.
• The computational cost of performing the two MINUS operations on the staging database can be very high.
• Table differencing cannot capture data that have reverted to their old values.
• There is no way to determine which changes were made as part of the same transaction.
CDC Implementation options: ESR Role
A2A1
MDM
Employee
API
Tables
File
dumpExport
Procedurer
FSO
Boxes
DB Adapter
Service
Logic
Interchange channel I
Interchange channel II
Adapter Framework
Interchange
channel III
Adapter Framework
Event Delivery Framework
(EDNand CDC)
CDC
XSLT 2.0
ESR
Target
Source
Service at consistent
state(source mode)
FSO Adapter
FSO Adapter
DB AdaptersI*
Import
File
DVM
Some Black Magic
FF binary data
Ok, we got the events, now what ?
14
ContractPersonCompanyPayroll
A1 A2
ABO1 ABO2
List of all
supported events
per domain:
Person.hired
Peson.retired
Payroll.salary.raised
Payroll.account.change
d
EBO
Message Guide
EBO XSD
Message
Implementation
Guide (MIG)
MIG: Process1
MIG: Process2
MIG: Process3
MIG: ProcessN
ContractPersonCompanyPayroll
A1 A2
ABO1 ABO2
List of all
supported events
per domain:
Person.hired
Peson.retired
Payroll.salary.raised
Payroll.account.changed
List of all fields
required per
events
EBO
List of all
supported
elements:
Strong
relevance to
existing public
standards
DB Schema DDL
Civil Status
Changed
ChangeOffice
Promoted
SalaryRaise
ContractPersonCompany
ProbationPeriodEnde
d
Payroll Name Changed
BankAccountChange
SuperiorChanged
SFO
A1 A2
Start End
FSO FSO
ContractPersonCompanyPayroll
A1 A2
ABO1 ABO2
List of all
supported events
per domain:
Person.hired
Peson.retired
Payroll.salary.raised
Payroll.account.change
d
EBO
Message Guide
EBO XSD
Message
Implementation
Guide (MIG)
MIG: Process1
MIG: Process2
MIG: Process3
MIG: ProcessN
BPEL
BPEL
BPEL
BPEL
XSLT1
XSLT2
XSLT3
XSLT4
MDM DB
SAF
XSLT
One event – One process
Ms7
Problems summary
Problem description Phase Misconceptions
Inner-domain disparities Analysis Ms1
Service logic boundaries Analysis MS1, Ms2
Service granularity Analysis Ms2
Events recognition and identification Analysis Ms4, Ms6
Service Logic decentralisation Service Modelling Ms5
Protocols disparities Implementation Ms3, Ms4
Irrationally thick adapter layer Implementation Ms6
“Magic tricks” inside the adapter layer Implementation Ms6
Event-to-process linking Analysis Ms7
19
Promises I broke … (EAI Ideas, PERA Enterprise Integration Principles)
20
Statefulness (+20% maintenance costs)
Autonomy(+30% project adding new TP)
Composability (-30%*0 next project )
Reusability Standardized Contract (+50% dev gen, +100% test)
Discoverability
Abstraction(20% dev
core logic)
Loose Coupling (+30% Regression test)conflicts
conflicts
supports
Limits
supports
supports
supports
expressed
supports
supportssupports
Takeout 1: Base64 for FlatFixed (embedded Java)
21
oracle.xml.parser.v2.XMLElement input = ((oracle.xml.parser.v2.XMLElement)
getVariableData(«InboundFF",
"opaque",
"/ns17:opaqueElement"));
java.lang.String input_str = input.getTextContent();
oracle.xml.parser.v2.XMLDocument xmlDoc = input.getDocument();
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
try {
xmlDoc.print(baos );
java.lang.String xml_result = baos.toString("UTF-16");
oracle.soa.common.util.Base64Encoder encoder = new oracle.soa.common.util.Base64Encoder();
java.lang.String encoded = null;
java.lang.String strencoded = null;
encoded = encoder.encode(xml_result);
strencoded = encoder.encode(input_str.trim());
setVariableData(«OutboundFFEncoded",strencoded);
baos.close();
} catch (java.io.IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Takeout 2: ESR Core Hierarchy
22
Takeout 3: NDS(IoC) Rule Engine
23
query_str := 'SELECT ' || oper_in || ' from ' || arg1_in || ' WHERE ' || arg2_in || '= ';
query_str := query_str || ':id ';
OPEN crsr FOR query_str USING arg3_in;
-- OPEN crsr FOR query_str;
LOOP
FETCH crsr INTO retval;
EXIT WHEN crsr%NOTFOUND;
-- process row here
END LOOP;
CLOSE crsr;
RETURN retval;
EXECUTE IMMEDIATE query_str INTO retval USING arg3_in;
IF new_retval IS NULL AND cur_retval IS NULL THEN
c_msgtext := 'Extracted values are NULL and cannot be compared ';
v_compstatus :='undifined';
v_baseoperation :='O';
ELSIF new_retval IS NULL AND cur_retval IS NOT NULL THEN
v_compstatus :='delete';
v_baseoperation :='D';
ELSIF new_retval IS NOT NULL AND cur_retval IS NULL THEN
v_operation := '.create';
v_baseoperation :='I';
ELSIF UPPER(new_retval)= UPPER(cur_retval) THEN
v_compstatus :='no change';
v_baseoperation :='O';
ELSIF (new_retval IS NOT NULL AND cur_retval IS NOT NULL) AND (UPPER(new_retval)<> UPPER(cur_retval)) THEN
v_compstatus :='.update';
v_baseoperation :='U';
END IF;
24
A narrow escape this time, mate

More Related Content

Similar to Integration&SOA_v0.2

Declarative Multilingual Information Extraction with SystemT
Declarative Multilingual Information Extraction with SystemTDeclarative Multilingual Information Extraction with SystemT
Declarative Multilingual Information Extraction with SystemT
Laura Chiticariu
 

Similar to Integration&SOA_v0.2 (20)

Patterns for distributed systems
Patterns for distributed systemsPatterns for distributed systems
Patterns for distributed systems
 
Practical machine learning
Practical machine learningPractical machine learning
Practical machine learning
 
Why Cloud Management Makes Sense
Why Cloud Management Makes SenseWhy Cloud Management Makes Sense
Why Cloud Management Makes Sense
 
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
 
Serverless machine learning architectures at Helixa
Serverless machine learning architectures at HelixaServerless machine learning architectures at Helixa
Serverless machine learning architectures at Helixa
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
 
OSGi DevCon US 2010 Review
OSGi DevCon US 2010 ReviewOSGi DevCon US 2010 Review
OSGi DevCon US 2010 Review
 
Linking Programming models between Grids, Web 2.0 and Multicore
Linking Programming models between Grids, Web 2.0 and Multicore Linking Programming models between Grids, Web 2.0 and Multicore
Linking Programming models between Grids, Web 2.0 and Multicore
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .net
 
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSEMODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
Lição prova professor coordenador
Lição prova professor coordenadorLição prova professor coordenador
Lição prova professor coordenador
 
Glue con2011 future_of_net_systems
Glue con2011 future_of_net_systemsGlue con2011 future_of_net_systems
Glue con2011 future_of_net_systems
 
What's new in spark 2.0?
What's new in spark 2.0?What's new in spark 2.0?
What's new in spark 2.0?
 
Declarative Multilingual Information Extraction with SystemT
Declarative Multilingual Information Extraction with SystemTDeclarative Multilingual Information Extraction with SystemT
Declarative Multilingual Information Extraction with SystemT
 
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
On Modeling and Testing When Unpredictability Becomes the Pattern (April 2nd,...
 
The Enterprise Cloud
The Enterprise CloudThe Enterprise Cloud
The Enterprise Cloud
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
powershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonpowershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-london
 
ThesisProposal
ThesisProposalThesisProposal
ThesisProposal
 

Integration&SOA_v0.2

  • 1. PROBLEMS OF MIXING SOA AND EAI APPROACHES Lessons learned from practical implementation.
  • 3. Integration: Definition of the “Old” problem 3 Spiral, 1969 (ended) Boing Dream Chaser, 2017 (planned)
  • 4. Three reasons to shake the dust off "Studies have shown that software specialists spend about 40 to 50 percent of their time on avoidable rework rather than on what they call value-added work, which is basically work that's done right the first time..." - Robert Charette, IEEE Spectrum, Sept. 2005 CAUTION ! INTEGRATION AHEAD 1.SOA is dead (again). 2.SOA is the advanced (or more expensive) form of integration 3. Recent project (disclaimer !) In 2001, Larry Ellison announced the following: Oracle saved $1 billion by implementing and using its own business applications. "It's like if you want to buy a car. Would you get an engine from BMW, a chassis from Jaguar, windshield wipers from Ford? No, of course not. Right now with the software that's out there, you need a glue gun—or hire all these consultants to put it together. They call it best of breed. I call it a mess. We want to put an end to that." 2.1 2.2 2.3
  • 5. Requirements for… Integration ? Employee EBO QDO1 QDO2 HR ACCOUNTING Integration – good for the batch operation SOA – real-time message/object propagationMs1 • No available Interfaces - No data model - No MEP - No protocol - No policy • No commonly recognised Events • No references to the Processes
  • 6. Employee Service Where to start ? Speculating on the building block Maintain homogeneous technical infrastructureMs2 MDM Storage Service Logic Service Contract 12 2 1
  • 7. Employee Service How to understand negative coupling MDM Storage Service Logic Service Contact TP1 TP2 Employee message 1 File Poller TPn OFM Adapter Framework App Farm 2 TP Subscriber TP Sender Ms3 Async protocol does not denote decoupling Ms4 Mixing delivery technology do not decouple from core technology stack
  • 8. MDM Storage Employee Service Service Logic Service Contract 3 TP1 TP2 TPn TP subscribers App Farm Publish 4 Polling changes: Direct Changes 5 6 Event Delivery network: Alternative FSO XSL transform Accepted Ignored Ms5 TP subscribers management denote coupling (or decentralisation)
  • 10. Behind the alternative BINDING.JCA-11614, BINDING.JCA11812 10 2 1
  • 11. A1 A2 DWH MDM Employee API Tables File dump API Tables FSO Boxes JMS Topic JMS Topic Service Logic Interchange channel I Interchange channel II Adapter Framework Interchange channel III AD/LDAP User accounts Interchange channel IV Adapter Framework Event Delivery Framework (and CDC) CDCCDC Legend SRC Target Target Target Target Service at consistent state(source mode) Creeping… The Common model will be implemented in the Oracle middle layerMs6 Non-invasive Invasive
  • 12. A2 A1 MDM Employee API Tables File dumpAPI Tables FSO Boxes DB Adapter Service Logic Interchange channel I Interchange channel II Adapter Framework Interchange channel III Adapter Framework Event Delivery Framework (and CDC) CDCCDC Legend ESR Target Source Service at consistent state(source mode) FSO Adapter FSO Adapter DB AdaptersI* File dump FSO Boxes Adapter Framework SELECT * FROM old_version MINUS SELECT * FROM new_version; • it requires that the new version of the entire table be transported to the staging database, not just the change data, thereby greatly increasing transport costs. • The computational cost of performing the two MINUS operations on the staging database can be very high. • Table differencing cannot capture data that have reverted to their old values. • There is no way to determine which changes were made as part of the same transaction. CDC Implementation options: ESR Role
  • 13. A2A1 MDM Employee API Tables File dumpExport Procedurer FSO Boxes DB Adapter Service Logic Interchange channel I Interchange channel II Adapter Framework Interchange channel III Adapter Framework Event Delivery Framework (EDNand CDC) CDC XSLT 2.0 ESR Target Source Service at consistent state(source mode) FSO Adapter FSO Adapter DB AdaptersI* Import File DVM Some Black Magic FF binary data
  • 14. Ok, we got the events, now what ? 14
  • 15. ContractPersonCompanyPayroll A1 A2 ABO1 ABO2 List of all supported events per domain: Person.hired Peson.retired Payroll.salary.raised Payroll.account.change d EBO Message Guide EBO XSD Message Implementation Guide (MIG) MIG: Process1 MIG: Process2 MIG: Process3 MIG: ProcessN
  • 16. ContractPersonCompanyPayroll A1 A2 ABO1 ABO2 List of all supported events per domain: Person.hired Peson.retired Payroll.salary.raised Payroll.account.changed List of all fields required per events EBO List of all supported elements: Strong relevance to existing public standards DB Schema DDL
  • 18. ContractPersonCompanyPayroll A1 A2 ABO1 ABO2 List of all supported events per domain: Person.hired Peson.retired Payroll.salary.raised Payroll.account.change d EBO Message Guide EBO XSD Message Implementation Guide (MIG) MIG: Process1 MIG: Process2 MIG: Process3 MIG: ProcessN BPEL BPEL BPEL BPEL XSLT1 XSLT2 XSLT3 XSLT4 MDM DB SAF XSLT One event – One process Ms7
  • 19. Problems summary Problem description Phase Misconceptions Inner-domain disparities Analysis Ms1 Service logic boundaries Analysis MS1, Ms2 Service granularity Analysis Ms2 Events recognition and identification Analysis Ms4, Ms6 Service Logic decentralisation Service Modelling Ms5 Protocols disparities Implementation Ms3, Ms4 Irrationally thick adapter layer Implementation Ms6 “Magic tricks” inside the adapter layer Implementation Ms6 Event-to-process linking Analysis Ms7 19
  • 20. Promises I broke … (EAI Ideas, PERA Enterprise Integration Principles) 20 Statefulness (+20% maintenance costs) Autonomy(+30% project adding new TP) Composability (-30%*0 next project ) Reusability Standardized Contract (+50% dev gen, +100% test) Discoverability Abstraction(20% dev core logic) Loose Coupling (+30% Regression test)conflicts conflicts supports Limits supports supports supports expressed supports supportssupports
  • 21. Takeout 1: Base64 for FlatFixed (embedded Java) 21 oracle.xml.parser.v2.XMLElement input = ((oracle.xml.parser.v2.XMLElement) getVariableData(«InboundFF", "opaque", "/ns17:opaqueElement")); java.lang.String input_str = input.getTextContent(); oracle.xml.parser.v2.XMLDocument xmlDoc = input.getDocument(); java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); try { xmlDoc.print(baos ); java.lang.String xml_result = baos.toString("UTF-16"); oracle.soa.common.util.Base64Encoder encoder = new oracle.soa.common.util.Base64Encoder(); java.lang.String encoded = null; java.lang.String strencoded = null; encoded = encoder.encode(xml_result); strencoded = encoder.encode(input_str.trim()); setVariableData(«OutboundFFEncoded",strencoded); baos.close(); } catch (java.io.IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }
  • 22. Takeout 2: ESR Core Hierarchy 22
  • 23. Takeout 3: NDS(IoC) Rule Engine 23 query_str := 'SELECT ' || oper_in || ' from ' || arg1_in || ' WHERE ' || arg2_in || '= '; query_str := query_str || ':id '; OPEN crsr FOR query_str USING arg3_in; -- OPEN crsr FOR query_str; LOOP FETCH crsr INTO retval; EXIT WHEN crsr%NOTFOUND; -- process row here END LOOP; CLOSE crsr; RETURN retval; EXECUTE IMMEDIATE query_str INTO retval USING arg3_in; IF new_retval IS NULL AND cur_retval IS NULL THEN c_msgtext := 'Extracted values are NULL and cannot be compared '; v_compstatus :='undifined'; v_baseoperation :='O'; ELSIF new_retval IS NULL AND cur_retval IS NOT NULL THEN v_compstatus :='delete'; v_baseoperation :='D'; ELSIF new_retval IS NOT NULL AND cur_retval IS NULL THEN v_operation := '.create'; v_baseoperation :='I'; ELSIF UPPER(new_retval)= UPPER(cur_retval) THEN v_compstatus :='no change'; v_baseoperation :='O'; ELSIF (new_retval IS NOT NULL AND cur_retval IS NOT NULL) AND (UPPER(new_retval)<> UPPER(cur_retval)) THEN v_compstatus :='.update'; v_baseoperation :='U'; END IF;
  • 24. 24 A narrow escape this time, mate