Designing for high availability is at least as hard as it was. Doing this in the cloud is quite expensive...maybe not as expensive as rolling your own infrastructure, but a wake-up call when the CIO gets the bill.
Minus the part about the CIO being surprised at the bill (only a poor CIO wouldn't forecast the costs of running a product in any environment, including a public cloud), you hit the nail on the head as to why public cloud is so popular. It's not magic, but it IS cheaper for small/medium sized companies to take advantage of highly available services that they wouldn't otherwise be able to afford in their own DC's.
That said, you absolutely have to build your application on public cloud with failure in mind. I've been using AWS long enough that many years ago, instances would just disappear -- no longer accessible on the network, no longer present in the console/API...just like I never spun them up in the first place. We knew back then that the app had to be built for failures like that, but somewhere along the way hype took over and now people just assume the HA nature of AWS will protect them from bad design with SPOF's galore. That wasn't true before, isn't now, and likely never will be.