• You can want it all, but you can't have it all unless you can spend some money on resources. You'll have to make tradeoffs.

    If your app goes to other databases for history, how often does this change? If it's not near real time, then I'd use mirroring, and use manual failover. You can manually fail everything over.

    Neither AlwaysOn nor mirroring need shared storage. For that matter, neither does log shipping. Log shipping has the issues of managing failover, since it's manual, for servers and clients.

    I think if you have resource limitations, log shipping is the simplest. You'll want to play with the failover for clients and have a good procedure ready.

    The Red Gate log shipping is intended to make the process easier, and reduce the bandwidth you need by compressing things. We have a utility that always converts our compressed stuff back to native, and you should test it in case you need to do this. You could always un-compress the backups for dev machines and not license those.

    Disclosure: I work for Red Gate.