New for: D3
Today, when systems crash, databases recover to the last
committed transaction. But applications do not recover. They
either themselves crash or cannot continue. The goal of the
Phoenix project is to make applications persistent in the
face of crashes, independently of system crashes and
transparent to the application program. This simplifies
application programming, reduces operational costs, masks
problems from users, and increases application availability,
which is critical in e-comerce. Phoenix provides this via
persistent software components, logical (virtual) components
that are mapped to new physical components after a crash.
The state of a logical component is captured by logging its
events, particularly including all non-deterministic events.
A failed application is re-created by "deterministic replay,
using the log. Phoenix carefully minimizes forced logging
during normal execution, single largest execution cost. This
talk describes the conceptual framework for the Phoenix
project, and the software infrastructure that we are
building to achieve its goals.