In this post I would like to introduce you to some of the principal concepts behind AWS Elastic Beanstalk. This information should be helpful to you as you read the remaining blog posts in this collection. Here are the terms that you need to know:
- An Application is a collection of Elastic Beanstalk application versions and environments that deliver some type of functionality to a customer—hosting a blog, running an online game, and the like.
- An Application Version represents a specific set of functionality at a specific time. As your application evolves you will upload new versions of it to Elastic Beanstalk.
- An Environment is a collection of AWS resources (EC2 instances, an Auto Scaling Group, and an Elastic Load Balancer) instantiated to run an application version.
- An Environment Configuration is a collection of settings that define and control the behavior of an environment and the resources associated with it.
- A Container Type describes the application stack, default configuration, and AWS resources needed to create an environment. The default Elastic Beanstalk container specifies an Amazon Machine Image (AMI) containing Amazon Linux, Java, Apache, and Tomcat, an Elastic Load Balancer, and an Auto Scaling configuration. We are working with partners to create additional container types for other languages and programming environments.
Here is how the Applications, Application Versions, and Environments relate to each other:
And here is what an Environment using the default Container Type looks like:
You will probably have a lot more versions than environments. Versions are often short-lived (especially during development); environments might (but don't have to) last a lot longer. On a complex project you might have development and test environments for each developer, an integration environment for each major feature, staging and test environments for the project, and a production environment to round things out.
Keep Reading: AWS Elastic Beanstalk Under the Hood.