Hacker News new | past | comments | ask | show | jobs | submit login
Announcing AWS Elastic Beanstalk for Node.js (amazon.com)
88 points by subsection1h on March 12, 2013 | hide | past | favorite | 36 comments



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.


What are some of the downsides?


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.


It's not brain-dead to get started with, like Heroku is. Anyone can do it when the docs are this clear:

https://devcenter.heroku.com/articles/python

https://devcenter.heroku.com/articles/nodejs

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.


You can now use configuration files to customize your instance. You can install packages, download files, run shell scripts etc. Works well.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom...


You can customize the AMI and do whatever you want with it.


Hmm... this sounds vaguely familiar to something I might have ran into.. Do you happen to have an url to a bug report for this?


I just added Elastic Beanstalk's dot directory to http://gitignore.io

http://gitignore.io/api/elasticbeanstalk


Thanks, nice application. Love the color scheme.


Thanks :)


Does it support websockets? Pretty important feature for node.js.


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.


You need to use TCP forwarding on the ELB, not HTTP. The disadvantages are:

* You cannot enable stickiness on the ELB

* You will not get the client IP forwarded to your instances


you do get the client IP, but it comes as a request header: x-forwarded-for http://docs.aws.amazon.com/ElasticLoadBalancing/latest/Devel...


How would that work for a protocol that isn't HTTP?


There are no HTTP headers in pure TCP.


You can use Server-Sent Events (HTTP-compatible server->client websocket).


I'm working on a meteor application, and one of the things I'm scared of is that no one knows how to make one run on multiple machines.

Would this solve that problem, by providing an essentially infinite sized machine?


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"


Prior to this, Mozilla has been using AWSBox as a similar deploy environment for node.js https://github.com/mozilla/awsbox


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.


You can create a custom AMI with any version of node.js, and use it in your envs.


How does this compare with Heroku for RoR hosting? Do they compete or is Heroku solving a different problem?


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.


To my knowledge, Heroku still does not support Websockets. However, if you use, Socket.IO, then you can use long-polling with Heroku.


what is the best node.js PaaS solution out there? This doesn't look as nice as Azure's offering that I've been using. Who do people like the most?


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.


OpenShift also does Node + WebSockets now: https://openshift.redhat.com/community/blogs/paas-websockets


Modulus looks pretty good: https://modulus.io/

I haven't tried them out yet, but their support team has been very responsive answering my questions.


There is appfog, heroku, nodejitsu, and a few others. Afaik, nodejitsu is the only one with full websockets support at the moment.


dotCloud has full websockets support. Http://dotcloud.com


And I am using it...!


Even better: default VPC without extra cost




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: