Has anyone got much experience deploying applications to Amazons EC2? I am considering doing this in future and wonder about peoples experiences compared to shared hosting and dedicated server hosting are.
So far, so good. Being able to turn on 5/10/50/100+ machines at a time is awesome. It's even better being able to turn them off and forget about them. You need to change your mindset about how you store your persistent data, but once you have the sky is the limit.
Performance wise, small instances are slow. Their fine for load balancers and serving static content, etc, but if you are doing anything processor intensive, you need at least a m1.medium instance.
It's all pretty new, so there aren't many tools to help out yet. I'm using Puppet to configure my hosts and I have a set of PHP scripts for starting up clusters. I use LDAP as a host inventory database.
If you don't have the need/urge to build your own, see Rightscale for some really awesome tools for deploying/growing apps.
I have an image that has my full stack and a script on each that automates the deployment of wars (java) from an S3 bucket to the local file system.
When an image starts the rc2.local runs this script to get the latest wars before starting tomcat. This works well for me
One approach is to setup your instance exactly how you want it locally, using a VMWare image which is then converted to AMI. For example, using this script
Cost is quite a big factor that I initially overlooked with EC2. The cheapest small instance costs 10c per instance hours, which comes to about $70 / month if you keep it running all the time. That's quote a bit more than the cheapest hosting solutions.
Of course, with EC2 you can choose your operating system and install any software you like, and it's definitely way more cost effective than dedicated hosting if you need a large number of servers.
I've read about a hybrid model where people use dedicated servers for their regular workload, but add in extra EC2 instances at times of peak demand.