Robin,

        You raise some excellent points.  Note, all I said was that it had
to be versioned due to the realistic fact that everytime a service changes
you cannot expect the service consumers to change as well, at least not for
some period of time thereafter.  This is pragmatic stuff we learned from the
early days of EDI.

        To your point more succinctly, what are we versioning when we
version a service.  Loose coupling means we do not have to version the
implementation as long as the interface stays the same.  Hence, I can fix or
change my zero-bond calculator to provide the street with the best deal for
me without impacting their systems that have consumed my zero-bond
calculator to price them for clients.  So, I would say we're not versioning
the implementation.  That's supposed to be able to change.

        What I believe we are versioning is the CONTRACT.  I capitalized the
word because I believe it's too oft forgotten in this SOA realm by those
that take too technical a tact to its existence.  Underlying every service
is a service contract.  It's what tell X how to talk to Y and what Y can
expect from X.  Over time I expect contracts to become much more complex
entities (let me restate these HAD BETTER become more complex entities if
this thing is going to work long term), thus it is the contract that we are
adhering to that must be versioned.

        This will have legal implications when the service contract and the
legal binding are intersected as they will most likely become in
Service-Level Agreements.  Hence "we agreed to 3% error rate in version 1 of
our serviced, but updated that to 2% in our version 2" has serious
implications when $3million is lost in a financial deal based on version 1
of the service because they assumed 2% error based on using the wrong
version.

        Robin, my only area of confusion now is ... where was I supposed to
respond to you, here or on your blog! :-)

JP


-----Original Message-----
From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of
robinmulkers
Sent: Tuesday, November 08, 2005 5:31 AM
To: [email protected]
Subject: [service-orientated-architecture] Re: Basic SOA principles

Hi all,
I like the current path that this group is following about SOA and I 
would like to comment one of the principles laid out by JP 
Morgenthal that is related to versioning. He says that a SOA should 
be "Versioned - multiple versions of the same service should be able 
to co-exist to maintain backward compatibility in a changing 
environment".

Well, I think there are some fundamental questions to be answered 
related to versioning and change management in a SOA.
- Are all services immutable?
- What do we want to version, the service interface or the service 
implementation?
- What does software version numbers really mean?

First of all, are we talking about immutable service interfaces here?
Does it mean to us that once a service interface is defined, it 
never changes, only the implementation or the location of the 
service can change?
Will a new version of an existing service always result in a new 
service?
Does some key identifier of the service includes the version number?

Well, if your answer to the 3 questions above is yes, this approach 
works in practice, it is well possible to have several versions of a 
single service running at the same time.

But this approach is also extremely expensive, it might result in 
service consumers using different views of the same service 
(different stubs or proxys) and might result in maintaining 
different service implementations on the server side. Not really an 
ideal world of reuse where several deprecated versions of a single 
service must be kept alive because of an installed base of consumers 
using it!

Of course, there are more dynamic techniques allowing a client to be 
much more independent of a particular service version. But how do we 
know if a service consumer is using these techniques or not?
There are also implementation strategies on the server side allowing 
different service versions invocations to be transformed and routed 
to a single service implementation. But do we really want to manage 
this overhead of transformation and routing?

I have faced this problem myself and I want to share my experience 
here. I think that if we do not make a difference between changes 
that are backward compatible and changes that are not, we cannot 
have an efficient change management in a SOA or in composite 
applications in general.

I have a range of blogs about this problem here: 
http://blogs.ittoolbox.com/eai/applications/

What is your own experience with change management in SOA?
What are the best practices?

Thanks for your feed-back.
Robin

--- In [email protected], "JP 
Morgenthal" <[EMAIL PROTECTED]> wrote:
>
> 
> Here's what I propose:
> 
>       A) Loose-coupling - every service is atomic, self-describing,
> accessible, declarative, stateless and composite
>       B) Contracted - All services in an SOA are represented by a 
contract
> that describes its inputs, outputs, access policies, QoS 
requirements and
> error handling procedures
>       C) Manageable - all services can be individually managed or 
managed
> as a group
>       D) Versioned - multiple versions of the same service should 
be able
> to co-exist to maintain backward compatibility in a changing 
environment
>       E) Discoverable - services should be able to be discoverable 
at time
> of execution.
>       F) Addressable - A service should be able to be uniquely 
identified
> in a network
>       G) Distributed - Services in an SOA are separated by 
geographic and
> machine boundaries and, therefore, must be good netizen 
applications. That
> is, they must be developed with the ability to recover from loss of
> communications.
>       H) Point-to-Point - At any point in time one consumer uses 
one and
> only one producer
> 
> ------------------------------------
> Avorcor, Inc.
> JP Morgenthal










 
Yahoo! Groups Links



 







------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get Bzzzy! (real tools to help you find a job). Welcome to the Sweet Life.
http://us.click.yahoo.com/A77XvD/vlQLAA/TtwFAA/NhFolB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/service-orientated-architecture/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to