AWS Elastic Beanstalk

AWS Elastic Beanstalk is a Platform as a Service (PaaS) offering from Amazon Web Services used to quickly deploy, scale, and manage applications with automatic infrastructure management, so the developer’s only responsibility is to write code while Elastic Beanstalk handles the code deployment and infrastructure.

Key points

  • Offers a developer-centric view of deploying an application on AWS.
  • An Elastic Beanstalk application is composed of environments, versions, platforms, and environment configurations.
  • Workflow: Create Application → Upload current version → Launch Environment → Manage Environment, with “Update version” looping back to Upload current version and a “Deploy new version” loop.
  • The console supports deployment and management tasks such as changing Amazon EC2 instance size, monitoring (metrics, events), and environment status.
  • Supports applications coded in Java, .NET, Node.js, PHP, Ruby, Python, Go, and Docker.
  • Uses Elastic Load Balancing (ELB) and Amazon EC2 Auto Scaling to automatically scale the application to its needs.
  • Can launch Docker environments by building an image, and lets a developer deploy quickly without manually creating the required resources or managing load balancing/scaling infrastructure.
  • Deployment policies:
    • All at once
    • Rolling
    • Rolling with an additional batch
    • Immutable
    • Traffic splitting
  • AWS CloudFormation vs. AWS Elastic Beanstalk:
    • AWS CloudFormation deploys infrastructure using YAML/JSON template files, and can deploy Elastic Beanstalk environments.
    • AWS Elastic Beanstalk deploys applications onto EC2, but cannot deploy CloudFormation templates.
  • Distinct from Amazon Lightsail, which offers fixed, low-cost single/few-instance hosting for simple websites rather than an auto-scaling application platform.
  • Distinct from AWS OpsWorks, which manages application stacks through Chef/Puppet recipes rather than a fully managed PaaS.

Sources