A challenge I faced recently was "scaling up on demand" (without manual intervention). EC2 was the my platform of choice because I could write a small script to manage all my machines. EC2 being Xen based also allowed me to create custom images of my application servers.
- Hook into the load balancer's health monitor
- If the load goes over 70% launch a new ec2 instance
- If the load goes under 50% remove an instance
Example: