Welcome to MSDN Blogs Sign in | Join | Help

Welcome to The Metaverse

Navigating the service-oriented, identity aware metaverse

News

  • Disclaimer:
    The content of this blog are my own personal opinions and do not necessarily represent Microsoft's position, commitments or strategy. In addition, my thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out of date posts to reflect my current thoughts and opinions.




    Add to Technorati Favorites
What is SOA?

We in the IT industry in very real danger right now of destroying the value of Service Orientation. There is too much assmption that SO(A) is Web Services (WS). In many arenas, you’ll even hear the two terms used almost interchangeably. Many companies and vendors are adding the term SOA into almost every marketing brochure and web page that they own in order to catch onto the coat-tails of this new buzz-term. This is very dangerous for two reasons:

  1. Nobody has yet clearly and universally defined what SOA is
  2. By muddying this term with too much spin, we'll loose the essence and value of what we're trying to promote.

SOA… what does it mean? Can you find two definitions that agree? I can’t! Is it Service Oriented Architecture? Applications? Analysis? Aardvaarks? I don’t know and I am pretty sure that there are few others who can successfully elucidate a generally accepted definition. This is why we don’t use the term SOA and opt instead for “Service Orientation” (SO). We’re not trying to change the game here – we’re trying to say what the game is in terms that are relevant to the real-world and can be applied to real problems and situations.

SO is a “pure abstract” design and architectural concept that talks just about the goals we want to achieve when building systems that are less prone to the multitude of issues that plague distributed systems today. These are just a few of the goals that SO is trying to deliver:

  • Assume a "Sphere of Control": We need to actively understand what portion of our systems we have control and influence over. We can only control so much, and yet today, we (inadvertantly or deliberately) make all kinds of assumptions and build-in all manner of dependencies around the ability of others to support given protocols, levels of reliability, etc. What if they can't / don't do what we need?  Outside our sphere of control, we can trust no-one and should plan accordingly.
  • Minimize the impact of choices: Today, we have to make hard decisions around how to achieve the highest levels of performance, security, interoperability, availability, etc., but have to sacrifice too much in order to. We shouldn't have to make so many hard choices. We should be free to architect our systems once and, so long as the design is sound, we should be able to change transports, protocols, security mechanisms, etc., without requiring change to the implementation of a service.
  • Interop, Transports and Protocols: "How will we provide access to our <insert platform of choice here> based system from other platforms? Will we provide bridges and translators or dumb-down our systems to the lowest common denominator?" In the future, our systems should be able to expose their capabilities via a number of transports and protocols without requiring code/implementation change, and where possible, requiring little/no administrative effort!
  • Autonomy & Coupling: How “independent” are the services within your system? Today we build systems that (despite best efforts) often end up as tightly coupled intertwined complex monsters. We’re aiming to build services that are independent and maintain the data and processes necessary for their successful operation and are yet highly co-operative with other systems in their environment
  • Resilience & Availability: How does a system deal with failure, both within its sphere of control and beyond? What happens if a service on which you depend for part of your operations crashes unexpectedly? In SO systems, we aim to be able to gracefully detect and handle such problems in a manner that is recoverable and does not crash our own system.
  • Performance: Which parts of which platform should I use in order to achieve the desired levels of performance? If I choose to make my service interoperable, does that mean I have to sacrifice performance? These are the kinds of choices we shouldn’t have to make and ones which will be decreasingly important as platform vendors deliver technologies that make it easier to compose systems built on their platforms.

There are many other such considerations, but it's these kinds of issues that SO aims to resolve. Designing with an SO mindset helps us take fewer limitations introduced by having to make technology/implementation choices too early in the design process by giving us more flexibility and freedom.

SO is all about designing and building distributed, connected systems the right way and the further away from this goal we travel, the less likely it is that we'll arrive at our destination. Let's get back on-track!

 

Posted: Tuesday, August 24, 2004 2:13 PM by RichTurner666

Comments

Matt Powell said:

# August 24, 2004 7:24 PM

On the road to Indigo said:

# August 24, 2004 8:36 PM

Random Notes said:

# August 25, 2004 8:42 AM

Scott Lock's Blog said:

# August 25, 2004 8:57 AM

Radovan Janecek: Nothing Impersonal said:

Rich reminds SO!=WS. I think this is true in theory. In reality, WS are mandatory condition for successful adoption of SOA. Rich also nicely describes how SOA is overloaded and misunderstood. I like the SOA->SO transition too. However, I feel that the 'A' has some importance (more and more). I wanted to find answers in Rich's What is SOA? post....
# August 25, 2004 11:19 AM

Lockergnome's Web Developers said:

In what some might consider to be a constant reminder that you should be careful about labeling things, "On the road to Indigo" looks at the problems with all of the marketing firms using the term "SOA so loosely....
# August 25, 2004 11:28 PM

Ben Vanik said:

Nice explanation! I just got done watching the Aug 5 MSDN TV that you were in and I loved the format - all the questions Matt asked were the ones I had myself, and I felt you answered them better than many of the articles I had seen before.

Keep up the good work - I'm eagerly awaiting a peek at what you've all done with Indigo :)
# August 26, 2004 12:13 PM

On the road to Indigo said:

# August 27, 2004 2:22 PM

Stefan Tilkov's Random Stuff said:

In two recent posts, What is SOA? and SO != WS, Rich Turner argues that SOA is something more abstract than Web services, but that the easiest way to build SOA systems today is to use Web services. He also wants to drop the &#8216;A&#8217; from SOA, leaving us with Service Orientation. I&#8217;m trying to make up my mind by...
# August 31, 2004 4:50 PM

TrackBack said:

Zero. Blog. Toivo Lainevool's Blog.
# September 3, 2004 1:47 PM

Middleware Matters said:

At the end of last week I returned home from JAOO. It rules! Thanks to the great presentations, great panels, great organization, great social events, and overall great fun, it remains my favorite conference. Mark among others would be happy to know that in the SOA track and panel on the first day of the conference, we all agreed that the term "SOA" was misleading, in the sense that it's not really an architecture, but at best a set of guidelines and good approaches. I suggested using the term "service-oriented approach" or even just "service orientation" instead. The panel also largely agreed that service orientation was " href="http://savas.parastatidis.name/2004/07/01/95fc6391-417b-486a-8e30-33852ea5ba9e.aspx" target="lovethemessage">all about the message. Some of the audience disliked the fact that the panel couldn't come up with a strict definition for service orientation. Actually, this is a good thing. This is basically because there's no "one size fits all" solution. Phil...
# September 27, 2004 3:59 PM

On the road to Indigo said:

Something is really troubling me. You may have noticed that&amp;nbsp;I have been pondering the notions of...
# May 2, 2005 1:06 PM

Kamikaze Reloaded said:

Si alguna vez han intentado definir o explicarle a alguien qué es Orientación a Servicios (SO, Service

# January 19, 2007 7:19 PM

Graegert.com - » What Is SOA? Do You Know? said:

# February 11, 2007 6:41 AM
Anonymous comments are disabled
Page view tracker