Almost everyone struggles with setting up disaster recovery (DR) plans and resources. There are a few companies that take their DR seriously, but for most organizations, it's an afterthought. It's an insurance premium that can easily be avoided if there are not pressing problems and your past experience with disasters is minimal. After all, it's rare that any of our data centers shuts down because of an earthquake, hurricane, fire, or other similar large scale event.
However most of us try to have some type of disaster recovery in place. We may have cold or warm systems available. Our companies have funded an AlwaysOn Availability Group, or more likely, mirroring and/or log shipping for critical systems where data is moved to a remote location on a regular basis. We monitor these processes, and we try to keep them running, though I'm sure if they break, many people don't give the repair top priority in their daily work.
A DR environment is like a backup. If you don't test it, you're never sure if it really is something you can use in a disaster situation. You may periodically test your fail-over, like you test a restore, but do you ever really lean on the secondary system? This week, I wanted to ask you this question:
Do you fail over to your DR system and run your business from the system for a day (or week or longer)?
I know a few companies that consider secondary systems to be critical and will actually fail over, and then run the other system for a few months, failing back to then retest the primary system. In this case, there really isn't a primary and secondary system, but rather two systems that can work, being alternately used throughout the year.
This is actually moving closer to a cloud architecture model, where you don't place high importance on any particular system, you assume any system can fail, and you have redundant systems that can pick up the load. In a cloud environment you might have more than two, relying on dozens of systems instead, any of which could fail, but with a small interruption in service.
I'd hope that SQL Server, the version of the platform I can install in my data center, would get close to this, allowing me to serve database services to clients, but seamlessly moving those services across instances, with clients unaware when physical machines have crashed because their services just moved to another host.