This is more a high level discussion and is concept/design oriented.
 Please feel free to chime in with your thoughts.  I look forward to the
collective wisdom of this list.  I is my hope that a a constructive
discussion can happen around this subject and the powers that be can gain
insight gleaned from the discussion.

First, a little background.  I was in the Help Desk/ITSM space, left that
arena for a few years, and have since returned.  After working with the
ITSM application for a few short months I am realizing how
tightly ingrained these applications are with one another (incident,
problem, asset, change, cmdb, etc.).  The tightly coupled integrations make
certain tasks exceedingly difficult, for example:
- using an outside system for change management (or any other process, for
that matter)
- upgrading a single application in the stack (e.g., change management)
- integrating outside applications with the ITSM applications

Non-remedy or custom remedy applications are unable to easily or
effectively communicate with the ITSM applications in the same way that the
ITSM applications communicate with one another.  Even different versions of
the applications are unable to effectively communicate.

Consider that each application facilitates a well defined process.  Each
process has inputs, outputs, and actions.  The ITSM applications could have
(and leverage, internally) interfaces to communicate their inputs and
inputs, outputs, and actions.  Java Interfaces are an implementation of
this design pattern that are a prime example of the flexibilities that this
can afford.

*Interfaces form a contract between the class and the outside world...*
*-- *http://download.oracle.com/javase/tutorial/java/concepts/interface.html

Interfaces can be versioned (e.g., 'Create Incident' interface version 1
supports a field ,Priority; 'Create Incident' interface version 2 supports
a new field, Urgency, etc.).  By creating an interface (i.e., a contract)
and back-end instrumentation to implement the interface, applications could
be upgraded independent of one another; all the communicating components
need to know is the version of the interface and that dictates the
capabilities of said interface.  With this idea, I am borrowing from the
approach that many of the SOA stacks are implementing:

*One the most popular approaches for dealing with changes is versioning.
Versioning assumes simultaneous existence of multiple (different)
implementations of the same thing, with every implementation
distinguishable and individually addressable. In the case of SOA, service
versioning equates to coexistence of multiple versions of the same service,
which allows each consumer to use the version that it is designed and
tested for (see Figure 1). In this case, a new version of a service is
created based on the requirements of one or more consumers, which can start
using this new version immediately. The other consumers of this service do
not need to switch to using the latest version immediately, but can
continue to use the versions of the service they were designed for and
tested with. They can switch to the latest version of service, based on
their own development and testing schedule. Multiple coexisting versions of
the same service in the system allows for the independent life cycles of
services and their consumers and minimizes the overall impact of the
introduction of changes. Although the necessity of such versioning
mechanism may be obvious to anyone who has ever dealt with services, this
topic still has not penetrated the mainstream of SOA publications and
implementations. *
-- 
http://msdn.microsoft.com/en-us/library/bb491124.aspx#jour11version_topic3

A few key concepts here:
- Interfaces and versioning
  - Well defined interfaces
  - Interface life-cycle (e.g., the last 3 major versions of the interfaces
will remain supported, after which, they are deprecated)
- Loosely coupled applications (to the extent that the applications could
run on different physical servers/databases) that leverage only the
interfaces the applications provide as a means of communication

Such a change to the current paradigm would open the doors to a lot of
things that are simply not feasible at this time, all of which start with
better interoperability.  This is something that is important in the cloud
space.  A proper implementation of the above ideas would lead an
application that is easily pluggable into a SOA backbone so that the
services the applications provide can be used by any other application that
is able to reach out to the SOA backbone.

I think that running each application within ITSM on separate servers would
be a good gauge of an effective implementation of this paradigm.

I look forward to your thoughts.

Regards,
Axton Grams

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"

Reply via email to