Search the web
Sign In
New User? Sign Up
service-orientated-architecture · SOA
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Real people. Real stories. See how Yahoo! Groups impacts members worldwide.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Making SOA A Reality – An Appeal To Software Vendors And Developers   Message List  
Reply | Forward Message #843 of 13971 |
Re: [service-orientated-architecture] RM-ODP

At 12:45 04/12/2003 -0700, David Forslund wrote:
>I'm not sure what you mean by an object-specific interface/API.

Ok. Please bear with me, I'm going to try to write this one down so it will
be a long post.

Example. A "service" can count sheep, reset the sheep counter, and can tell
you how many it has
counted since the last reset.

In an object world, you do something like this:

class MyService:
def RegisterASheep(Sheep):
...
def GetTotalSheepSeen(Sheep):
...
def Reset():
...

The three method signatures above constitute an object-specific
API/interface. This interface is *exposed* to those who wish to use the
object. Either by means of a published API or some sort of run-time
inspection mechanism.

This works ok in a system where you have control over all endpoints. It
works especially well within a single memory space, in a single process.
The problems start when you step outside that, and start distributing the
application. Two main things happen:

1) You do have control over all endpoints. You do not control all the
interfaces - you have to work with those created by other people. Now it
becomes harder to evolve your own systems as you do not have a complete
sphere of influence over the object space.

2) The presence of an unreliable, high latency medium (the network) between
objects is the source of problems. When a router or something goes down,
the entire state of the system is contained in a distributed
intertwinglement of object references and is it is hard to recover without
loss. You can in theory make it robust, with for example two phase commit
but that has real problems over anything other than tighlty controlled
intranets.


In a services world (my bizarre, minority vision version), this API
disappears. The Service is now an opaque blob of code. We know nothing
about it except that it produces/consumes XML documents conforming to some
published schema or schemas.

(a)
In RESTian terms, the service is a resource that counts sheep. We interact
with it using standardised, non-object specific methods. In HTTP, these are
primarily, GET, POST and PUT. We "expose" a URI for the service - that puts
in on the Web.

We, use GET to find out how many sheep there are.
We use POST to announce the arrival of another sheep.
We use POST to reset the sheep counter.

In the POST cases, we have payload to send. Both of these are changing the
state of the resource. We use XML documents to describe the actions we require:

In RelaxNG Compact Syntax form, something like this:

MyService = element SheepService ( ResetSheepCounter | IncrementSheepCounter).


(b)
My version of an SOA builds on top of (a). Under the hood, the GET and POST
methods do not directly interact with the Sheep service. Both GET and POST
methods are transformed into XML messages that are enqueued to be handled
by the core service. The core service knows absolutely nothing about the
outside world except that it has a source of inward bound
messages/documents and a mechanism for sending documents to the outside
world on an outward bound message/document queue.

Furthermore, in my version of SOA, the loosecoupling of (b) is a design
time abstraction that is not necessarily present at run-time. By this I
mean that any half decent SOA architecture will be able to leverage
knowledge of the location of (a) and (b) so that at run-time, the loose
coupling layers are compiled away.

However, the fact that *the loose coupling is right there in the heart of
the design* means that the SOA can be deployed in a distributed fashion if
required. In that scenario, the asynchronous, message centric, reliable,
once and only once delivery nature of the data flow gives the system a real
edge in terms of reliability and ability to gracefully recover from failures.

Of equal if not greater importance is the fact that the loose coupling
between service logic and the outside world means that it is trivial to
*intermediate* between a service and the outside world. This ability to
splice in arbitrary cleverness on front of a service is known as proxying.
The ability to proxy saves your bacon in a distributed environment where
you do not control all the services.

- It allows you to modify your own services without breaking your contract
with other services
- It allows you to handle changes in third party services gracefully
without breaking your own code

This stuff really, really helps when it comes to the main part of the
lifecycle of an realworld IT system. The phase that features 80% of the
time and money. They phase laughably referred to as "maintenace".


> If
>you have a service and invoke a function
>on that interface, that is an API. You can look at it as an object, if
>you wish, but you don't have to. You have to
>locate the service before you can invoke a function on it. If you only
>have one method on any service, then you have
>done nothing to provide interoperability.

Au contraire, document centric, bits on the wire are a wonderful form
of interop because it is not predicated on consensus amongst communicating
parties! The real boon of loose coupling is that you can *intermediate*.
You can transform data at service boundaries to meet the needs of other
producers/consumers.

I've been designing systems for 20 years and this is where I've ended up.
On-the-wire transformation is the only way to go.

The great lie underlying objects is that it is a simple matter of getting
consensus on the interface. Fact is, consensus on the interface is a pipe
dream outside of a very limited domain of utility objects. How far away are
we from a standard API for a nominal ledger? That thing has not changed
since the days of Charles Dickens and yet we have as many interfaces to it
as we have stars in the galaxy.

Interesting, the same lie occured in the SGML world, which is now the XML
world. THe idea that it is a simple matter of time and effort before we
nail the perfect model/interface for an invoice, a blog post, whatever. Its
the same pipe dream.

*interoperability* results from self-describing bits on the wire that are
loosely coupled between producer and consumer. The loose coupling means you
can *intermediate* to perform bilateral transformations to match products
to expectations.

Interoperability does not come from publishing or discovering N customer
interfaces where N is the number of object types in the universe. Firstly,
you will never get consensus - outside of a dictatorship - on what the
interface should be. Secondly, the interfaces will keep changing and thus
breaking other interfaces (welcome to the real world of system evolution
known as "maintenenance"!). Thirdly, the sheer weight of bilateral object
plumbing creates the software equivalent of the N-Body problem in physics.

regards,
Sean





Fri Dec 5, 2003 11:13 am

propylonsean
Offline Offline
Send Email Send Email

Forward
Message #843 of 13971 |
Expand Messages Author Sort by Date

... I'm not sure what you mean by an object-specific interface/API. If you have a service and invoke a function on that interface, that is an API. You can...
David Forslund
dwforslund
Online Now Send Email
Dec 5, 2003
12:32 am

... Ok. Please bear with me, I'm going to try to write this one down so it will be a long post. Example. A "service" can count sheep, reset the sheep counter,...
Sean McGrath
propylonsean
Offline Send Email
Dec 5, 2003
11:56 am

See below. ... This certainly is a good simple example. ... single memory, single process? This a very restrictive condition. One doesn't have to have ...
David Forslund
dwforslund
Online Now Send Email
Dec 6, 2003
12:36 am

... I've previously sent to this list a reference to an excellent book on this subject. The work is very comprehensive and lays out a lot of issues that need...
David Forslund
dwforslund
Online Now Send Email
Dec 4, 2003
3:57 pm

... David Forslund] ... Ak! Even worse - wall to wall object-think. Ugh! ... I couldn't agree more. I think you are twisting my words a bit David. ... State...
Sean McGrath
propylonsean
Offline Send Email
Dec 4, 2003
4:24 pm

... How so? You are rejecting an organization because of ideas it has rather than saying this is where the ideas that have been developed don't really help...
David Forslund
dwforslund
Online Now Send Email
Dec 5, 2003
10:00 am

[David Forslund] ... I don't understand this statement. ... David, this statement more than any other you have made, shows the extent to which you seem to have...
Sean McGrath
propylonsean
Offline Send Email
Dec 5, 2003
1:02 pm

... Sorry for the convoluted sentence. You seem to reject an organization for its name or general topic It would be better to reject it because its proposed...
David Forslund
dwforslund
Online Now Send Email
Dec 6, 2003
12:33 am

... I hope it's as short as a couple of years. When I first started pushing back on Web services, I figured some well known figurehead would catch on to my...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 4, 2003
9:47 am

... Right, because the reasons for people writing their own interfaces, schemas, message formats, etc. are deeply embedded in human psychology, culture, ...
Champion, Mike
mcraigchampion
Offline Send Email
Dec 3, 2003
6:26 pm

... Yes, I think in years to come, Microsoft's move on this front in Longhorn/Indigo will be seen as every bit as dramatic in the industry as their move to...
Sean McGrath
propylonsean
Offline Send Email
Dec 4, 2003
9:49 am

... I guess I need to learn more about Longhorn/Indigo. Where are the technical papers on this subject? ... What do objects do? How methods are implemented...
David Forslund
dwforslund
Online Now Send Email
Dec 4, 2003
3:58 pm

... [David Forslund] ... You see, in my world, the *methods* are invisible to the service developer. Methods are just an implementation technique you can...
Sean McGrath
propylonsean
Offline Send Email
Dec 4, 2003
4:39 pm

... How do you express the functionality of a service? Through a document that is passed through it? You need to express the semantics of a method, even you...
David Forslund
dwforslund
Online Now Send Email
Dec 5, 2003
9:58 am

... Yes in part. Some of the other functionality is inherent in the standard interface that all services have. In REST, these are the verbs GET, POST etc. In...
Sean McGrath
propylonsean
Offline Send Email
Dec 5, 2003
12:11 pm

I just came across a new article published today on this subject. Here is an extract: <<Microsoft is betting that most customers will be moving toward a ...
Gervas Douglas
gervasdouglas
Offline Send Email
Dec 12, 2003
12:41 am

... Perhaps, but what's more deeply embedded than those things is the desire for communication. Every distributed system ever developed that enables...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 4, 2003
9:50 am

HTTP is not an interface. We do need agreements on interfaces. Most of the current work seems to focus on one to one agreements rather than domain...
David Forslund
dwforslund
Online Now Send Email
Dec 4, 2003
3:56 pm

... Yes, it is. ... No, they don't. How do you request some data over a socket? You define an interface. How do you request some data over HTTP? You use...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 4, 2003
4:46 pm

... It is a protocol. There is an API to get to the protocol, but this is no more of an interface that the API to get to a socket is. There really isn't...
David Forslund
dwforslund
Online Now Send Email
Dec 5, 2003
12:33 am

... Suppose I told you that I have a daemon running on TCP port 999 of my machine. How do you plan on getting any data from it? Mark. -- Mark Baker. Ottawa,...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 5, 2003
10:00 am

... Connect to the socket, open an input stream from it, and read the input stream. What is on the input stream is up to you to tell me. That is the...
David Forslund
dwforslund
Online Now Send Email
Dec 5, 2003
3:24 pm

... The data magically appears? In my world, you have to *ask* for it. 8-) ... HTTP *is* a protocol. Respectfully, I just don't think you understand what a...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 5, 2003
5:34 pm

... That is what you do with an InputStream. You read bytes from it. For an OutputStream you write bytes to it. What could be simpler? ... I said earlier...
David Forslund
dwforslund
Online Now Send Email
Dec 6, 2003
12:31 am

... Last try. There's a difference between *receiving* data and *requesting* data. You're talking about the former, I'm talking about the latter. You don't...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 6, 2003
2:27 pm

Mark Baker wrote: This is a different issue than you brought up earlier. You asked how did I get data from a socket. The socket is below the protocol which...
David Forslund
dwforslund
Online Now Send Email
Dec 7, 2003
11:37 am

... Right. But connecting to a socket and receiving data are different steps. How you make the foreign host send some data is indeed part of the protocol, it's...
Jan Algermissen
algermissen1971
Offline Send Email
Dec 7, 2003
10:33 pm

... Sockets sit below most protocols. And protocols sit below most service layers. We can try t mash them together, but these distinctions are still useful...
David Forslund
dwforslund
Online Now Send Email
Dec 8, 2003
9:53 am

... Many reasons. The field of software architecture offers ample evidence about why generic interfaces are superior to specific interfaces for large scale...
Mark Baker
gonga_thrash
Online Now Send Email
Dec 9, 2003
9:58 am

I've read his dissertation. He is not convincing. I agree that simpler interfaces are generally better than detailed ones for broad application purposes, but...
David Forslund
dwforslund
Online Now Send Email
Dec 10, 2003
11:18 am
 First  |  |  Last 
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help