I don't have the choice of doing that as some applications are either A) not mine to touch or B) purchased products that have fixed implementations.
I tend to work on creating alternative views (i.e telephone services) onto existing structures, hence most of my work has to come via this mechanism.
Given carte blanche, that middleware layer still would require careful coding to ensure any failure in it, didn't take down all the services. Something much more tricky to do compared to say clustering a database.
I think we're just discussing different environments DaBeeeenster. Just highlighting the requirements for different implementations.
TiG