How do you design systems to ensure high availability and disaster recovery for critical financial transaction processing?