Between Paranoia and Penny-Pinching
Perhaps the key principle in designing a high-availability system is that "adequacy is sufficient" (to quote a figure from the early days of personal computing). In other words, you should plan and design your system to provide all the availability you need—and no more.
The difficulty with this principle is in determining what it will take to give you the availability you really need. High-availability systems are expensive, but not having a sufficiently available system can be disastrous. To be successful, you have to steer a fine course between being paranoid and "penny wise and pound foolish."
This need makes the requirements definition especially important. Make sure that you spend enough time working with your stakeholders to really understand what they need, not just what’s written on the spec sheet. Time spent with users and decision makers on the front end will pay off in a much more successful high-availability system on the back end.