Site Archive (Complete)
Architecture Blog: Treating Services as Products
Architecture & Design
PATTERN LANGUAGE

Modeling, Managing, Making it Right.

by Jonathan Erickson
IF YOU BUILD IT

... Will they Come?

by Arnon Rotem-Gal-Oz
June 05, 2007

Treating Services as Products

Yesterday I attended an SOA governance presentation by Brent Carlson. The presentation was basically an updated version of an article he authored in 2006 "SOA Governance Best Practices: Architectural, Organizational and SDLC implications".


As a tool vendor, Brent has a lot of focus on the governance processes which I don't completely agree with (I prefer Jim Coplien's organizational patterns approach; see my post from last week). I also think the reuse figures he cites (registration required) are a little optimistic common place for what I consider the right granularity for services.

He also made a few points that I strongly agree with:

  • Brent talked about difference between the needs of run-time service repository (e.g. UDDI or an ESB) and a development time one. You need to address the services and their interactions during the development and you need to do that in a way that would be easy for the development teams. For example, one thing you want to log is usage, who is using the services since that will let you perform impact analysis when you have to make a change
  • Building an SOA for an organization is an iterative process not a "big-bang" effort. This means you can't do just top-down design. you need to be pragmatic and also roll out working services.

The reason for this post, however, is the insight Brent gave regarding treating services as products rather than applications.

Treating services as products is important because even if you don't believe that the SOA initiative should be an iterative process, once the move is finished you would have quite a few services deployed in your organization. These services would integrate and interact with other services -- some of which outside of your organization. You would also want to capitalize on flexibility claim that SOA makes and adapt your services to the changing business needs.

The challenges you face regarding updating and upgrading functionality, anticipating consumer's needs, allowing consumers to get used to changes, etc. are exactly the challenges product management techniques and principles come to answer.

Treating services as products means a lot of things. Let's look at a few examples: For one, it means predictable release cycles services like products get updated over time you want service users to be able to cope with this changes. Predictable release cycles means they can get organized in advance. Another aspect is the emphasis on backward compatibility; e.g. orderly deprecation of features and version management. One other thing is introducing a "product manager"; someone whose responsibility is to interact with customers, and potential customers, understand their needs, and build a release road map for the services.

You might be used to doing some of that with applications but thinking about services as products makes all this more explicit and that in itself is also important.

Posted by Arnon Rotem-Gal-Oz at 07:21 AM  Permalink




 
INFO-LINK


Related Sites: DotNetJunkies, SD Expo, SqlJunkies