You've hit on the key thing with the cloud... assume things will go wrong and accept it.
But does that mean that it's a requirement to have a second server up and running at all times (in order to be constantly receiving data from the main server)?
My tip would be to host the db and app server on a single instance to start with (less things to go wrong), and assume that server will fail.
Have a warm standby either in another AWS region or (like us) with a completely different provider. And make sure you have several copies of your data available to restore if need be. (For this I use dirvish on yet another VPS provider).
Finally, test your failover / restore procedure on a fairly regular basis.
My email is in my profile. Feel free to ping me if you have any specific questions.