Availability design is a complex subject that covers a large optimization exercise balancing many requirements.
The following principles underlie availability design: