Hi,

I've been thinking ahead a bit about a potential design change I'd like to make. At the moment, at a very coarse level, we have the "Core" which does just about everything :), which is comprised of a few modules, and the webapp/xmlrpc sitting on top of that. It looks something like [1]. It is pretty well separated from the UI, but the parts of the core are not well separated and hard to test, and the store/model is pervasive through everything.

I would like to propose factoring out the bit that does the building, something like [2].

This is not a totally radical change, though it will change the workflow a bit such that: * the builder has no database interactions. So it will be on the return events that contain results that get persisted in the database * notification will be based on the return events, not part of the build logic

Clearly demarcating where the database is used is a Good Thing I feel, and it then becomes a way to store and visualise results.

There are a couple of potential things that will later be possible with this architecture: - the requests could be made over REST and the events sent back over a JMS Q similar to GBuild - allowing us to move the builder to an entirely different server, and to have multiple builders. If each has a given set of installations/environment profiles we can then aggregate results for different platforms - you could run Continuum with just the bottom layer for a really simplified system. The only change we'd make here is that you'd hook up the notifiers and other event responses directly instead of the Q

I'd like to attempt this on a branch, making the minimal amount of change possible to see how it works. What do others think about this approach?

Cheers,
Brett

[1] http://people.apache.org/~brett/continuum-proposal/continuum-now.png
[2] http://people.apache.org/~brett/continuum-proposal/continuum-new.png

--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/

Reply via email to