The architecture unifies a number of existing robustness mechanisms and adds several new ones to provide a variety of tools that can be applied in different situations. Instead, we use market mechanisms to create global survivability as an emergent behavior resulting from a large number of small, local decisions. Our approach maintains the simplicity of OSA application development that has been largely responsible for the popularity of OSAs by not requiring individual applications or services to be responsible for the details of ensuring their own survivability. This approach also supports the use of COTS and GOTS that are not constructed for survivability. The key to constructing survivable systems is to configure them in such a way that they can be easily reconfigured when needed to survive loss of system resources.
Developers use the abstraction to specify, implement, and connect services.
The OSA Survivability Service manages configurations defined in this abstraction to keep them running as well as possible given the currently available resources. A joint is a well defined place where a binding between system components may be made. Translucence means that the joint is visible if desired in order to use its special properties, but otherwise is invisible except possibly for a small performance penalty. In fact, it is often possible to reduce or completely eliminate the performance penalty at the cost of more complexity in changing the binding. Prior examples of the use of such joints to add behavior are persistence and transaction control in Open OODB and the security in the OMG Object Security Service.