Most databases have replication but you need to make sure that the characteristics of how the database handles a node failure are well understood. Worst case you use EBS, put your state on it, snapshot it regularly, and ship those snapshots to another region because when EBS fails it fails hard.
Also, logs make every machine stateful. Use something like logstash to centralize that state.
That or sidestep ELB in your region to a team of stateless load balancers that terminate SSL.
The pricing seems reasonable for the performance (I've not done benchmarks if I'm being honest), and you get to treat all your EC2 instances as expendable.
I meant rather that is there any other option for persistent data on AWS?
Also, on EC2, EBS-backed instances boot faster [2]. Of course, you can (and should) still treat EBS-backed instances as expendable.
[1] http://aws.amazon.com/rds/faqs/#hardware-scaling
[2] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Component...
To be honest, I didn't know RDS was backed by EBS but it makes little real difference to me as long as the backup procedures are rock-solid and the performance is acceptable.
At Netflix we use Cassandra and store all data on local instance storage. We don't use EBS for databases.
It's one of those "huh, never ever thought of it from that angle" sort of ideas. The very idea of putting your absolutely valuable data on ephemeral storage and just duplicating it.
Thanks for that.
https://wiki.postgresql.org/wiki/Synchronous_replication
This way you should be able to tolerate failure of a single instance without losing data.
of course, if a comet hits the master db server, you might lose a tiny bit data (typically 0.1 seconds) if not using sync replication.
you can use sync replication for the important things that you absolutely can't lose, and async replication for everything else.