AWS Elastic Beanstalk
PaaS
platform as a services
platform allowing customers to develop, run and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app
Heroku of AWS
Choose platform, upload your code, it runs
without knowledge of the underlying infrastructure
Dont run enterprise apps on it
but it is used in prod, esp for startups
Powerd by cloudFormation template setting up
ELB
autoscaling groups
RDS database
EC2 instance preconfigured/custom for platforms
monitroing (cloudwatch)
in place & blue/green deployment
security (rotating passwords)
run docker env
Support multiple languages
Choose env
web app -> web env
create one or more EC2 in autoscaling group (ASG) with ELB
2 types
load balanced env
designed to scale depending on traffic -> variable cost
single instance env
ASG used and set to 1
no elb, save costs
public IP to route traffic to server
background job -> worker env
create one or more EC2 in autoscaling group
SQS queue with sqs daemon on EC2 to communicate with SQS
Create cloudwatch to dynamically scale instances based on health
Deployment policy
Types
All at once
Process
deploy the new app version to all EC2 at same time
takes all instances out of service while deploying
servers become available after deployment
Fastest
dangerous, as downtime
might need to rollback all services
rolling
Process
deploy the new app version to a batch of instances at a time
Takes the batch's instances out of service while the deployment processes
reattaches the updated instances
Repeats for the next batch of instances until finished
Slower
reduced capacity for short periods
complicated rollbacks
rolling with additional batch
process
Launch new EC2 that will replace the current batch
deploy in new EC2
attach new batch and terminate existing old batch
Capacity is never reduced, service is always up
complicated rolling updates
slow
immutable
process
create new ASG with EC2 instnaces
deploy updated version to new EC2
point elb to new asg and delete old asg (thus terminate old ec2)
Safest way to deploy critical apps
rollbacks are easy
Can wait till new asg is correct (smoke tests etc)
automate rolbacks
Preferable
Blue/green
All applies for LB env
For single instance, only all at once and immutable
Nee LB to do the other two
https://youtu.be/RrKRN9zRBWs?si=t8KdKqcYECbSYJUo&t=2311
Last updated