Even though it's relatively primitive compared to some of the other PaaS providers out there, I really like AWS Elastic Beanstalk. Here are some of the reasons why:
* You only pay for the underlying AWS services
* ELB + EC2 + RDS is a good stack for a lot of
web applications
* They support environments and promoting releases
from one environment to the other (e.g.
qa -> production)
* Git integration
There are a bunch of downsides but it's a cheap MVP for a certain category of database driving webapp for me.
One of the major downsides is that the documentation is horrific. I've spent the last 14 hours trying to get my company's app deployed on Elastic Beanstalk, about six of which have been trying to get an Elasticache Cluster configured as part of the environment and connected to the code within it. The documentation shows a few limited pieces of the process but is greatly lacking in essential details, leaving me with an extremely slow trial and error process which involves a 4-5 minute wait each time I deploy a new attempt to get it working.
Additionally since it is still new there is very little crowd created documentation out there on StackOverflow, etc to help you out where the official documentation is lacking.
My experience with Elastic Beanstalk makes me feel like a pioneer breaking new ground on an very early beta, not the user of a robust, finished system.
There are other issues I have with the system besides the documentation, such as logging into an instance that was created by Elastic Beanstalk for my app and seeing that it has 30 security updates that need to be installed. Why Elastic Beanstalk didn't just install these when creating the instance is beyond me. Instead I'm trying to figure out how to modify the configuration to get it to fix these security problems as part of the deployment process, but having no luck. (2 hours wasted on this so far.)
Elastic Beanstalk has the potential to be incredible, but it is still very rough in my opinion.
I'd love to see Beanstalk be this easy, but judging from all of the AWS documentation I've read, they won't get there anytime soon.
Note: I understand Heroku is solving the problem at a different level. I'm happy to work with the building blocks AWS provides (EC2 + ELBS + RDS etc.) but it's just the nice getting started guides / overall developer friendliness that's lacking.
* Docs are pretty bad
* I invariably need to log onto the instance itself to
find deployment bugs during development (that said,
it's great that I can do that)
* Using their AMIs is the easiest but you may find
that they don't support the combination of software
you need
* If you're deploying a python app, you'll want to
install celery, rails resque, php gearman etc.
Beanstalk doesn't really have an answer for the
'deploy an asynchronous job server'
You have to use their base AMI. Which was really bad because for a while it suffered from a kernel deadlock on disk write bug(this should be fixed by now). There's very little configuration options - when I was using it you couldn't setup logrotate for instance. It worked pretty well, for java at least, until the server started locking up every couple hours.
When it integrates with opsworks, I'll be excited about it.