What are the pros and cons of AWS Elastic Beanstalk compared with other deployment strategies?
- by James van Dyke
I'm pretty new to the whole Netflix OSS stack and deployments in general. As a background for my current level of knowledge ops-wise, my main role is as a front-end application engineer. However, I enjoy the operations side of things, so I'm attempting to setup a new deployment strategy and the tooling for a new project.
Our Goals
Super easy deploys (we want to push a button to update production)
Automated deploys to test environments (using Jenkins)
Ease of maintenance (we have an app to write, don't want to spend our time fiddling with production issues)
Ability to handle a service oriented architecture (many small apps, various languages and data stores)
Enough flexibility to ensure we won't have to change strategies any time soon (we're already trying to get away from RightScale)
We're OK with a little more initial setup time if doing so will save us some headaches in the future.
So, along these lines, I've been listening to podcasts, watching Ops talks, and reading tons of blog posts and based on our goals and what I've taken to be some forming best practices, we've started forming a plan using Asgard, rolling our package into a jar and rolling that into an AMI.
We had this all planned out and like the advantages the process versus using a Chef server and converging instances on the fly (we felt this was error prone given our limited timeline and lack of understanding around a Chef server workflow). However, a coworker did a little looking around on his own and felt like Elastic Beanstalk met our needs.
I've looked into it and spun up a test environment with a WAR file and an attached RDS database. Things seem to work and I believe that we can automate deploys to a testing environment using Jenkins via the AWS API. Seems simple enough... perhaps too simple.
What I'm wondering is, what's the catch? If Elastic Beanstalk is so simple and effective, why isn't it talked about more? I'm having a hard time finding enough objective opinions and facts about the two different deployment strategies, so I thought I'd ask around.
Do you use Elastic Beanstalk? If so, why and what factors lead to that decision? What do you like and dislike?
If you don't use Elastic Beanstalk but considered it, what do you use and why didn't you use Elastic Beanstalk?
What are the advantages and disadvantages to a Elastic Beanstalk based deployment strategy for an SOA? That is, will Elastic Beanstalk work well with many small applications that rely on each other to work?