Under the hood it orchestrates various AWS services like EC2, Load Balancers etc
Applications might need changes to be compatible with EB
Platforms
EB supports various runtime environments in 3 ways
Native Support
The natively supported environments as of now (9th Sept 24) are Docker, Go, Java SE, Tomcat, .Net Core for Linux & Windows, Node.js, PHP, Python & Ruby
Single & Multi Dockerized Support as well as PreConfigured Docket
Custom platforms with Packer
Applications
It is a container for everything that is required to run a piece of software e.g. Infrastructure, Configurations, Code etc
Application version means a specifically labelled version of code that runs inside an EB Application
Each of this labelled version is stored in S3. They are called as Source Bundles
Environments
These are divisions or sub containers within an EB Application
Examples are Dev, UAT, Prod environments
Environments actually own or encapsulate the Infra
Within an EB application, a specific Application version gets deployed in an environment
Each environment can belong to either a WebServer Tier or a Worker Tier
Web Server Tier - Receives Http requests from the user through an elastic load balancer (ELB)
Worker Tier - It receives its tasks from an SQS queue
Each environment has its own DNS CName
Blue Green deployments can be easily achieved by simply performing a CName Swap between environments
Customization
.ebextensions is used to customize the EB application
Any file that is inside an .ebextensions folder, which is in YAML or JSON format and has .config extension is used as configuration definition file
The file needs to be in CloudFormation format
option_settings configuration element allows to set options on resources
Resources element allows additinal new resources to be configured
Various other CFN elements can be used in these files
Points to Ponder
App changes or tweaks are required to work with EB
For any unsupported platform, the dockerized version can be used
RDS/Databases should be outside EB
EB uses CloudFormation to provision infrastructure
To enable HTTPS on EB either apply SSL certificate directly to LoadBalancer or do it through .ebextensions
A new EB environment can be created by cloning existing environment. Clone copies RDS instances but does not copy data. Also unmanaged changes are not cloned