How do you ensure high availability and reliability in real-time or safety-critical software systems?