Thursday, December 30, 2010

Book Review: "Oracle SOA Suite 11g R1 Developer's Guide"


What's SOA

Commentators have provided multiple definitions of SOA (the acronym for Service-oriented architecture) and there is no consensus on what it really means and provides. However, a system based on a SOA is usually guided by a set of design principles for its development, maintenance, and usage:
  • Service loose coupling
  • Service reusability
  • Service discoverability
  • Service composability
  • etc
An SOA-based solution will package functionality as a suite of interoperable services that can be used within multiple separate systems from several business domains. In this article, we will review a book named Oracle SOA Suite 11g R1 Developer's Guide, in which it addresses Oracle SOA Suite (that is Oracle's SOA-based solution).

Lego Metaphor

Very often "LEGO block" analogy gets applied to SOA[4]. Conceptually, a services orientation turns your entire application portfolio into technological LEGO blocks that can be assembled in any number of configurations to meet changing business needs. But unlike a single LEGO block, which can only be used in one design at a time, a 'service' can be used by several applications at once.

Introduction of the Book

Oracle Fusion Applications (the re-implementation of Oracle's E-Business Suite, Siebel, PeopleSoft and JD Edwards Enterprise as a single) is probably the largest SOA-based application being built today and it has the Oracle SOA platform at its core.

As stated by the authors (Antony Reynolds and Matt Wright), this book is to provide developers and technical architects with a practical guide to using and applying the Oracle SOA Suite in the delivery of real world SOA-based applications.

This book holds 720 pages in its content and is the final product of multiple years' writing effort. The whole book is written to address a key question:
  • What is the best way to combine/use all of these different components (or services) to implement a real world SOA solution?
However, there isn't a single simple answer, but rather you have many choices, each with their own set of advantages and disadvantages.

Oracle SOA Suite

Out of the box, Oracle SOA Suite provides an assortment of lego pieces (or base set) that can be used to build your composite applications. This set allows you to complete a scene or setting or to enlarge existing structures as what you would discover in the Lego Land. It includes the following components, but not limited to:
  • Adapters
    • Take an existing piece of functionality and "adapt" it to the SOA world, so that it can interact with other SOA Suite components
      • Allows the SOA Suite to treat non-web service interfaces as though they have a web service interface
    • Adapters are implemented and accessed using JCA (Java Connector Architecture)
    • OOTB, SOA Suite includes the following technology adapters:
      • File adapter
      • FTP adapter
      • Database adapter
      • JMS adapter
      • MQ adapter
      • AQ adapter
      • Socket adapter
      • BAM adapter
  • BAM (Business Activity Monitoring)
    • Gives business users a real-time view into how business processes are performing
  • BPEL
    • Assembles services to build composite services and long-running business processes
    • Includes support for the BPEL 1.1 standard, with most constructs from BPEL 2.0 also being supported
    • Includes a Human Workflow component that provides support for human interaction with processes
  • CEP (Complex Event Processor)
    • Supports time-based and series-based analysis of data
  • OSB (Oracle Service Bus; formerly AquaLogic Service Bus)
    • Provides routing and transformation
    • Only executes on the Oracle WebLogic platform in the current release
  • Oracle B2B
    • Supports the management of service agreements or contracts
  • Oracle Mediator (formerly Oracle Enterprise Service Bus)
    • Provides routing and transformation
    • Executes on other non-Oracle platforms too
  • Rules Engine
    • Supports business decision-making
    • Provides a declarative mechanism for defining business rules externally to your application
Among them, BPEL, OSB and Oracle Mediator are "Lego Baseplates" which you can use to assembly large structures. These components allow multiple services to be linked to each other as part of a single managed process. They all can be used to support service orchestration in your composite application.

As shown in the diagram, but not listed on the list, there is a security component. Security is a characteristic of services, yet to implement it effectively requires a centralized policy store coupled with distributed policy enforcement at the service boundaries. In Oracle SOA Suite, Enterprise Manager serves as a policy manager for security, providing a centralized service for policy enforcement points to obtain their policies.

Not shown on the diagram, there is a component named EDN (
i.e., Event Delivery Network) which is a key new component in Oracle SOA Suite 11 g that provides a declarative way to generate and consume business events within the SOA infrastructure. EDN uses JMS to deliver events from subscribers to publishers, but the configuration of JMS queues and topics and any associated filters is hidden from users of the EDN service.

Finally, SCA (Service Component Architecture) in SOA Suite is a standard that is used to define how services in a composite application are connected. It also defines how a service may interact with other services. An SCA Assembly in SOA Suite is described in a file named composite.xml.

What This Book Has Provided

JDeveloper is the primary development tool for building composite applications and for deployment into the SOA Suite. Using it, most of the creation, testing, integration, deployment and maintenance of composite applications can be done declaratively without much coding effort.

In the first part of the book, it provides detailed descriptions of various components (except B2B and CEP) as listed in "Oracle SOA Suite" section and provides step-by-step instructions on creating sample applications using these core components.

In the second part of the book,an online auction site (oBay) is used to illustrate how to use the various components of the SOA Suite to implement a real-world SOA-based solution.

Authors of the book took you through the process of defining a high level SOA blueprint, outlining some of the objectives and considerations you should take into account when developing an SOA-based architecture. Along the way they've addressed a number of questions or issues, as well as highlighting particular areas of interest in its overall design.

Some of the issues addressed in the book are listed below:
  • How to virtualize services
  • How to create loosely-coupled services
  • How to to avoid an overly-fragmented solution
  • How to monitor and process service events
  • How to handle system and business errors
  • How to recover from system and business errors using compensation
  • How to test, integrate, deploy, and maintain the SOA solution
  • How to provide support for human interaction with processes
  • How to create processes and applications from existing services
  • How to use policies to secure and administer SOA applications
  • How to design XML schemas and service contracts for improved agility, reuse, and interoperability
  • How to implement validation within a service using XSD validation, Schematron, and Business Rules, as well as within the service
  • How to avoid clients of the service having to deal with the specifics of the services state management

Summary

To create SOA-based solutions, it needs different kinds of thinking and approaches. Therefore, we need guidance for their best practices and good design patterns. We also need a "hands on" guide to harness and apply this technology.

This book has provided both. It offers a good coverage of both SOA theories and hands-on instructions. Antony and Matt were just the right people to create such content, each having many years hands-on experience of enabling Oracle SOA Suite implementations for customers and partners, as well as a close working relationship with Oracle's SOA engineering and product management teams.

As forworded by David Schaffer, he believes that this book will help developers realize their goals with the Oracle SOA Suite, helping them increase productivity, avoid common pitfalls, and improve ROI through more scalable, agile, and re-usable implementations. I cannot agree more.

References

  1. Learning To Speak Lego
  2. Oracle SOA Suite 11g R1 Developer's Guide
  3. Service-oriented architecture
  4. Why are we building 'enterprise' SOAs with 'LEGO blocks'?
  5. Oracle SOA Suite, Business Process Management Suite, and Web Services Documentation
  6. SOA Suite Documentation (in a zip file)
  7. Oracle SOA Suite 10g Documentation
  8. Oracle SOA Suite 11g Documentation
  9. Oracle Fusion Middleware 11g Software Downloads
  10. Official Oracle SOA Suite 11g Samples
  11. Oracle® Fusion Middleware Performance and Tuning Guide 11g Release 1 (11.1.1)
  12. Automating Testing of SOA Composite Applications (Oracle SOA Suite 11.1.1.7)
  13. Oracle® Fusion Middleware Enterprise Deployment Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
  14. Oracle Unveils Oracle SOA Suite 12c
  15. Typical Memory, File Descriptors, and Processes Required for an Oracle SOA Suite Enterprise Deployment (12c 12.1.3)

No comments: