Comments
litl_phil wrote: While it's nice that Google and Acer share the vision of cloud-based computing, it's also worth noting that we at litl already have a webbook on the market (available at litl.com) that runs our own cloud-based OS. Unlike Chrome, litlOS is focused on creating a new and better web experience for the home, so we don't have the usual browser interface, we have our own innovative UI. In conjunction with easel mode (litl's inverted-V position) and our growing cohort of litl channels (special apps t...
Cloud Computing
Conference & Expo
November 2-4, 2009 NYC
Register Today and SAVE !..


2008 West
DIAMOND SPONSOR:
Data Direct
SOA, WOA and Cloud Computing: The New Frontier for Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
GOLD SPONSORS:
Appsense
User Environment Management – The Third Layer of the Desktop
Cordys
Cloud Computing for Business Agility
EMC
CMIS: A Multi-Vendor Proposal for a Service-Based Content Management Interoperability Standard
Freedom OSS
Practical SOA” Max Yankelevich
Intel
Architecting an Enterprise Service Router (ESR) – A Cost-Effective Way to Scale SOA Across the Enterprise
Sensedia
Return on Assests: Bringing Visibility to your SOA Strategy
Symantec
Managing Hybrid Endpoint Environments
VMWare
Game-Changing Technology for Enterprise Clouds and Applications
Click For 2008 West
Event Webcasts

2008 West
PLATINUM SPONSORS:
Appcelerator
Get ‘Rich’ Quick: Rapid Prototyping for RIA with ZERO Server Code
Keynote Systems
Designing for and Managing Performance in the New Frontier of Rich Internet Applications
GOLD SPONSORS:
ICEsoft
How Can AJAX Improve Homeland Security?
Isomorphic
Beyond Widgets: What a RIA Platform Should Offer
Oracle
REAs: Rich Enterprise Applications
Click For 2008 Event Webcasts
Everyone wants to lower their capital expenditures and increase operational efficiency - it's a sign of the times. The economy of the past 12 - 18 months has forced all organizations to do more with less and become more efficient. While everyone can identify with the request to do more with less, th...
SYS-CON.TV
SOA Patterns: Basic Structural Patterns - Part 1
Solving some of the more common issues related to services

Table 2 shows a couple of sample scenarios that can point you to consider the ServiceHost pattern.

Quality Attribute (level1)

Quality Attribute (level2)

Sample Scenario

Reusability

Reduce Development Time

During development, set the environment for a new service within 20 minutes.

Portability

Installation

The system has to support configuration of server per service as well as grid scenarios. During installation, switching from one environment to another should take less than an hour

Once you have a service up and running you need to decide whether the service should be passive and only wake up when a request arrives or if the service should be active and perform some chores such as publish its state and handle timeouts without waiting for its consumers to activate it. As its name implies, the Active Service Pattern allows a service to be active rather than passive.

Active Service
It's important for services to be Autonomous. Autonomy increases the loose coupling between services and spells greater flexibility for the overall solution. But what does autonomous services actually mean? One explanation I've heard was that autonomous means the teams working on different services can be autonomous. This definition means that there are few dependencies between the services as they only know each other by contract. This means that different teams can work independently, each focusing on its own service without stepping on each other's toes. While this is a nice "feature" to have, a much more valuable (as in "business value") definition is that the services are as self-sufficient as possible. Let's explain this using an example.

The Problem
Imagine a journal subscription agency such as Ebsco or Blackwell that needs to create a proposal for a client. The proposal service needs, among other things, to produce a "pro forma" invoice. To produce the pro forma, the service must get both the discount the business gives the customer as well as the discounts the business gets from the different publishers so that, for example, we can check if the proposal is profitable. Figure 3 shows a simple example for such a flow.

In the sample scenario the proposal service has to wait for two other services. While the customer service is internal and part of the same system, the publisher's discount service is most probably an external once - what will happen to our proposal service if the publisher's system is not online? The proposal service would be unavailable. Oops, even if we spent a gazillion dollars on making sure the proposal service was fault-tolerant, we now encounter a situation where it is unavailable. The reason is that the proposal service is coupled in time to the publisher service, which is external. The proposal service is not really autonomous.

How can I increase service autonomy and handle temporal concerns?

As the example above demonstrated, a passive service that only works upon request is problematic since the service might not be able to fulfill its contract (or its SLA) depending on how other external services behave.

One option is for the service to cache previous results, but this will provide a partial solution as it doesn't take care of data freshness and occasionally you'd have a cache miss and will need to contact other services anyway. Another problem with this approach is that when you have a lot of incoming requests and are "busy waiting" on the thread that handled the request on your service, you can get into a resources problem, as each of these requests is now waiting for external input.

Even if we manage to solve the caching problem mentioned earlier, we still need to be able to solve other temporal events. Temporal events are recurring or one-time events that are tied to time. For instance, producing monthly bills or publishing stock figures or any other recurring reports are all temporal events. One option to solve this is to choreograph the service from the outside. The problem with this approach is that you are externalizing business logic that is really the service responsibility. Remember that encapsulating business aspects are one of the reasons to go with SOA in the first place. We need to have another way to achieve this.

The Solution
Make the Service an Active Service by implementing at least one active class, either on the edge, the service, or both. Let the active class take care of temporal concerns and autonomy issues

The Active Service Pattern basically means implementing the "Active Class" concept on the service level (see Figure 4). "Active Class" as defined in the Official UML specification means "An object that may execute its own behavior without requiring method invocation." The same can be applied to services. This means that the service would have independent threads that are used to handle cyclic events such as monthly billing or publishing status. An Active Service can also monitor its own health, handle timeouts, and can even be used to handle requests.

•   •   •

This article is based on the book SOA Patterns (http://www.manning.com/rotem) scheduled to print February 2009. This article is courtesy of Manning Publications (http://www.manning.com). The ebook is available and sold exclusively through Manning Publications.

About Arnon Rotem-Gal-Oz
For the past 10 years Arnon Rotem-Gal-Oz has been an architecture and system designer of large distributed systems including C4ISR systems, IP customer care and billing systems, and BI engines. He has experience with a variety of technologies (.Net, J2EE, CORBA, COM+, X-Windows) on diverse platforms (Unix, Windows, Dos, AS/400). He currently works for Rafael as the Biometric line development manager.

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1

SOA World Latest Stories
This coming Tuesday, December 8, at 2:00PM EST, SYS-CON.TV will be broadcasting live from its 4th-floor studio overlooking Times Square in New York City a very special "Power Panel" in which Cloud Computing Expo Conference Chair Jeremy Geelan and three top industry guests will be looki...
If you are like me, you are regularly receiving unsolicited email from various quarters, telling you about the latest and greatest SEO solutions on the planet. Just buy the book, or guide, or download the promotional whitepaper and this expert will offer you the latest "Secrets" to sea...
There's a lot of talk about how we need to focus on our buyers' issues and provide them educational insights to help them learn what they need to know to make buying decisions. Heck, I say it in my book...in several places, I think. I've said it on this blog, and I'll continue to say i...
This past weekend I set out explore some of the extension capabilities of Google Wave. One of the weaknesses that have been identified by many is the lack of integration with email. For me, in particular, because Wave is new, many Waves are being orphaned as those playing and testing o...
More good news for cloud computing! Google last week released its once mysterious Chrome Operating System to open source. Chrome OS, available in 2010 – is a web-based operating system that promises to boot up super-fast on a netbook – way faster than the time it takes to start your ba...
In CloudBerry Lab we are striving to make our customer service better. In this competitive market with the abundance of free offerings this is the only way to stay afloat. One of the ways to keep customers happy is to be very responsive when it comes to support request resolution. Shou...
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON Featured Whitepapers
ADS BY GOOGLE