Designing for high availability
Prior to taking on the design task, it's highly recommended that you go talk to the business to understand where the need for high availability comes from and what exactly their need is. There's nothing easier than to overestimate the actual needs, increasing the overall complexity and thus the costs related to setting up and maintaining the solution.
How to do it...
Before heading off and diving into the technical details, it's important that you know what you are actually designing for. There's more than only Exchange that comes into play in a resilient and highly available messaging solution. Consider the effect a single non-Exchange component might have on your end user's experience. For instance, what good is your Exchange infrastructure, only to find out that none of your messages were delivered in a timely fashion because your Internet connection went down for a few hours?
In order to determine what aspects of your environment you need to take into account...