Skip to main content

Elastic Beanstalk

What is it?

  • a PaaS that makes it easy to deploy and scale web applications
  • infrastructure as code
  • Managed service, uses EC2, ASG, ELB, RDS ...
    • handles capaicity provisioning, laod balancing, scaling, applicaiton health monitoring, instance configuration
    • application code is the only responsibility of the developer

Components

  • Application: environments, versions, configurations
  • Application Version
  • Environment: collection of AWS resources running an application version (only one application version at at time)
    • Tiers: WebServer Environment Tier & Worker Environment Tier
    • multiple environments: dev, test, prod, etc...
    • Web Server Tier vs. Worker Tier

Deployment Modes

  • Single Instance: for dev
  • HA with LoadBalancer: for prod

Deployment Options for Updates

  • All at once: downtime
  • Rolling
  • Rolling with additional batches: new instances in the same ASG
  • Immutable: complete new deployment with a new ASG
  • Blue Green: complete new environment
  • Traffic Splitting: canary testing, small % of traffic to new deployment

WebServer vs Worker Environment

  • if your app performs tasks that are long to complete, offllad these tasks to a dedicated worker environment, this Decoupling of apps into two tiers is common
  • ex). processing a video, generating a zip file, etc
  • supports cron.yaml

Notifications

  • create rules in EventBridge to act to the following events
    • Environment operations status: create, udpate, terminate (start, success, fail)
    • Other resources status: ASG, ELB, EC2 instance (created, deleted)
    • Managed updates status: started, failed
    • Environment health status