6
votes

I am using AWS Elastic Beanstalk and have deployed my nodejs app on it. Now I want to automate this proces i.e commiting changes to Github and then automatically reflecting those changes in app. Now I have two options, use whether Elastic Beanstlak or using Code Deploy. I have searched on both services,

Now both services can be used , but which one is more suitable to use. That will automate my process whether using AWS Elastic Beanstalk or AWS Code Deploy.

4

4 Answers

2
votes

Use the second option instead of using third party tools as AWS platform is supporting to deploy your app using git or bitbucket using python based scripts.

14
votes

The biggest difference is, that:

  • CodeDeploy is the service that deploys your application to the existing EC2 instance(s). It does not take into account LoadBalancing or scaling etc.
  • ElasticBeanstalk is more of the PaaS service, that provides you all the wrapping you need to scale your application so you don't need to worry about the DevOps aspect. Like monitoring, scaling etc.

I found this image to describe the differences nicely. Including as well OpsWorks: aws-cloud-deployment

If you want to read more about differences of CodeDeploy, Elastic Beanstalk or OpsWorks, check out AWS own document: https://d0.awsstatic.com/whitepapers/overview-of-deployment-options-on-aws.pdf

5
votes

The answer is very simple. ElasticBeanstalk offers cookie-cutter automated deployments based on a set of AWS common practices. CodeDeploy is broadly configurable and customizable.

You should use ElasticBeanstalk until you find a use case that cannot be resolved without using CodeDeploy (two use cases suggested by the AWS Documentation posted by Maksim Luzik are deploying to EC2 instances managed internally by your organization and deploying to EC2 instances for third-party integration).

0
votes

I have worked with both tools and both are great for respective jobs. I found ElasticBeans task convenient but lesser flexible when It comes to work with custom platforms.

I am using codeDeploy in my current application. I decided so because of following use cases.

  • I am using debian based platform. Elastic BeansTalks does not offer that platform in its default list of available platforms. So what's the point if I need to create custom AMI.
  • I I have 2 type of applications built on the top of same code base. One is Web and other executes couple of queues in the background. I need to release same code on both type of applications so that's why I found codeDeploy does better job.