• One of the ways that I think this can be achieved most easily is through the use of VMs & keeping not just snapshots, but full images of VMs, as well as creating base images with the Sql serverset up, but no data. That way, not only do you have the ability to quickly spin up a VM to test backup restores, you also have a standard template for setting up a new database server.  I think that virtualizing everything is the best path to not only make sure you have redundancies baked into your system from the start, but also enables a more effective devops pipeline. 

    For example, a developer can spin up a VM on their local machine or ona development environment to build a new server, design a database / application, (in addition, having an under-powered test environment will make performance issues that could come with scale a bit more obvoius from the outset) , and when they are ready to put something into testing or production move it to a new environment.

    Through virtualization, not only can you set up any one of the numerous HA technologies available to keep a VM up and running, but it makes it easy to clone existing environments for testing, reporting/auditing, etc.  To me, a server is just where a VM happens to reside. I try to avoid doing anything on bare metal.