Best Practices – SOA Service Registry


Use the Right Type of Module:

  • Think about mediation logic vs. process logic.
  • Use Mediation Modules (Oracle ESB) for integration / mediation logic:
    • Short-running, minimal choreography.
    • Supports header manipulation.
  • Use (Integration) Modules (Oracle 11g Suite) for business / process logic:
    • Can be long-running, powerful choreography and business logic

Design your System Topology

  • Check if need more than one server.
  • Use clustering for scalability, For failover etc
  • Database selection.
  • Need to use a load balancer / HTTP server for failover and scalability.

Spend Time on Interfaces and Business Objects

  • Refactoring support is limited inside mediation flows, so good to get this right first time round.
  • Adopt a naming convention.
  • Add constraints?
    • Add modelled faults?
  • Think about namespaces.
  • Configure default namespace policy before you start.

Consider How you Split up Mediation Modules

  • How many mediation flows inside each mediation flow component?
    • Large number of modules impacts performance / deployment.
    • Small number impacts ease of development.
  • Remove unused library content.

Select your Binding Types Carefully

  • Often binding type dictated by circumstance.
  • But if you have the scope to decide:
    • Prefer SCA default/native for inter communications
    • Prefer Web Services for synchronous service exposure
    • Prefer JMS for asynchronous service exposure
  • Sometimes you have alternatives. For example:
    • Web Services binding : allows easy access to SOAP headers
    • Or
    • HTTP with SOAP data binding : allows access to HTTP headers but not SOAP headers

Consider your Custom Coding Strategy

  • Custom mediation:
    • Most useful for one-off coding.
    • Cannot be re-used between modules.
    • ‘Visual’ mode available which may be useful to those less comfortable with Java/SDO API.
    • Custom primitive (also called roll-your-own primitive):
    • A first-class new primitive: same abilities as any other primitive type (XSLT, Endpoint Lookup…).
    • Can have customisable properties.
    • Appears in palette in WID.
    • More re-usable, but more work to create.

Consider your Logging Strategy

  • You will want one; consider it before you start developing.
  • Options include:
    • Message Logger – limited functionality – logs only to a fixed schema database table.
    • JDBC or Flat File Adapter (in separate mediation module?)
    • Custom mediations logging.
    • Custom primitives.

Use Source Control & Do Automated Builds

  • Use source control and integrate with IDs
  • Only one developer per mediation module at once.
  • Automated build direct from source control.

Do Unit Testing
Do the unit testing before check –in