fault tolerance in computer system design