Message from discussion E-VAN with Ian Robinson and Jim Webber
Content-Type: text/plain; charset=ISO-8859-1
Received: by 10.100.5.16 with SMTP id 16mr2252144ane.4.1247569209746; Tue, 14
Jul 2009 04:00:09 -0700 (PDT)
Date: Tue, 14 Jul 2009 04:00:09 -0700 (PDT)
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1)
Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe)
Subject: Re: E-VAN with Ian Robinson and Jim Webber
From: Richard Evans <richyev...@googlemail.com>
To: "Virtual ALT.NET" <firstname.lastname@example.org>
We have a desire to build in versioning into our SOA. Reasons for this
are to minimise risk and manage change carefully. The SOA deals with
high value transactions.
Given that for a versioned service you would at the very least version
the interface/contract, what is your opinion on versioning at the
If something goes wrong in a given system, one of the first places to
fault find is to look at what has changed. If you can say a given
version of a service has had no change interface and implementation
wise, the fault is less likely to have occured within the service. The
drawback to this approach is that the version of the service can
stagnate, and become difficult to migrate to the latest code. The
benefit is that clients of the service have high confidence in the
system because they know nothing is changing.
Another school of thought is that given a sufficiently full regression
test pack we should be less concerned with the implementation and more
about the contracts/interfaces/behaviour. Thus with the introduction
of each new version we can move older versions of services onto the
latest code. This keeps our code up to date and the test pack
maintains our confidence in the behaviour of the system. Given enough
successful iterations the approach becomes part of everday life.
Obviously if the test pack is insufficient, a change could break a
client. At this point you could argue the consumer contract is not
sufficient and it is the responsibility of the client. The client
could argue, why did you change it when it was working okay?
My opinion is that both options have something to offer, I'd be
interested to know your opinion on the matter.