> Dave's probably right about a missing abstraction.

Dave does tend to be right, but here's another idea entirely. Accept the 
deployment of the whole application and configure the application as a 
cluster, if possible. The cluster could even be on the same machine, so 
you don't necessarily need additional hardware, but it would permit 
bringing the application down for a deployment without resulting in 
downtime, which is the assumed aversion to the deployments, right? It adds 
complexity to the deployments (especially if DB changes) and you have to 
spend the time setting up the cluster, and testing failover without losing 
sessions (turn off new requests to a node and let the current requests 
complete before shutting down), but it would greatly ease application 
design, from what I can tell and that is where your big time sink *may* be 
over the life of the application (my lack of knowledge of your environment 
notwithstanding).

In my experience, it isn't atypical for the design that you come up with 
to be repeated if it seems to work. If you (eventually, this could be 
precedence setting) have lots of little apps communicating back to the 
main app, when the changes are more easily, and perhaps appropriately, 
completed in the main app, then you end up with a messy bunch of apps to 
manage and lots of plumbing code to maintain. Now you end up with 
configuration management (different revisions) both in the apps and the 
communication channel.

- Eric

Reply via email to