8 ms·
Announcing AWS Elastic Beanstalk for Node.js
- scanr 14y agoEven 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.
- adamnemecek 14y agoWhat are some of the downsides?
- idunno246 14y agoYou 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.
- dazzla 14y agoYou 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/customize-containers.html http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom...
- fosk 14y agoYou can customize the AMI and do whatever you want with it.
- nkvoll 14y agoHmm... this sounds vaguely familiar to something I might have ran into.. Do you happen to have an url to a bug report for this?
- NathanKP 14y agoOne 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.
- philfreo 14y agoIt'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/python https://devcenter.heroku.com/articles/nodejs 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.
- scanr 14y ago* 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'
- quahada 14y agoDoes it support websockets? Pretty important feature for node.js.
- jonpaul 14y agoPresumably 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.
- mathrawka 14y agoYou 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
- miles932 14y agoyou do get the client IP, but it comes as a request header: x-forwarded-for http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#x-forwarded-for http://docs.aws.amazon.com/ElasticLoadBalancing/latest/Devel...
- lucian1900 14y agoHow would that work for a protocol that isn't HTTP?
- mathrawka 14y agoThere are no HTTP headers in pure TCP.
- pornel 14y agoYou can use Server-Sent Events (HTTP-compatible server->client websocket).
- apapli 14y agoHow does this compare with Heroku for RoR hosting? Do they compete or is Heroku solving a different problem?
- niclupien 14y agoIMHO 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.
- jonpaul 14y agoTo my knowledge, Heroku still does not support Websockets. However, if you use, Socket.IO, then you can use long-polling with Heroku.
- joeblau 14y agoI just added Elastic Beanstalk's dot directory to http://gitignore.io http://gitignore.io http://gitignore.io/api/elasticbeanstalk http://gitignore.io/api/elasticbeanstalk
- yannis 14y agoThanks, nice application. Love the color scheme.
- vicky_rockstar 14y agoThanks :)
- crindy 14y agoI'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?
- JoshGlazebrook 14y agoThis 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"
- jedschmidt 14y agoDoes 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.
- mminer 14y agoTheir 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.
- fosk 14y agoYou can create a custom AMI with any version of node.js, and use it in your envs.
- outside1234 14y agowhat 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?
- JoshGlazebrook 14y agoThere is appfog, heroku, nodejitsu, and a few others. Afaik, nodejitsu is the only one with full websockets support at the moment.
- shykes 14y agodotCloud has full websockets support. Http://dotcloud.com
- vicky_rockstar 14y agoAnd I am using it...!
- T-A 14y agoOpenShift also does Node + WebSockets now: https://openshift.redhat.com/community/blogs/paas-websockets https://openshift.redhat.com/community/blogs/paas-websockets
- taude 14y agoI 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.
- intelekshual 14y agoModulus looks pretty good: https://modulus.io/ https://modulus.io/ I haven't tried them out yet, but their support team has been very responsive answering my questions.
- weitzj 14y agoEven better: default VPC without extra cost
- kumar303 14y agoPrior to this, Mozilla has been using AWSBox as a similar deploy environment for node.js https://github.com/mozilla/awsbox https://github.com/mozilla/awsbox