Intro
- PaaS which provides platform for developers to write and easily deploy code. It automatically creates the necessary infrastructure (EC2, ELB, SG, etc.) in AWS.
- Good for non-serverless applications
- Automatically handles capacity provisioning, load balancing, scaling, application health monitoring, instance configuration, etc. but we have full control over the configuration.
- Free (pay for the underlying resources spawned by Beanstalk)
- Supports versioning of application code
- Can create multiple environment (dev, test, prod)
- Supports the deployment of web applications from Docker containers and automatically handles load balancing, auto-scaling, monitoring, and placing containers across the cluster.
- Supports pretty much any programming language and even Docker containers.
- Beanstalk CLI helps manage the applications from CLI.
- Beanstalk uses CloudFormation under the hood to provision resources.
Components
- Application: collection of Beanstalk components (environment, versions, config, etc.)
- Application Version: version of your application code
- Environment: collection of AWS resources running an application version
- Environments are created under the application
- Only 1 application version can be running at a time in an environment
- Can create multiple environments (dev, test, prod) with separate configurations inside an application
Web Server & Worker Environment Tier
- Web Environment (Web Server Tier): clients requests are directly handled by EC2 instances through a load balancer.