- Developers usually don't want to manage infrastructure, they want to deploy code (lol :)
- Elastic Beanstalk is a developer centric view of deploying applications on AWS
- It uses all the previous components: EC2, ASG, ELB, RDS, etc.
- These components can be configured and instantiated via configuration files
- Beanstalk is entirely free, we only pay for the underlying infrastructure
- Beanstalk is managed service, which means:
- Instance configuration, OS is handled by AWS
- Deployment strategies are configurable but they are performed by Beanstalk
- The application code is the developer's responsibility (obviously)
- There are 3 architecture models for Beanstalk:
- Single Instance deployments, recommended for development
- LB + ASG: great for production or pre-production
- ASG only: great for non wen applications
- Beanstalk has 3 components:
- Application
- Application version: each deployment gets a version
- Environments
- We deploy application versions to environments and can promote application versions to the next environment
- We can rollback to previous versions of the application
- We have full control over the lifecycle of the application
- Beanstalk has support for many applications:
- Go
- Java SE
- Java with Tomcat
- .Net on Windows Server with IIS
- Node.js
- PHP
- Python
- Ruby
- Packer
- Single Container Docker
- Multi-container Docker
- Pre-configured Docker
- There is an option for custom platform if the stacks above are not what we are looking for