| As a large scale AWS user, I'm not sure I can agree with any of these recommendations. Don’t use micro instances for real work There are some use cases where micro instances work in production environments (such as MongoDb arbitrators etc) but running anything in production on AWS on anything less than a m1.large instance is setting you up for failure. Micro and small instances can be used for a personal Web site or tiny blog, but nothing else. When I visually think of a micro or small instance, I envision a PC sitting under a desk performing operations that a server in a rack should be hosting. Have servers on standby. Configure a large instance, stick it in an Elastic Load Balancer with your other web servers, and just stop it.... () I really don't consider one server stopped, on standby, as scaling AWS. In the cases of Web servers, you might need to provision 5-10 Web servers, and having a single stopped instance is not going to allow you to accomplish that. The better approach would be to have a server image prepared that can auto-provision itself (multiple times when needed) into the role defined through user-data passed to the image. Scaling Web servers is an n+1 operation, not a +1 operation. Seriously, use RDS 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. See: Getting Good IO from Amazon's EBS: http://orion.heroku.com/past/2009/7/29/io_performance_on_ebs... Running MySQL on AWS: http://aws.amazon.com/articles/1663 Finally, for MySQL slaves, use RAID-0 over the ephemeral disks which have dramatically better performance than EBS. |
If you're on Amazon EC2 or similar, it becomes phenomenally cheap to throw hardware at the problem. Running a single medium instance is $0.175/hour. If you need need to go from 5 servers to 50 servers for two days, it's just $420 to get out of a 48 hour jam. Need to upgrade to the beefiest 68 GB, 28 ECU RDS instance while your'e at it? $125 for 48 hours.
Performance tuning for 100x load that may never come again is usually hard to justify, so just know what your outs are if you're lucky enough to be swamped with traffic.
However, just be sure that you know how to scale out quickly and you can launch new instances (hopefully automatically). On most days, our eCommerce business gets by on just a couple of servers, but we have our autoscaling rules in place that will spin up/down servers within a few minutes.
Be sure to test regularly. Having a server boot up and add itself to the load balancer with old code/configs can wreak havoc on your database.