Straight from the horses mouth, Amazon offered us a list of what it considers to be best practices for using AWS. All below comes directly from Amazon's Miles Ward, AWS Solution Architect. Take a gander:
What are some best practices for managing highly scalable services with AWS?
1.Scale Horizontally – What I mean by this is using more machines rather than bigger machines – look into multi-threaded interactions and distributed processes. There will always be “the biggest” machine or “the fastest component” that will block your ability to scale if you're scaling vertically; if you can use multiple machines, there’s no maximum. Scale out when you need it and scale in when you don’t.
2. Automate Elasticity – When you automate elasticity you don’t need to worry about scaling your architecture manually. When companies focus on the muck of technology infrastructure it’s often at the cost of innovation in their core business because the staff is being utilized elsewhere. We recommend using our API’s to provision the infrastructure capacity you actually need at any given moment. I like to say – don’t optimize for accurate estimations (which sadly rarely are), instead, optimize for nimble reactions.
3. Use the right tool for the job – Know what your project/application is and the problem it solves before you dig in. Let AWS manage the infrastructure so you can focus on the business you do best. For example, try Amazon Relational Database Service for your database, AWS Elastic Beanstalk for your development environment, or Amazon Elastic Map Reduce for your Hadoop cluster and Big Data needs. There are plenty of hard problems for your business to solve; reinventing solutions to these kinds of problems are not likely the most valuable use of your time.
What are a few tips and tricks for developers who are writing applications for AWS and the AWS APIs?
1. Understand high availability and disaster recovery principles – At AWS we highly recommend building high-availability and disaster recovery principles into your designs up front. Look at a multiple availability zone approach for high availability and a multi-region approach for disaster recovery. Ensuring your design anticipates and manages component failure significantly reduces the chances of it failing.
2. Write in your language – Our customers tell us that they want the flexibility to build their applications the way they want to – they don’t want to be locked into a particular programming model, language, or operating system. That’s why we have SDK's for Java, PHP, Ruby, .Net, Python and on the mobile front SDK’s for iOS and Android. Additionally, there are numerous control and integration systems from third parties.
3. Free is good – For companies looking to the cloud, it’s important to remember that it’s not all or nothing. To get your feet wet, take advantage of our free usage tier to learn how AWS services work before jumping into a full development effort. You can go to our website aws.amazon.com to sign up and try it out. You get 5gb of storage free for a year on S3 – back something up and see how easy using the cloud is.
4. Try out Spot - Spot Pricing is our market price for unused server capacity, which allows you to use EC2 instances at dramatically lower hourly rates. Try the spot market for access to inexpensive compute resources for testing, distributed processing, web crawling, media encoding and other batch processing tasks.