When is a Service Not a Service?

Conceptually, I like both Service Oriented Architecture (aka SOA) and Software as a Service (aka SaaS). However, I think we’ve done the industry a disservice by overloading the term “service”.

John deVadoss likes the following definition of SaaS from Wikipedia. So do I.

Software as a service (SaaS) is a model of software delivery where the software company provides maintenance, daily technical operation, and support for the software provided to their client. SaaS is a model of software delivery rather than a market segment; it assumes the software is delivered over the Internet. Software can be delivered using this method to any market segment including home consumers, small business, medium and large business.

To paraphrase, SaaS is software that traditionally you might have bought, installed and run yourself but instead now can access over the network where someone else is responsible for installing and running it. For example, instead of buying, setting up and managing my own mail server to handle a single @devhawk.net email address, I use the WL Custom Domains service.

SOA on the other hand isn’t a model of software delivery, it’s a model of software segmentation. Again, here’s the Wikipedia definition, this time for SOA:

There is no widely-agreed upon definition of Service-oriented architecture other than its literal translation that it is an architecture that relies on service-orientation as its fundamental design principle.

Err, that’s not very helpful. Let’s check out the OASIS definition (cribbed from Wikipedia).

[SOA is] A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations.

Well, at least it’s not a self-referential recursive definition. But it is littered with committee-speak. (Who talks like that in real life?) Frak it, here’s my definition:

SOA is a way of implementing IT systems as a web of interconnected yet independent loosely coupled subsystems (typically called services) instead of as big honking systems we have traditionally built that tend to be unwieldy, in-agile, difficult to change and probably obsolete by the time they were deployed.

We could argue about the language, but you get the point. There would be a ton of argument about the size of the subsystems (i.e. the service granularity), but I think most people can agree that SOA encourages building multiple smaller interconnected subsystems instead of one big (honking) system.

Which brings me back to my original point: Service, in the SOA sense, describes the approach to factoring parts of an software solution. Service, in the SaaS sense, describes a software delivery mechanism. Certainly, you can use both together and take an SOA approach to building a SaaS product. But you don’t have to. So having the same term “service” used in both is very confusing.

How many SaaS products use SOA today? I would guess “not many” since there hasn’t been much demand for it. When you’re selling to the long tail of the LOB market, support for service-oriented integration isn’t a critical selling feature. As SaaS becomes more attractive to larger companies (i.e. ones with dedicated IT staffs), using a SOA approach will be more important to SaaS product vendors. So they will converge in a way, but not in the way their naming suggests.

Of the two uses, SaaS seems closer to the dictionary definition of service. Maybe the S in SOA should stand for “Subsystem”? Nah, I like the term “connected systems” better than “service oriented” anyway.

Morning Coffee 49

  • The eBay Architecture SD Forum presentation that spawned the whole Transactionless meme is available here. As I reported yesterday, it doesn’t call for going completely transactionless as Martin suggested. It calls for going without distributed transactions, which I agree with 100%.
  • More interesting than the transactional aspects, I found the data tier functional segmentation information facinating. Too bad those guys aren’t using our platform, SSB was expressly designed for exactly this sort of segmentation. I also liked that step 1 for “massively scaling J2EE” is to “throw out most of J2EE”.
  • After going mostly dark since last august, the manager of my old team John deVadoss has been blogging up a storm since the beginning of March. So has my old boss Mike Platt. I wonder what happened at the begining of March? Here’s hoping this blogging fever spreads on my old team.
  • Joe McKendrick: “The bottom line is that ROI on SOA is an enterprise challenge, not an IT challenge.” Truer words are rarely spoken.
  • The rumor mill on the Black Xbox 360 “Elite” are coming fast and furious. I don’t care about the HDMI port (my HDTV is five years old and doesn’t have one) but I would like a bigger hard drive…