Breaking the Availability Barrier: Survivable Systems for Enterprise Computing