Search code examples
amazon-web-servicesamazon-elastic-beanstalkdevelopment-environmentproduction-environment

How to separate Application and Environments for Production and Dev in EBS


I have a Python web service and a Java web service. I also have a Production and Dev environment.

*Note by Application I mean an EBS application and by Environment I mean an EBS environment

Should I have an Elastic Beanstalk application called Production, with an environment for the Python application and another environment for the Java application?

Or should I have an Application for my Python webservice and two environments, one for prod and one for dev. Then do the same thing for the Java web service?


Solution

  • For our purposes, we use the same application with 3 different environments (QA, TEST and PROD). We then deploy to the needed environment with the corresponding application configuration (e.g. database connections, other AWS resource identifiers such as SQS URIs, etc.). We also have 5 different applications running, resulting in a total of 15 environments (in theory, in reality we do not require for all applications to have a TEST environment). I think this is how it was intended to be set up, so it's your latter proposal.

    Furthermore, but not really the scope of your question, we work with a Build Server (Bamboo in this case, TeamCity is another option) and build and deploy always to the QA environment for each commit and to PROD on request.

    This setup works quite well for us and with the build server we can ensure that all unit tests have run prior to a release.