Amazon machine instances come in a variety of sizes. The default of most GUI management consoles is the small instance. The specific sizes were spelled out in chapter 2 but as a refresher, there is the small (1 compute unit (CU) and 1.7GB of ram), large (4CU and 7.5GB of ram), extra large (8CU and 15GB of ram), high-CPU medium (5CU and 1.7GB of ram) and high-CPU extra large (20CU and 7GB of ram).
The fact that large, medium and extra large are mixed like that tells me that Amazon is keeping its options open for additional sizes in the future. Really, they can make pretty much any size desired. Generate a template and make it available and new size is available. For now, I think what they offer will accommodate just about anyone.
When you size your hardware for purchase, there is a huge burden for getting it right the first time. You may need as much as six months of lead time to purchase a machine. That sometimes means buying your production hardware before coding even begins. That’s an awful way to do business.
This is also one of the major reasons for cloud computing. Start your development project and pick the small instance. If, as you build your application, you need to scale larger, shut down your small instance (making sure to persist data to EBS volumes), start up a larger AMI and attach the EBS volumes.
This is also good for testing, as you add testers and do volume testing, you may find that your guesstimated instance will not be large enough. No problem, the same steps as in development, save to EBS and attach to a larger instance.
It is important to size your hardware correctly in production, but the pressure is off with cloud computing. Even if you go to production and need to scale later, with dynamic IPs and virtual hosting, you can resize your instance with very little (and possibly no) downtime.