Here is a question has been on my
mind for quite some time - I have some strong viewpoints on it, but would like
to hear other viewpoints.
The general question is: When is something really a service-oriented
architecture (SOA)?
By this I do not mean "what is an SOA", "what characteristics does an SOA
have", etc. Rather, there seems to be a range of points on a continuum (call
it the "service continuum", perhaps) at which someone may declare that they
have implemented a service-oriented architecture.
In the past, I have pondered the
following more specific question (please note that this is all scoped to Web
Services-based SOA for ease of explanation):
If I have 2 Web Services that
communicate, do I have an SOA?
We can say "certainly not!". One
can do point-to-point integration with Web Services just as easily (to a
certain degree) as without, with redundant Web Services rather than shared Web
Services (a violation of one of the foundational tenets of SOA, which is
shared services).
Now let's add some more
characteristics:
- The 2 Web Services share another Web Service in
common for their processing (i.e. we now have a "shared services"
scenario)
- The service provider one or more policies for a service consumer that
interacts with it (these policies may address security, QoS, etc.)
- There is an electronic contract for interaction with the service
provider (e.g. WSDL)
Add to this the fact that many (correctly, IMO)
consider SOA to be a form of Enterprise Architecture, which (at least in my
mind) implies enterprise-level benefits.
So the more specific question is:
Given the second scenario above (with the various
added characteristics) and the fact that many consider SOA to be a form of EA
---
Is this second scenario large-scale enough that
it *really* may be considered SOA? IOW, how large-scale does such an
implementation need to be to *truly* be considered service-oriented
architecture? When does one arrive at that point?
Joe