A question for other startups running a small time stack on top of AWS - how are you managing your scale up/scale down/fault tolerance on top of EC2 ?
For a small startup, we are not really talking OpsWorks - so what tools allow you to do this.
I'm trying to do this in a really small way for a project - but there are way too many deployment/monitoring/management tools to wrap my head around.
You can use CloudWatch which is already part of EC2 to monitor your instances for you. You can also have autoscaling scale up / down based on these metrics. You also can have Elastic Load Balancer monitor the health of your backend web hosts port state (ie: is the nginx port down for more than three health checks? OK kill that instance and replace it with a new one behind the ELB).
All of these functions are builtin to AWS and now with the new web interface it is much easier to configure autoscaling to do these types of things.
Along the same lines, I'm interested in how people handle the case of auto-scaling their web app (or anything that updates frequently via deploys). Is there a better solution than imaging a machine on every deploy and updating the auto scaling group to use the new AMI?
How are you deploying? You 'should' push a tarball to s3 and have web nodes pull it down.
Red-black deploys via AMI changes are one way for sure, but those seem to be usually done via separate scaling groups entirely. Netflix has a lot of automation around this (see Asgard and AMInator)
If you're small you can just use the tools Amazon provides you and get pretty far -- CloudFormation and/or OpsWorks, combined with AutoScaling (now configurable from the console! :) ).