I'm migrating an application to Amazon and ElasticBeanstalk seems to be the right tool.
This application requires some packages that are not installed in the default AMI and I found two ways to generate the full environment for my application:
Custom AMI: Just add some packages to the default AMI and save it as my custom AMI.
Docker Container: Use the Amazon image with Docker support, providing Dockerfile and let Amazon build and deploy the image.
My question is, What is the recommended option?
I'm worried about things like performance or deploying time related to autoscaling (there will be multiple instances)
I want to know if someone know real pros and const or every option (in theory both options are "equals"). I also know both methods (custom AMI and Docker) but never tried in a high load environment.
After some time trying different options I have enough information for answer to myself.
Instead of using a custom AMI, the better I found is Elastic Beanstalk and then customize the instance using ebextensions With ebextensions you can fully customize your instance (packages, files.. everything). The benefits are that your instance will be updated automatically and you don't lose the control of you instance. The cons is that you are bound to amazon elastic beanstalk.
I also noticed that docker is an unnecessary extra layer. Very useful for development but a little headache for production because you lose the control of your instance.
My choose (based on my personal experience) is use a default amazon ami and then use ebextensions for customize them automatically.