Hi list,

I've been thinking about how I would like to be able to use Tuscany
and SCA in a large deployment, and have been trying to work out a plan
for this.  Basically my idea is to try and implement a sort of
lightweight managed environment, using a few of the principles of
current application servers, but generally trying to keep things down
to a minimum, to ensure that everything is still independently
usable/testable/etc, and avoid the pitfalls of EJB environments.

My idea for a perfect environment is one where deploying a single SCA
contribution is as simple as starting some sort of server, and asking
it to host a composite and expose the services, just like you can do
now, but then seemlessly expand the system to include more machines,
virtual and physical as required, or add extra monitoring and failover
systems, and so on.

The core of the system would be a primary server, with a similar
function to, for example, weblogic's administration server.  You would
start this and import your contribution, and then be asked whether you
would like to run it.  This is basically a souped up version of the
domain manager module that exists in 1.x.  The next step in building a
distributed system would be to start a secondary server on the target
host, and connect this to the admin server, by giving addresses and
optionally keys.  You would then be able to target specific composites
to the secondary server, and the admin server would distribute
contributions and tell it to start.

At this stage it would necessary to define some sort of communication
protocol, preferably implemented using SCA of course, so that the
servers could keep in contact.  This is a bit awkward as it would
might look initially like some sort of proprietary extension to the
SCA standard, but something could probably be organised.  With this
all in place it would then be possible for the admin server to monitor
and control all secondary servers.  At any time that services were
down on these, the admin server could decide whether it was
appropriate to rehome the composite, either internally or at another
secondary server, and contact all servers with rewritten composites if
they need to access the moved service.

The admin server could also acquire any sort of extra management
functions as required.  The basic options would allow things like
starting and stopping services, controlling access, and so on.  A next
level could be replacing failed services, as described above.  Another
layer above that would be monitoring loads, and balancing requests
between hosts offering the same services.  As all services in the
domain would be on managed servers, it would be possible to
dynamically alter a secondary server to acquire a service from a
different location than it was original told - when a server was
overloaded another instance of the composite could be started
elsewhere, and half the users of that service provided with new
composites telling them of the new location.  Beyond that, I haven't
thought far, but it seems like there would be plenty of possibilities
- automatic updating of contritbutions would be a good one.

Importantly though, there would be no requirement for the admin server
to be always running.  At any time that the secondary servers are
functioning normally, they would be completely standalone, so the
system wouldn't be dependendent on any individual host.

This is basically then the spec for a project I'd like to work on.  I
should stress that I am really not in a position to make this thing
now, I just don't know Tuscany or SCA well enough, but I do intend to
work towards it, and would be very happy to hear from anyone who is
interested, or even who can suggest a different solution.  I have
considered how I would like to work with SCA, but that really does not
mean that I'm permanently wedded to a system like the one described
here.

So, any input will be warmly welcomed!

Ok, thanks everyone for your time.

-- 
Phil Housley

Reply via email to