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.
Presumably so, since the press release explicitly mentions websockets, and you can use Nginx (which now supports websockets) or choose to not use any reverse proxy.
This is essentially what these PaaS services do. Appfog for example gives you 2GB of ram to deploy your app with for free. You can deploy an app to 8 separate instances with 256MB of ram, or you can adjust it differently. With heroku you get 1 "dyno" for free, and for each additional dyno it's another charge, etc. etc. They do all the work of load balancing and making it "just work"
Does anyone know how often they update their containers for other platforms? The maximum node.js version on Beanstalk is 0.8.21, but the current stable is now 0.10.0.
Their Python container, which became available last August, has yet to be updated to support version 2.7 (released 2010) or 3.x. This may not be indicative of how often they'll update the node.js container, but their effort to keep up with the latest and greatest doesn't seem too aggressive.
IMHO Heroku is way more easy to do deploy and makes it more accessible to non-sysadmins.
heroku create
git push heroku master
With Amazon, you need to spend some time understanding how it works and what do you want. It's also not very clear for a beginner to define what kind of bill you will get today, in a month, in a year. I think Amazon is trying very hard but I always end up reading tons of documents and finally not really understand what they means in the end.
I setup an Python Flask server on Azure last week. I was pretty impressed by the polish on a lot of the MSFT Azure management tools. I had also tried AppFrog, Heroku, and AWS Beanstalk in the past.