This
is starting to sound like conversations about how many use cases are adequate in
a RUP based project.
Maybe
there is a bit of metrics that can be applied based on the complexity of the
given business problem versus the size of the company.
A
payroll company may be small in nature but might have a varying degree of
services depending on the states they manage payroll, type of companies they
manage payroll, etc.... This starts to become an analysis of what type of
business problem can have a certain amount of services. Not sure we want to try
and take this on within this TC or not. Maybe there is a way to take a
couple business problems and provide a theoretical probability
distribution?
-
Dan
-----Original Message-----
From: Davies Marc
[mailto:]
Sent: Friday, October 28, 2005
8:59 AM
To: Beack, Theo; Jones, Steve G; Ken Laskey; Miko
Matsumura
Cc:
Subject:
RE: [soa-blueprints] Anti-Blueprints
Theo – I agree with
your expanded view regarding number of services approximates to a degree with
the size/complexity of a business. It strikes me that it would be an
interesting exercise to map scenario’s – if we could gather examples of
businesses of different sizes and assess the number of services each in turn
had implemented – would we end up with a metric that could provide a ‘rule of
thumb’ that said “Organisation of size {x} would typically deploy services of
quantity range {a-d}”. Clearly, there are exceptions to any rule but (and this
scenario is particularly Devilish :-), one thing I haven’t seen previously is
any clarity/agreement on what would constitute an ‘appropriate’ number of
services – or even an approximation.
It’s entirely
possible that several people on this list have done just that, and/or have
already obtained a view based on their conversations with colleagues etc. From
my perspective I’d say that every time I have a conversation with an Analyst,
I get a different number/range. In terms of my companies’ clients – well they
are sufficiently different in each case (at this time) to make a statistically
relevant analysis problematical.
Still – as has been
pointed out elsewhere on this thread – (and to stay mildly on topic)
anti-blueprints can frequently be of real benefit, IMHO its almost always
easier to begin a definition by deciding (even as a Straw Man) what *isn’t*
applicable.
Regards,
M.
Marc
Davies
Fujitsu
Business Unit
Chief Technology Officer
Architecture
& Design Group
Core
Services
Mobile: +44 (0)
7867 825118
E-mail:
Telephone:
-Hot Desking-
http://uk.fujitsu.com
This e-mail
is only for the use of its intended recipient. Its contents are confidential
and may be privileged. Fujitsu Services does not guarantee that this e-mail
has not been intercepted and amended or that it is
virus-free.
From: Beack, Theo
[mailto:]
Sent: 28 October 2005 00:46
To: Davies Marc; Jones, Steve G; Ken
Laskey; Miko Matsumura
Cc:
Subject: RE: [soa-blueprints]
Anti-Blueprints
Hi
Marc,
I wrote that email
quite early in the morning, so I was not as precise in my wording as I would
have liked. Anyway, I would like to further qualify my statement with regards
to the number of services.
I
don't consider the number of services to be an
accurate indication of either a good or bad approach, *if taken at face
value*.
You need the
appropriate context around the numbers to make sense of them. Let me use an
example to illustrate. When city planners are working on a new city master plan, how
do they determine whether a city or certain borough within that city
might be overpopulated? How do they determine whether there is sufficient
infrastructure and resources available to support the existing
population? How do they determine whether the existing
infrastructure can support future growth? Do they only look at the
number of people in the city and then make a judgement call whether it is
overpopulated or not and whether it can support future
growth?
I would venture to
say that their calculations and models would be far more complex and
incorporate a large number of different factors, in order to accurately
determine the appropriate population size.
As an example, if a
certain city had a population of 3 million, would that be an indication that
the city if overpopulated? It is difficult to say. If one knew that the city
is Hamilton, MT one would be safe to assume that Hamilton would be wildly
overpopulated. If the city on the other hand, was the borough of Manhattan one
would be quite safe in assuming that the city is not overpopulated, due to the
fact that it has adequate housing, transport infrastructure, utilities, water
supplies, etc. . . .
I think some of
same principles apply to SOA implementations. Organizations vary in size;
their IT environments also vary in size and complexity. A small company of
around $100M - $200M with an IT department of around 100 people and 10-20
different systems would most likely not require hundreds of services. If you
told me that they had 400-500 services, then I would most likely question the
appropriateness of this number of services.
If the organization
in question is a large multi-national corporation with revenues of several
billion $, one can be certain that it will have a much larger IT
infrastructure to support the business. The application ecosystem will be
large, with a lot of complexity and integration requirements. If the number of
services deployed is also within the 400-500 range, it would still be
difficult for us to tell whether there are too many services and whether they
are making good reuse of all these services. I think it would be prudent, in
both cases, to investigate and do a proper analysis to determine whether good
SOA design principles have been followed.
So in summary; I
agree that the number of services should be one of the factors that one need
to incorporate into the analysis, while factoring in the context of what you
know about the overall application infrastructure, complexity, integration
requirements, etc.
Regards
Theo
From: Davies Marc
[mailto:]
Sent: Thursday, October 27, 2005
06:52
To: Beack, Theo; Jones,
Steve G; Ken Laskey; Miko Matsumura
Cc:
Subject: RE: [soa-blueprints]
Anti-Blueprints
Sorry Theo but, I
think Steve is on to something with anti-patterns and I *do* consider the number of services to
give an indication of approach.
In particular your comment:
- it might even
be a cultural barrier; developers might think using services is a
waste of time and prefer to integrate their apps in another
way
…Implicitly indicates
to me that (in that example) this is not an SOA environment. An SOA journey
must have strong centralised (architectural) control ensuring developers do
not just ‘do it’ how they think is the best way forward for “their”
application (which in reality of course, isn’t their application – it’s the
business’ application, a fault many of us have suffered from at some point in
our careers, I’m sure :o)
SOA is not WS (IMHO),
SOA does mean strong Governance and adherence to standards, and this may
frequently upset Developers!
M.
Marc
Davies
Fujitsu
Business Unit
Chief Technology Officer
Architecture
& Design Group
Core
Services
Mobile: +44 (0)
7867 825118
E-mail:
Telephone:
-Hot Desking-
http://uk.fujitsu.com
This e-mail
is only for the use of its intended recipient. Its contents are confidential
and may be privileged. Fujitsu Services does not guarantee that this e-mail
has not been intercepted and amended or that it is
virus-free.
From: Beack, Theo
[mailto:]
Sent: 27 October 2005 05:15
To: Jones, Steve G; Ken Laskey; Miko
Matsumura
Cc:
Subject: RE: [soa-blueprints]
Anti-Blueprints
I
don't consider the number of services to be an
accurate indication of either a good or bad approach. I think that one
has to be more precise in measuring the relative maturity of the services that
exist. Factors that can help one determine the "maturity index" of the SOA
implementation might include:
- level of
reuse,
- scope of the
services,
- service
granularity,
- adherence to
architectural blueprints,
- compliance with standards, etc.
This is not a comprehensive list and one can take different views on
how to measure the maturity of the services implementation, but the point I'm
trying to illustrate is that one has to look at this from different
angles in order to determine whether the approach which has been followed is a
good or "bad" one.
The
statement “We’ve got hundreds of web services and it hasn’t
helped us at all” is only a symptom of a potentially
larger (or real) problem. The lack of reuse can be caused by factors
such as:
-
developers might find it difficult to find the
appropriate services,
- several
conflicting services might exist that provides similar
functionality,
- instability or
lack of performance of services & infrastructure might cause developers to
abandon the use of services,
- it might even
be a cultural barrier; developers might think using services is a
waste of time and prefer to integrate their apps in another
way
In my experience
many organizations create services without doing any planning. Many tools
allow them to do this in a very easy manner and developers could easily
created a large collection of services, without any planning. Following a
good services design approach might be an important step to create truly
reusable services. Determining the purpose of the service, who the primary
consumers will be, usage patterns, interfaces required for the various
consumers, service security, documentation, proper metadata, etc. all of these
aspects of a service should be considered and might play an important part in
making it a usefull and widely used service.
Regards
Theo
From: Jones, Steve G
[mailto:]
Sent: Tuesday, October 25, 2005
17:12
To: Ken Laskey; Miko
Matsumura
Cc:
Subject: RE: [soa-blueprints]
Anti-Blueprints
In other words has
someone just “right-clicked” on a JavaBean (or C# object) and selected “Create
Web Service” from the menu, or was there actually planning and intent?
I’ve actually seen organisations where just this sort of exercise has
been undertaken creating the thousands of web services problem.
Number is part of the
issue, its indicative of a bad approach when organisations create thousands of
DISTINCT (as opposed to instances) of web services. But the Service
should have a qualitative impact on the “real-world” or provide a useful
function (e.g. mathematical calculation) this stuff is in the SOA-RM as being
the basis of service.
In terms of numbers
I’d say that volume is an
important indicator of bad practice, not a definitive guide but its getting a
more and more common statement “We’ve got hundreds of web services and it
hasn’t helped us at all”. Clearly its possible to have lots of top
quality services, in the same way as in theory its possible for people to
write decent multi-threaded code but in practice both are normally indicators
of problems.
Steve
From: Ken Laskey
[mailto:]
Sent: 25 October 2005 21:47
To: Miko Matsumura
Cc:
Subject: Re: [soa-blueprints]
Anti-Blueprints
The question is less one of number than independence.
Does the original interface (method call) provide a capability that is useful
beyond the object with which it is connected and can it be used without being
part of a sequence with other methods from the same object?
Ken
On Oct 25, 2005, at 4:10 PM, Miko Matsumura wrote:
Good feedback
Duane.
This is a good
topic, thanks for introducing it, Steve.
The number of
services *is* a quantitative measure, but perhaps not a very helpful one?
=)
I'm pretty sure
there's an antipattern here, and I think perhaps there could be some kind of
way to assess this. I think another variable in this mix is the extent to
which the registry repository in question can help with respect to discovery
and classification as well as governance. The thing that worries me is when
I see people assuming that fine grained (object level) services will be
reused, when the reality is that OO didnt generate that much reuse from even
the guy in the next cubicle, let alone across the company or across the
planet.
I think this is
less of a gross number of services antipattern so much as a coarse-grained
vs fine-grained antipattern...
Best,
Miko
From: Duane
Nickull [mailto:]
Sent:
Tuesday, October 25, 2005 12:57 PM
To:
Subject: RE:
[soa-blueprints] Anti-Blueprints
I disagree with
this anti-pattern.
I am not sure that
the number of services is really a quantitative measure of SOA. A grid
computing cluster administrator may be able to rationalize such behavior,
although it may seem absurd in other areas such as Amazon deploying a
service for each book it carries vs. deploying one service that allows the
consumer to parameterize the book title.
Perhaps a better
measure would be the development of some test criteria to ascertain whether
a contemplated service is a good candidate for repurposing beyond a small
number of consumers. This should be based on alignment with LOB and
presumably different implementers will have different criteria for
quantifying such.
Duane
From: Miko Matsumura
[mailto:]
Sent: Tuesday, October 25, 2005
12:41 PM
To: ;
;
Subject: RE: [soa-blueprints]
Anti-Blueprints
I just added a
"microservice" antipattern where programmers put 10000000 WSDLs into a
registry just because their IDE lets them do so.
Miko
From:
[mailto:]
Sent: Tuesday, October 25, 2005
11:54 AM
To: ;
Subject: RE: [soa-blueprints]
Anti-Blueprints
Steve,
Good idea. I put up
the first drafts of them at: http://blueprints.jot.com/WikiHome/SOA+Anti-Patterns/SOA%20Anti-Patterns
Let me know if I
correctly eloborated and named them for you.
Thanks,
Dan
-----Original
Message-----
From: Jones, Steve G
[mailto:]
Sent: Tuesday, October 25, 2005
11:21 AM
To:
Subject: [soa-blueprints]
Anti-Blueprints
The SOA Blueprints will lay
down a “best practice” set of guidelines and templates for delivering SOA.
This will definitely be a positive thing and help expand and firm up
people’s understanding of SOA. One thing that the group states that
it will do is define standards and guidelines, does this mean that allied
to our blueprints we must also consider the “anti-blueprints” (analogous
to anti-patterns) that must be avoided. So for instance focusing on
process over service (bad), only thinking of web services (bad) etc
etc. Defining the blueprints give guidance towards success criteria,
but should we also give guidance on failure criteria for acceptance of a
system as being “SOA”.
Not sure whether this should
be in the TC as its laying down best practice, and not to increase the
already large workload… but it needs to be somewhere.
My top 5 are
1)
If you’ve started with an
enterprise “best practice” process map you are NEVER going to be SOA and
90% probability your system will be inflexible or fail.
2)
Web Service point to point is
STILL point to point, doing a bad practice in XML doesn’t make it
better
3)
Splitting into two separate
tiers of Service and Process with separate rules and governance results in
divergent solutions
4)
Creating “business” services
based on the belief that IT understands the business results in services
that meet neither IT nor business goals
5)
Building your own proprietary
XML-RPC stack to give yourself “control“
The last could still be SOA
from one perspective, but I’ve yet to see it done well when the driver was
a belief that its better done in house than using standards. When we
get the official Wiki it could be something to document via that
route.
Steve
___________________________________________________________
Steve Jones | Capgemini
CTO, Application Development Transformation
T +44 870 906 7026| 700 7026| www.capgemini.com
m:
txt: +44 (0) 7891157026
Join the Collaborative
Experience
___________________________________________________________
This message contains information that may be
privileged or confidential and is the property of the Capgemini Group. It
is intended only for the person to whom it is addressed. If you are not
the intended recipient, you are not authorized to read, print, retain,
copy, disseminate, distribute, or use this message or any part thereof. If
you receive this message in error, please notify the sender immediately
and delete all copies of this message.
------------------------------------------------------------------------------------------
Ken Laskey
MITRE Corporation, M/S H305 phone: 703-983-7934
7515 Colshire
Drive fax: 703-983-1379
McLean VA 22102-7508
This message contains information
that may be privileged or confidential and is the property of the
Capgemini Group. It is intended only for the person to whom it is
addressed. If you are not the intended recipient, you are not authorized
to read, print, retain, copy, disseminate, distribute, or use this
message or any part thereof. If you receive this message in error,
please notify the sender immediately and delete all copies of this
message.