Best Practices for Designing and Building the Services of an SOA Guido Schmutz Technology Manager, Oracle ACE Director for...
Abstract <ul><li>This session will present best practices for designing and building the services of an SOA. Different way...
Guido Schmutz <ul><li>Working for Trivadis for more than 14 years </li></ul><ul><li>Oracle ACE Director for Fusion Middlew...
Trivadis Facts & Figures <ul><li>11 Trivadis locations with more than 550 employees </li></ul><ul><li>Financially independ...
Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Model and Implement...
Principles of Service-Orientation
Service Design Principles <ul><li>Standardized Contract  – Implement a  standardized contract </li></ul><ul><li>Loose Coup...
Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Implementation </li...
Development Approaches <ul><li>Bottom up </li></ul><ul><li>Top Down </li></ul><ul><li>Meet in the  middle (agile) </li></u...
Contract-First Web Service Design <ul><li>Important for service-orientation is the  standardizing  and  decoupling  of the...
Contract-First is fine ….. <ul><li>But isn‘t it just too hard to get  … ? </li></ul><ul><li>Most SOA platforms  do not mak...
“ I like Contract First design, BUT  “ <ul><li>Lot of repetition </li></ul><ul><ul><li>Very talkative </li></ul></ul><ul><...
Alternative: UML with “WS profile” <ul><li>Enterprise Architect has a special profile for WSDL and XSD modelling </li></ul>
CBDI-SAE UML Profile  for SOA http://everware-cbdi.com Service Implementation Architecture Showing Services and Automation...
Using DSL to simplify WSDL generation <wsdl:definitions xmlns:tns=&quot;http://trivadis.com/service/credit-card/v1&quot;  ...
Domain Specific Language (DSL) <ul><li>A Domain Specific Language (DSL) is </li></ul><ul><ul><li>A small programming langu...
Prototype based on Eclipse XText available
Service Contract Template => DSL service  CreditCardValidation { version  : 1.0 namespace  : CreditCard business-propertie...
WS-I: check your contracts! <ul><li>An open industry effort promoting Web Services interoperability </li></ul><ul><ul><li>...
Message Exchange Patterns (MEP) <ul><li>There are four basic message exchange patterns (MEPs) used in Web services </li></...
Standardized Service Data Models –  Canonical Data Model Source: Enterprise Integration Patterns (www.eaipatterns.com)
Standardized Service Data Models –  Canonical Data Model
Service Usage Scope Level of coupling Typical WS-Attribute:  Granularity Scope Cross Organisational Document or RPC style,...
SOA Logical Architecture – Service Categorization Source: Oracle
Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Implementation </li...
<ul><li>PL/SQL in the database holds logic </li></ul><ul><li>Java holds business logic, data access is implemented in PL/S...
PL/SQL Implementation of Use Case <ul><li>PL/SQL Package specification </li></ul><ul><li>Object types </li></ul>
Java Implementation for Use Case <ul><li>Customer Service Interface in Java </li></ul><ul><li>Customer and Address DTO  </...
<ul><li>For  B and C a Java Web Service Facade can be written </li></ul><ul><li>How can deploy existing PL/SQL logic as a ...
Service Interface for Use Case
JAX-WS – WSDL First
JAX-WS – WSDL First Transformation JAXB Annotations JAX-WS Annotations EJB Annotations
Java with JAX-WS - Code First Determines XSD Determines WSDL
Native Database Web Service (11g) <ul><li>A servlet in the database (DBWS) acts as a gateway to: </li></ul><ul><ul><li>SQL...
Native Database Web Service (11g)
<ul><li>OSB adds a layer of indirection (virtualization) </li></ul><ul><ul><li>Mediation: Transformation, Filtering, Enric...
OSB and DB Adapter for request-driven access to information <ul><li>Problem </li></ul><ul><ul><li>Want to  directly access...
Demo: Database Adapter on OSB
<ul><li>OSB adds a layer of indirection (virtualization) </li></ul><ul><ul><li>Mediation: Transformation, Filtering, Enric...
OSB HTTP Transport to wrap JAX-WS service <ul><li>Problem </li></ul><ul><ul><li>Want to offer a contract-first SOAP-based ...
OSB HTTP Transport to wrap JAX-WS Code First service Proxy Service XQuery Transformation Business Service HTTP Transport  ...
OSB EJB Transport to call EJB <ul><li>Problem </li></ul><ul><ul><li>Want to  use an EJB session bean directly  without hav...
OSB EJB Transport to call EJB <ul><li>Proxy Service </li></ul><ul><li>Business Service EJB Transport </li></ul>
Service Enablement in BPEL/BPMN Application A Tables PL/SQL PL/SQL Resource Data Access Business Logic OSB Web Service  Fa...
Automatic Build & Deployment <ul><li>Goals </li></ul><ul><ul><li>Automate everything </li></ul></ul><ul><ul><ul><li>WLS Do...
Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Model and Implement...
Service Versioning <ul><li>Services once deployed can never be changed </li></ul><ul><ul><li>Stable endpoints, don‘t neces...
Service Versioning <ul><li>In software, major-minor versioning is used to accommodate two levels of change </li></ul><ul><...
Implementing Versioning on ESB <ul><li>Common Endpoint for all versions </li></ul><ul><li>One Endpoint per Major Version w...
Service Versioning <ul><li>WSDL Version 1.0 </li></ul>
Service Versioning <ul><li>WSDL 1.1 </li></ul>
Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Model and Implement...
Summary <ul><li>Standardized Service Contract => use contract-first design => wrap contract-last services </li></ul><ul><l...
My other sessions @ Kscope11 <ul><li>Reusing Existing Java EE Applications from Oracle SOA Suite 11g , Tuesday 1:45 – 2:45...
Best Practices for Designing and Building the Services of an SOA Please Fill Out Your Evaluations Guido Schmutz Technology...
Upcoming SlideShare
Loading in...5
×

Best Practices for Designing and Building the Services of an SOA

1,995

Published on

This session will present best practices for designing and building the services of an SOA. Different ways of implementing services in different environments and languages are presented and the pros and cons of each approach will be discussed. The session will cover how to ensure service versioning, why contract-first is the preferred approach, and under which circumstances a contract-last approach might be valid and useful.

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,995
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide
  • This is your opening slide.
  • Use this template for all your content slides. There are also other layout slides you can feel free to use.
  • Use this template for all your content slides. There are also other layout slides you can feel free to use.
  • Use this template for all your content slides. There are also other layout slides you can feel free to use.
  • Use this template for all your content slides. There are also other layout slides you can feel free to use.
  • Use this template for all your content slides. There are also other layout slides you can feel free to use.
  • This is the final slide of the presentation.
  • Best Practices for Designing and Building the Services of an SOA

    1. 1. Best Practices for Designing and Building the Services of an SOA Guido Schmutz Technology Manager, Oracle ACE Director for FMW & SOA Trivadis AG, Switzerland
    2. 2. Abstract <ul><li>This session will present best practices for designing and building the services of an SOA. Different ways of implementing services in different environments and languages are presented and the pros and cons of each approach will be discussed. The session will cover how to ensure service versioning, why contract-first is the preferred approach, and under which circumstances a contract-last approach might be valid and useful. </li></ul>
    3. 3. Guido Schmutz <ul><li>Working for Trivadis for more than 14 years </li></ul><ul><li>Oracle ACE Director for Fusion Middleware and SOA </li></ul><ul><li>Co-Author of different books </li></ul><ul><li>Consultant, Trainer Software Architect for Java, Oracle, SOA and EDA </li></ul><ul><li>Member of Trivadis Architecture Board </li></ul><ul><li>Technology Manager @ Trivadis </li></ul><ul><li>More than 20 years of software development experience </li></ul><ul><li>Contact: [email_address] </li></ul><ul><li>Blog: http://guidoschmutz.wordpress.com </li></ul><ul><li>Twitter: gschmutz </li></ul>
    4. 4. Trivadis Facts & Figures <ul><li>11 Trivadis locations with more than 550 employees </li></ul><ul><li>Financially independent and sustainably profitable </li></ul><ul><li>Key figures 2010 </li></ul><ul><ul><li>Revenue CHF 101 / EUR 73 mio. </li></ul></ul><ul><ul><li>Services for more than 700 clients in over 1‘800 projects </li></ul></ul><ul><ul><li>Over 170 Service Level Agreements </li></ul></ul><ul><ul><li>More than 5'000 training participants </li></ul></ul><ul><ul><li>Research and development budget: CHF 5.0 / EUR 3.6 mio </li></ul></ul>~350 employees ~180 employees ~20 employees
    5. 5. Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Model and Implementation </li></ul><ul><li>Service Versioning </li></ul><ul><li>Summary </li></ul>
    6. 6. Principles of Service-Orientation
    7. 7. Service Design Principles <ul><li>Standardized Contract – Implement a standardized contract </li></ul><ul><li>Loose Coupling – Minimize dependencies </li></ul><ul><li>Abstraction – Minimize the availability of meta information </li></ul><ul><li>Reusability – implement generic and reusable logic and contract </li></ul><ul><li>Autonomy – implement independent functional boundary and runtime environment </li></ul><ul><li>Composability – Maximize composability </li></ul><ul><li>Statelessness – Implement adaptive and state management-free logic </li></ul><ul><li>Discoverability – implement communicative meta information </li></ul>
    8. 8. Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Implementation </li></ul><ul><li>Service Versioning </li></ul><ul><li>Summary </li></ul>
    9. 9. Development Approaches <ul><li>Bottom up </li></ul><ul><li>Top Down </li></ul><ul><li>Meet in the middle (agile) </li></ul>Bottom-Up DB Files Applications API Components Domain Produktion Verkauf F&E Rohstoffeingang Produktgenehmigung Service Service Service Service Service Service Top-Down
    10. 10. Contract-First Web Service Design <ul><li>Important for service-orientation is the standardizing and decoupling of the technical contract of each service </li></ul><ul><li>Service-oriented design therefore should be based on a contract first approach </li></ul><ul><ul><li>avoid the use of auto-generation tools </li></ul></ul>Source: Thomas Erl, Principles of Service Design
    11. 11. Contract-First is fine ….. <ul><li>But isn‘t it just too hard to get … ? </li></ul><ul><li>Most SOA platforms do not make a contract-first service design easy </li></ul><ul><ul><li>Creation of WSDL and XSD is too much effort </li></ul></ul><ul><li>There is build-in support in the IDE to graphically implement WSDL and XSD </li></ul><ul><ul><li>Platform specific, no standard for look-and-feel </li></ul></ul>
    12. 12. “ I like Contract First design, BUT “ <ul><li>Lot of repetition </li></ul><ul><ul><li>Very talkative </li></ul></ul><ul><ul><li>More options than (often) necessary => RPC/literal </li></ul></ul><ul><li>How to ensure Design guidelines </li></ul><ul><ul><li>WS-I compliance </li></ul></ul><ul><ul><li>Asynchronous Interface </li></ul></ul><ul><ul><li>Service versioning </li></ul></ul><ul><li>Ensure naming conventions </li></ul><ul><ul><li>Name of messages </li></ul></ul><ul><ul><li>Name of port types </li></ul></ul><ul><ul><li>Name of bindings </li></ul></ul><wsdl:definitions xmlns:tns=&quot;http://trivadis.com/service/credit-card/v1&quot; ... name=&quot;CreditCardValidation-v1&quot;> <wsdl:types> <xsd:schema ...> </wsdl:types> <wsdl:message name=&quot;validateCardRequest&quot;> <wsdl:part name=&quot;request&quot; element=&quot;tns:validateCreditCardPaymentRequest&quot;/> </wsdl:message> <wsdl:message name=&quot;validateCardResponse&quot;> <wsdl:part name=&quot;reply&quot; element=&quot;tns:validateCreditCardPaymentResponse&quot;/> </wsdl:message> <wsdl:message name=&quot;invalidCreditCardNumberFault&quot;> <wsdl:part name=&quot;error„ element=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:message> <wsdl:portType name=&quot;CreditCardValidationPT&quot;> <wsdl:operation name=&quot;validateCard&quot;> <wsdl:input message=&quot;tns:validateCardRequest&quot;/> <wsdl:output message=&quot;tns:validateCardResponse&quot;/> <wsdl:fault name=&quot;InvalidCreditCardNumberFault&quot; message=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:operation> </wsdl:portType> <wsdl:binding ...> <wsdl:service ...> </wsdl:definitions> <xs:schema xmlns:xs=„...&quot; xmlns:tns=&quot;http://www.trivadis.com/cdm/credit-card/v1&quot; targetNamespace= „http://www.trivadis.com/cdm/credit-card/v1 “ elementFormDefault=&quot;qualified&quot; attributeFormDefault=&quot;unqualified&quot; version=&quot;1.0&quot;> <xs:element name=&quot;creditCard&quot; type=&quot;tns:CreditCardT&quot;/> <xs:complexType name=&quot;CreditCardT&quot;> <xs:sequence> <xs:element name=&quot;creditCardKind&quot; type=&quot;tns:CreditCardKindT&quot;/> <xs:element name=&quot;cardNumber&quot; type=&quot;xs:string&quot;/> <xs:element name=&quot;cardholderFirstName&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot;/> <xs:element name=&quot;cardholderLastName&quot; type=&quot;xs:string&quot;/> <xs:element name=&quot;expirationMonth&quot; type=&quot;tns:MonthT&quot;/> <xs:element name=&quot;expirationYear&quot; type=&quot;tns:YearT&quot;/> </xs:sequence> <xs:attribute name=&quot;id&quot; type=&quot;xs:int&quot;/> </xs:complexType> <xs:simpleType name=&quot;CreditCardKindT&quot;> <xs:restriction base=&quot;xs:string&quot;> <xs:enumeration value=&quot;visa&quot;/> <xs:enumeration value=&quot;mastercard&quot;/> <xs:enumeration value=&quot;amexco&quot;/> </xs:restriction> </xs:simpleType> ... /xs:schema>
    13. 13. Alternative: UML with “WS profile” <ul><li>Enterprise Architect has a special profile for WSDL and XSD modelling </li></ul>
    14. 14. CBDI-SAE UML Profile for SOA http://everware-cbdi.com Service Implementation Architecture Showing Services and Automation Units Business Type Model Showing Domains Service Deloyment Architecture Showing Deployments
    15. 15. Using DSL to simplify WSDL generation <wsdl:definitions xmlns:tns=&quot;http://trivadis.com/service/credit-card/v1&quot; ... name=&quot;CreditCardValidation-v1&quot;> <wsdl:types> <xsd:schema ...> </wsdl:types> <wsdl:message name=&quot;validateCardRequest&quot;> <wsdl:part name=&quot;request&quot; element=&quot;tns:validateCreditCardPaymentRequest&quot;/> </wsdl:message> <wsdl:message name=&quot;validateCardResponse&quot;> <wsdl:part name=&quot;reply&quot; element=&quot;tns:validateCreditCardPaymentResponse&quot;/> </wsdl:message> <wsdl:message name=&quot;invalidCreditCardNumberFault&quot;> <wsdl:part name=&quot;error„ element=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:message> <wsdl:portType name=&quot;CreditCardValidationPT&quot;> <wsdl:operation name=&quot;validateCard&quot;> <wsdl:input message=&quot;tns:validateCardRequest&quot;/> <wsdl:output message=&quot;tns:validateCardResponse&quot;/> <wsdl:fault name=&quot;InvalidCreditCardNumberFault&quot; message=&quot;tns:invalidCreditCardNumberFault&quot;/> </wsdl:operation> </wsdl:portType> <wsdl:binding ...> <wsdl:service ...> </wsdl:definitions> abstract message common { requestNr : String [1:1] } Import common.msgtype namespace service.credit-card(1.0) using cdm.credit-card(1.0) as cc message validateCardRequest extends common { creditCard : cc.CreditCard forAmount : Double } message validateCardResponse { requestNr : String[1:1] reservationNumber : String } fault invalidCreditCardNumber { code : String creditCard : cc.CreditCard } service CreditCardValidation { sync operation validateCard throws invalidCreditCardNumber input validateCardRequest output validateCardResponse }
    16. 16. Domain Specific Language (DSL) <ul><li>A Domain Specific Language (DSL) is </li></ul><ul><ul><li>A small programming language, which focuses on a particular domain </li></ul></ul><ul><ul><li>The right tool for the right job </li></ul></ul><ul><li>The opposite is a General Purpose Language (GPL) </li></ul><ul><ul><li>A language such as Java or C# </li></ul></ul><ul><ul><li>A general purpose modeling language such as UML </li></ul></ul><ul><li>A DSL can be a visual diagramming, programatic abstractions or textual languages </li></ul><ul><ul><li>Text based DSL are more and more common </li></ul></ul><ul><li>Examples of existing DSL‘s </li></ul><ul><ul><li>SQL, Ant, XML, BPEL, BPMN </li></ul></ul><ul><li>Define you own custom DSL according to the problem </li></ul><ul><ul><li>Service interface in our case </li></ul></ul>
    17. 17. Prototype based on Eclipse XText available
    18. 18. Service Contract Template => DSL service CreditCardValidation { version : 1.0 namespace : CreditCard business-properties { name: Kreditkarten-Validierung purpose: domain: CreditCard technical-properties { owner: xxxx service-type: BAS, BES execution-frequency: 100 per day operation validate-card throws InvalidCreditCardNumber, ServiceFault { operation-group: read-only updating: true resultCache: true atomicTx: true idempotent: true can-particpate-in-tx: true pattern: one-way | request-response input-message { RequestNr : ct.Text[1:1] CreditCard : cc.CreditCard } output-message ValidateCardResponse { RequestNr : core.Text CreditCard : cc.CreditCard
    19. 19. WS-I: check your contracts! <ul><li>An open industry effort promoting Web Services interoperability </li></ul><ul><ul><li>~130 member organizations (2004) </li></ul></ul><ul><li>Deliverables … </li></ul><ul><ul><li>Profiles </li></ul></ul><ul><ul><li>Sample applications </li></ul></ul><ul><ul><li>Test tools and supporting materials </li></ul></ul><ul><li>Current profiles … </li></ul><ul><ul><li>Basic Profile 1.1, 1.2 (in work) </li></ul></ul><ul><ul><ul><li>SOAP, WSDL, WS-Addressing, MTOM </li></ul></ul></ul><ul><ul><li>Basic Security Profile (in work) </li></ul></ul><ul><ul><ul><li>WS-Security and security token formats </li></ul></ul></ul><ul><li>Use these tools to check your contracts </li></ul><ul><ul><li>Command line, soapUI, Maven plugin </li></ul></ul>
    20. 20. Message Exchange Patterns (MEP) <ul><li>There are four basic message exchange patterns (MEPs) used in Web services </li></ul><ul><ul><li>One-Way - A message comes to the service and the service produces nothing in response (Fire-and-Forget). </li></ul></ul><ul><ul><li>Request/Response - A message comes to the service, and the service produces a message in response (main program & subroutine architecture style). </li></ul></ul><ul><ul><li>Solicit Response - The service sends a message and gets a response back (Reverse Request / Response). </li></ul></ul><ul><ul><li>Notification - The service sends a message and receives nothing in response (Broadcast, Publish-Subscribe) </li></ul></ul><ul><li>Solicit Response and Notification are not supported by the WS-I Basic Profile </li></ul>Web Service Application Application One-Way Notification Request/Response Solicit Response
    21. 21. Standardized Service Data Models – Canonical Data Model Source: Enterprise Integration Patterns (www.eaipatterns.com)
    22. 22. Standardized Service Data Models – Canonical Data Model
    23. 23. Service Usage Scope Level of coupling Typical WS-Attribute: Granularity Scope Cross Organisational Document or RPC style, LOB data representations Function call, RPC or RMI Within Department Inside Application Tight Loose Within Organization Document style, industry standard data formats Document style, enterprise data formats
    24. 24. SOA Logical Architecture – Service Categorization Source: Oracle
    25. 25. Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Implementation </li></ul><ul><li>Service Versioning </li></ul><ul><li>Summary </li></ul>
    26. 26. <ul><li>PL/SQL in the database holds logic </li></ul><ul><li>Java holds business logic, data access is implemented in PL/SQL </li></ul><ul><li>Java holds business logic and data access (JDBC or O/R Mapper), no PL/SQL in database </li></ul>What type of applications do we find today? Application C Application A Tables PL/SQL PL/SQL Tables ORM Java Application B Tables PL/SQL Java Storage Data Access Business Logic
    27. 27. PL/SQL Implementation of Use Case <ul><li>PL/SQL Package specification </li></ul><ul><li>Object types </li></ul>
    28. 28. Java Implementation for Use Case <ul><li>Customer Service Interface in Java </li></ul><ul><li>Customer and Address DTO </li></ul>
    29. 29. <ul><li>For B and C a Java Web Service Facade can be written </li></ul><ul><li>How can deploy existing PL/SQL logic as a Web Service ? </li></ul>Service-enable applications directly Application C Application A Tables PL/SQL PL/SQL Tables ORM Java Application B Tables PL/SQL Java Resource Data Access Business Logic ???? Web Service Facade Java Java
    30. 30. Service Interface for Use Case
    31. 31. JAX-WS – WSDL First
    32. 32. JAX-WS – WSDL First Transformation JAXB Annotations JAX-WS Annotations EJB Annotations
    33. 33. Java with JAX-WS - Code First Determines XSD Determines WSDL
    34. 34. Native Database Web Service (11g) <ul><li>A servlet in the database (DBWS) acts as a gateway to: </li></ul><ul><ul><li>SQL Statements </li></ul></ul><ul><ul><li>XQuery </li></ul></ul><ul><ul><li>PL/SQL </li></ul></ul>
    35. 35. Native Database Web Service (11g)
    36. 36. <ul><li>OSB adds a layer of indirection (virtualization) </li></ul><ul><ul><li>Mediation: Transformation, Filtering, Enrichment, Routing </li></ul></ul><ul><ul><li>Adapter: supports integration of existing applications </li></ul></ul>Service Enablement of DB logic using Oracle Service Bus (OSB) OSB OSB OSB Application A Tables PL/SQL PL/SQL Resource Data Access Business Logic Mediation Web Service Facade Adapter Application A Tables Mediation Adapter Application A Tables PL/SQL PL/SQL Mediation DB Servlet SOA Platform
    37. 37. OSB and DB Adapter for request-driven access to information <ul><li>Problem </li></ul><ul><ul><li>Want to directly access data from DB of an existing Java application </li></ul></ul><ul><li>Solution </li></ul><ul><ul><li>Use the DB Adapter on the OSB to implement CRUD DB operations </li></ul></ul><ul><ul><li>Provide it as a contract-first SOAP web service on OSB </li></ul></ul>SQL
    38. 38. Demo: Database Adapter on OSB
    39. 39. <ul><li>OSB adds a layer of indirection (virtualization) </li></ul><ul><ul><li>Mediation: Transformation, Filtering, Enrichment, Routing </li></ul></ul><ul><ul><li>Adapter: supports integration of existing applications </li></ul></ul>Service Enablement of Java using Oracle Service Bus (OSB OSB OSB Resource Data Access Business Logic Mediation Web Service Facade Transport Mediation Adapter SOA Platform Application C Tables ORM Java Application B Tables PL/SQL Java Java
    40. 40. OSB HTTP Transport to wrap JAX-WS service <ul><li>Problem </li></ul><ul><ul><li>Want to offer a contract-first SOAP-based Web Service to consumers and not the JAX-WS service </li></ul></ul><ul><li>Solution </li></ul><ul><ul><li>Use OSB HTTP Transport to wrap the JAX-WS Code-First service </li></ul></ul><ul><ul><li>Provide it as a contract-first SOAP web service on OSB </li></ul></ul>SOAP Webservice Transform from/to canonical model
    41. 41. OSB HTTP Transport to wrap JAX-WS Code First service Proxy Service XQuery Transformation Business Service HTTP Transport Transformation
    42. 42. OSB EJB Transport to call EJB <ul><li>Problem </li></ul><ul><ul><li>Want to use an EJB session bean directly without having to service enable it first </li></ul></ul><ul><li>Solution </li></ul><ul><ul><li>Use OSB EJB Transport to access the existing EJB session bean </li></ul></ul><ul><ul><li>Provide it as a contract-first SOAP web service on OSB </li></ul></ul>RMI / IIOP Transaction propagation
    43. 43. OSB EJB Transport to call EJB <ul><li>Proxy Service </li></ul><ul><li>Business Service EJB Transport </li></ul>
    44. 44. Service Enablement in BPEL/BPMN Application A Tables PL/SQL PL/SQL Resource Data Access Business Logic OSB Web Service Facade BPEL and BPMN Application C Tables ORM Java Application B Tables PL/SQL Java Java Java SOA Platform Mediation Adapter Mediation Mediation Orchestration
    45. 45. Automatic Build & Deployment <ul><li>Goals </li></ul><ul><ul><li>Automate everything </li></ul></ul><ul><ul><ul><li>WLS Domain creation </li></ul></ul></ul><ul><ul><ul><li>Schema repository creation </li></ul></ul></ul><ul><ul><ul><li>OSB & SOA artifacts build & deployment </li></ul></ul></ul><ul><ul><ul><li>soapUI integration testing </li></ul></ul></ul><ul><ul><li>Hudson Integration </li></ul></ul><ul><ul><li>Continuous Integration </li></ul></ul><ul><li>Tools </li></ul><ul><ul><li>Hudson </li></ul></ul><ul><ul><li>Maven </li></ul></ul><ul><ul><li>soapUI </li></ul></ul><ul><ul><li>Subversion </li></ul></ul><ul><ul><li>Nexus Maven Repository </li></ul></ul>
    46. 46. Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Model and Implementation </li></ul><ul><li>Service Versioning </li></ul><ul><li>Summary </li></ul>
    47. 47. Service Versioning <ul><li>Services once deployed can never be changed </li></ul><ul><ul><li>Stable endpoints, don‘t necessarly know our consumers </li></ul></ul><ul><li>WS-* specs have no versioning concept in place </li></ul>The ripple effects of changes
    48. 48. Service Versioning <ul><li>In software, major-minor versioning is used to accommodate two levels of change </li></ul><ul><li>A major change indicates a large update that creates an incompatibility with existing deployments </li></ul><ul><ul><li>Typically indicates large scale revisions of the product with significant new features or bug fixes </li></ul></ul><ul><ul><li>Change to the first digit </li></ul></ul><ul><li>A minor change indicates an update that is backward compatible with existing deployments of the software that share the same major version </li></ul><ul><ul><li>Typically contain a number of small new features, bug fixes and issues resolutions that do not break compatibility </li></ul></ul><ul><ul><li>Change to the second or subsequent digit </li></ul></ul>
    49. 49. Implementing Versioning on ESB <ul><li>Common Endpoint for all versions </li></ul><ul><li>One Endpoint per Major Version with Version in Message </li></ul>One Endpoint per Major Version One Endpoint per Version
    50. 50. Service Versioning <ul><li>WSDL Version 1.0 </li></ul>
    51. 51. Service Versioning <ul><li>WSDL 1.1 </li></ul>
    52. 52. Agenda <ul><li>Principles of Service Design </li></ul><ul><li>Service Design </li></ul><ul><li>Service Model and Implementation </li></ul><ul><li>Service Versioning </li></ul><ul><li>Summary </li></ul>
    53. 53. Summary <ul><li>Standardized Service Contract => use contract-first design => wrap contract-last services </li></ul><ul><li>Service Categories </li></ul><ul><ul><li>Make sure to categorize your services </li></ul></ul><ul><li>Implement minimal Service Governance </li></ul><ul><ul><li>Service Versioning </li></ul></ul><ul><ul><li>SLA Management and Monitoring </li></ul></ul>
    54. 54. My other sessions @ Kscope11 <ul><li>Reusing Existing Java EE Applications from Oracle SOA Suite 11g , Tuesday 1:45 – 2:45 Room 203C </li></ul><ul><li>Fault Handling in Oracle SOA Suite 11g , Wednesday 8:30 – 9:30 Room 203C </li></ul>
    55. 55. Best Practices for Designing and Building the Services of an SOA Please Fill Out Your Evaluations Guido Schmutz Technology Manager, Oracle ACE Director for FMW & SOA Trivadis AG, Switzerland Feedback-URL: http://ezsession.com/kscope

    ×