Archive

Posts Tagged ‘book’

Oracle SOA Suite 11g R1 Developers Guide – Book Review

01/02/2012 Comments off

Please Note: I’m reviewing this book from the perspective of an independent SOA Architect, not as an Oracle SOA Suite Developer – the role for whom this book is really intended. If you’re interested in an architects perspective, please read on…

Introduction.

At some point you have to stop analysing your SOA and start turning the various designs and specifications you have into working services. In recent years the toolsets available to create services have been maturing very quickly indeed.

Packt Publishing’s Oracle SOA Suite 11g R1 Developers Guide intends to help you understand exactly how you can leverage the power of Oracle’s SOA Suite 11g. It’s goal is to introduce you to the tools and techniques you’ll need in order to quickly and efficiently implement services using the development frameworks made available in this comprehensive, and well regarded SOA Suite.

What I liked.

Make no mistake, Oracle SOA Suite is huge encompassing years of development and gathering together many products that used to exist separately and even from other vendors (like BEA’s Aqualogic DSP for example, now simply the SDO implementation inside the suite). The sheer scale of the thing can be really quite off-putting at first, but this book does a brilliant job of making it totally accessible via a series of simple and easy to follow steps that are well thought out.

Working with Oracle SOA Suite (O.S.S) means learning how to build services using the accompanying Oracle JDeveloper IDE and then understanding how to deploy the services that you’ve develop onto an O.S.S server where they can be administered and executed at runtime.

O.S.S is billed as providing a standards compliant environment and toolset, and in the main that seems an entirely fair statement with a vast majority of popular standards and psuedo standards at your disposal. Of course not all standards are equal, and some require extensions that are proprietary in nature.

At 720 pages the book covers a lot of ground, but even so, due to the vast scope of Oracle SOA Suite, that’s still just the tip of the iceberg. The book starts well with a section on the concepts behind service-oriented architecture in which the author examines each of those keywords in turn and together (services, orientation and architecture). It’s a neat idea for scene setting and it uses some simple examples that are very helpful for those amongst the readership who are still quite new to SOA.

The topics covered in the main text include writing your first SOA Suite composite, service-enabling existing systems, using BPEL to build composite services and business processes, adding human workflows and using business rules & events. The text then goes into a worked example via a tutorial that spans multiple chapters and pulls many of the core concepts together using facilities available in the SOA Suite software. Concepts like persistence of data, validation, error-handling, deployment, testing and security are all explored to a basic level of detail.

Although I didn’t try all the tutorials in the book, the ones I did try were well written, clear and concise with plenty of helpful screen-shots and pointers along the way. There were a few minor differences between the version of the software covered in the book [R1] and the latest version available from Oracle, but these were not significant and didn’t impact my ability to follow the exercises. However, you should be aware that troubleshooting issues with this vast suite can be a bit of a black art, but this is in not something the book can do much about. Prevention is better than cure in most cases, so just follow the guide carefully.

Overall this book is a hugely impressive feat. It covers a lot of ground in O.S.S and JDeveloper,  and it does it in a way that is admirably consistent, comprehensive and cohesive.

What I liked less.

The book itself is intended to support SOA developers rather than SOA architects, SOA designers or SOA analysts. In a mature environment the latter roles would probably have a say regarding the methods and approaches used for SOA development and service implementation. For example, the output of the SOA designer in the form of service contracts or implementation designs is an important input for a SOA Developer. So therefore, one criticism I do have of the book is that these role relationships and the dependency and interaction between them is not reflected strongly enough.

The second issue I have with this ‘developer in a bubble’ approach is one that can be laid at the door of most developer books – sometimes they offer up bad practices quite early on in the interests of showing how ‘simple’ life can be if you take some architectural short-cuts. This is fine if caution is recommended or if the developer is encouraged to be aware of the bigger picture and compensate for the negative effects of these practices in real-life code. However in this case I didn’t feel this danger was understood as no such warning was forthcoming.

For example – the ‘contract-first’ loose coupling approach is quite important to SOA design and development as it helps to avoid negative consumer-to-implementation tight-coupling. Avoiding this issue does affect how a new SOA Suite composite would be created in JDeveloper but this highly advisable best practice is not really mentioned in the book and there is no tutorial on contract-first approaches in the text. There is a section on loose-coupling, but unfortunately the content is way off the mark. The authors understanding of what loose-coupling is and how it should be implemented do not match my own experiences with the problem. As a SOA architect I see this as storing up potential issues by not emphasising to developers the importance of good design in SOA.

One final criticism of the book is the over ‘selling’ of the usefulness of Oracle Service Bus (aka E.S.B) for things like endpoint discovery & data transformation. In my opinion an ESB isn’t always necessary. A well designed SOA would use contract standardisation to avoid data transformation and may use a registry or some other form of dynamic endpoint resolution, thereby negating the requirement for the use of common E.S.B features. In my experience, E.S.B’s are often misused or used too early and there is nothing here to caution the reader to the dangers. It’s a bit of an ‘own goal’, giving false kudos to E.S.B’s in a fast moving SOA world that’s learning to do without E.S.B’s most of the time. The section in the book on configuring a simple service proxy in Oracle Service Bus also highlights just how poor the actual user experience is in this particular software application. My advice would be to skip these E.S.B sections all-together, as it will save you time and you can always come back to it later.

My overall conclusion.

It covers good ground and gives you enough detail to start to get to grips with Oracle SOA Suite, JDeveloper and the Oracle Enterprise Manager. Some of the theories, practices and architectural choices are a little sub-optimal in my opinion, but as a ‘way in’ to understanding what Oracle SOA Suite can offer and how you could leverage value from it as a service developer, I would definitely recommend it over the default Oracle offerings.

Oracle SOA Suite 11g R1 Developers Guide.
Language : English
Paperback : 720 pages [ 235mm x 191mm ]
Release Date : July 2010
ISBN : 1849680183

Chapter List:
Chapter 1: Introduction to Oracle SOA Suite
Chapter 2: Writing your First Composite
Chapter 3: Service-enabling Existing Systems
Chapter 4: Loosely-coupling Services
Chapter 5: Using BPEL to Build Composite Services and Business Processes
Chapter 6: Adding in Human Workflow
Chapter 7: Using Business Rules to Define Decision Points
Chapter 8: Using Business Events
Chapter 9: Building Real-time Dashboards
Chapter 10: oBay Introduction
Chapter 11: Designing the Service Contract
Chapter 12: Building Entity Services Using Service Data Objects (SDOs)
Chapter 13: Building Validation into Services
Chapter 14: Error Handling
Chapter 15: Advanced SOA Suite Architecture
Chapter 16: Message Interaction Patterns
Chapter 17: Workflow Patterns
Chapter 18: Using Business Rules to Implement Services
Chapter 19: Packaging and Deployment
Chapter 20: Testing Composite Applications
Chapter 21: Defining Security and Management Policies

Book Review: Service Oriented Architecture with Java

27/06/2010 2 comments

Service Oriented Architecture with Java by Packt Publishing.
Ben Wilcock, June 2010.

Introduction.

For many, Java is the language of choice for implementing Service Oriented Architecture, and with such a rich and diverse development community, there are a number of implementation frameworks that offer to share the burden. But as an Architect, which should you choose for your project? Packt Publishing’s ‘Service Oriented Architecture with Java’ aims to give a fast introduction to the most successful Java frameworks, along with a crash course in some SOA principals and benefits. At 169 printed pages it’s certainly a quick read and it delivers on many of its promises. However, spread between 3 authors, the cohesiveness of the writing has suffered somewhat, so you should take this into account if you are considering buying this book.

What’s the book about?

Aimed at architects and developers who are familiar with Java, the book is organised into 6 chapters. It promises to explain the concepts of the business logic layer that lives at the core of a Service Oriented Architecture, how to design services for SOA, and how to implement Web Services using various Java frameworks.

In the first chapter the author chooses to start way back at the beginning with a ‘What is Architecture’ and and explanation of the ’1-Tier, 2-Tier, 3-Tier and N-Tier’ architectural patterns. Unfortunately this is  a discussion that has been served up a hundred times before in other books and blogs, and on 99 occasions it was probably covered better than it is here.

However, once this introductory section is out of the way, the author does go on to explain some useful basic SOA principals like contract-first, loose coupling, platform neutrality, standards, re-use and scalability whilst also ensuring that the reader understands that creating a SOA doesn’t simply mean building Web Services.

By Chapter 2 things have improved considerably. The author dishes up a rapid ‘whistle-stop’ tour of Web Service implementation in Java starting with XML documents over HTTP using POJO’s and REST. He then introduces the popular open-source Java Web Service frameworks such as JAX-WS, Axis, Spring and XFire in quick succession, showing briefly how each can contribute to reducing the implementation effort.

Chapter 3 extends this discussion further, adding more detail and encouraging the reader to get involved by downloading the sample code and having a go.

These two chapters are undoubtedly the best in the book. As an architect who has dealt with most of these frameworks in the past, I found the text to be a useful and enjoyable reminder of my experience with each of them.

Chapter 4 concerns itself with data persistence and enterprise integration. The chapter starts with JDO or Java Data Objects, an odd choice as its a rather moribund ORM framework which is largely commercially irrelevant and long since superseded by JPA and Hibernate. Service Data Objects (SDO) and Service Component Architecture (SCA) are covered next, but seem out of place in relation to the lighweight open-source frameworks of the previous chapters. Finally, Message Oriented Middleware (MOM) and Enterprise Service Bus (ESB) also get a mention. These latter discussions are very brief, not really gifting the reader with enough information on ESB’s unique functions and benefits for example.

Chapter 5 attempts to bring it all together by discussing one problem and two potential solutions. First, an old school ‘point to point’ integration is described followed by a equivalent built using SOA tools and techniques. The advantages and disadvantages of both are then examined. Unfortunately I found this discussion hard to get value from. Having experienced most of these problems at first hand, the fictitious organisation’s problem domain was over-simplistic and the subsequent ‘solutions’ felt contrived. What was missing was a sense of realism or integrity to the conclusions being made. The author did paint a positive and worthwhile picture of how SOA can add value, but it was an opportunity that was under utilised in my opinion.

The final chapter (Chapter 6) summarises what we have learnt and attempts to re-iterate that SOA isn’t actually about Java – it’s about Architecture. The benefits of SOA and Web Services are presented once more with particular attention being drawn to loose-coupling, re-use and ease of integration.

Conclusion.

The book delivers on many of its promises, but the main issue I had with it was with its overall quality.

The quality issues start straight away in Chapter 1. The basic standard of writing on display is quite poor, even for a techy book, with typo’s and unfathomable sentences throughout. For example, if you know what ‘joining the SOA wagon wheel’ means (as mentioned on page 24) then please get in touch. The consistency of the message is also weak in parts. E.g. the principle of ‘contract-first’ doc-literal service design is recommended in one chapter, but not re-enforced consistently in others.

What I did like about this book was its brevity. Covering a topic like this quickly from a high level makes the benefits very accessible to busy Architects. I’ve often lamented ponderous techy books filled with waffle, so this shorter 169 page format was a very welcome change. Even the code presented is cropped and chopped so that you can get the gist without pages and pages of dull listings.

However, the danger of shorter formats like this one are that they draw all the more attention to quality issues and consistency problems, as that was certainly the case here. Overall though, I would recommend this book – just be sure that you can live with these criticisms before you shell out your cash.

Links:

Sample Chapter: Chapter 4
Link to the Book at the Publishers Site: Service Oriented Architecture with Java

Biography:

Ben Wilcock is a freelance SOA Architect with an enviable reputation for delivering good quality Service Oriented Architectures. He has spent the last 3 years working with a FTSE 100 listed Retailer to create a brand new Service Oriented Architecture which is delivering substantial business value and new opportunities. You can read his blog at http://benwilcock.wordpress.com or contact him via his website.

Follow

Get every new post delivered to your Inbox.