That doesn't mean you should rely on it absolutely, at least within a single AZ. Multi-AZ is a critical part of any AWS deployment at scale, if not multi-region (depending on your needs). EBS is not a cure-all, either; if you have higher performance demands than it offers (between provisioned IOPS and IO-optimized instances) then that's fine, just measure first.
Finally, I'd like to point out that Reddit's complaints about EBS aren't the best to echo as an example of EBS issues: first, they are a few years old, and at the time both Reddit and EBS were architected with substantial deficiencies.
The only caveat to this would be if you have a single point of failure. Like a PostgreSQL database or something else that just doesn't have a good high availability story.
A multi-AZ cluster with ordinary binary log replication to another region (with preparations to launch a new cluster in that region based on that slave on short notice) might be a good solution.
Regular asynchronous replication is your best bet, with a regular run of pt-table-checksum scheduled to ensure your data is consistent.
> Regular asynchronous replication is your best bet
That doesn't get you HA in any practical form. I've done the heartbeat thing, it created more outages by itself than would have occurred with no HA solution at all, usually failed to kick in during a real failure, and we could never fix all the split-brain scenarios. Galera is absolute magic by comparison.
Hence my suggestion that a cluster be deployed within one datacenter, with asynchronous replication to a standby.
Heartbeat is very problematic, I agree, but it's hardly the only solution out there (and far from the best solution). That said, I have learned that it's remarkably configurable, so many of the problems you encountered could probably be addressed, if you're willing to learn about Pacemaker and really dig into its configuration.
I should mention that the system I'm building that uses it has yet to go into production, so others may have more experience on this than I do.
From approximately 12:51 PM PDT to 1:42 PM PDT network packet loss caused elevated EBS-related API error rates in a single AZ, a small number of EBS volumes in that AZ to experience degraded performance, and a small number of EC2 instances to become unreachable due to packet loss in a single AZ in the US-EAST-1 Region. http://status.aws.amazon.com
So.. are we to believe that Instagram, Vine, etc. are not properly architected for multi-AZ failover? Or is there more to this than what Amazon is reporting?
Bottom line, why did these apps have any significant downtime at all?