Distributed systems, such as satellite surveillance systems and real-t
ime feeds for financial data, must be heterogeneous, interoperable, ex
tensible, and available. Availability is a kind of fault tolerance: Th
e system is able to provide important services despite partial failure
of its computers or software objects. The Object Management Group's C
ommon Object Request Broker Architecture addresses only the first thre
e characteristics. With respect to heterogeneity, for example, program
mers can hide details of the underlying hardware and system software b
ehind a portable interface, using CORBA's Interface Definition Languag
e. IDL allows CORBA objects to invoke operations on each other even wh
en implemented in different languages and even when running on incompa
tible operating systems. Wrapper objects and Object Request Broker (OR
B) gateways enable interoperability by letting programmers interface n
ew technology to legacy information systems. Finally, CORBA supports t
he development of highly modular applications, so programmers can more
easily achieve extensibility-as well as better maintainability. To he
lp address availability and reliability, the author developed an exper
imental CORBA-based restart service and monitor called Piranha (not re
lated to the Yale University system). Piranha acts as a network monito
r that reports failures through a graphical user interface. It also ac
ts as a manager, automatically restarting failed CORBA objects, replic
ating stateful objects (objects that maintain an internal set of value
s) on the ny, migrating objects from one host to another, and enforcin
g predefined replication degrees-numbers of copies-on groups of object
s. The article first examines the ways in which a CORBA ORB should sup
port availability. It then explains how Piranha affords availability.