Hacker News new | ask | show | jobs
by bermanoid 5280 days ago
Agreed on all the scaling stuff - if you really serve traffic, m1.large should be your go-to instance size unless you're sure you know better, and being "ready to scale" means that if you need to serve 2x, 20x, or 100x the traffic, you can have 2, 20, or 100 servers booting up and self-configuring (including adding themselves to the load balancer) at the click of a button. Not that you have a few servers sitting around on standby waiting to be enabled...

There's one exception: if you've got "internal" servers that are only serving requests from you, or running occasional cron jobs (for monitoring and stuff like that), and you're sure that user traffic changes will never affect them, by all means go for a micro or a small. Those things aren't part of your publicly visible stack, so there's no sense wasting money.

Seriously, if you are doing any real MySQL work on AWS, DO NOT use RDS. The reality is that AWS doesn't nearly do the EBS tuning that you yourself can do (RAID-0, kernel tuning etc) on your own EBS based MySQL implementation.

Do you have any numbers on the performance difference between a well tuned EBS-based implementation and RDS?

Because speaking from experience, EBS based MySQL machines are always, without fail, the primary maintenance headache in any stack. They're always the machines that wake engineers up at 4 AM because of some EBS crappery or somesuch nonsense that necessitates intervention, and the promotion/backup/restore procedures can be touchy and error-prone. That's not even to mention the work involved in setting them up, testing, and getting them tuned right, which are serious stuff compared to the "pick a name, size, version, and launch!" process that RDS provides.

Most of what I could find seemed to suggest that the performance differences between RDS and well tuned EBS MySQL servers of comparable size were relatively small. For instance, from http://www.mysqlperformanceblog.com/2011/08/04/mysql-perform...: "My benchmarks generally showed that I was not able to outstrip RDS 5.1′s performance with the combination of stock MySQL 5.1, EC2, and a 10-volume EBS RAID."

If you think that's wrong and the difference is really much higher, I'd be interested to know.

Part of me is skeptical that any serious differences would persist for very long: if it's so easy to do this "right" so that you end up with a EBS+EC2 MySQL server that significantly outperforms RDS for general-purpose workloads, why wouldn't the RDS team set up RDS servers that way behind the scenes? I would think that Amazon should know how to efficiently utilize its own EBS volumes, right?