Elastic Beanstalk

Introduction

  • Providing application code / Git Repo, scalable application / RDS to deploy onto AWS.

  • Managed service:

    • Instance configuration / OS is handled by Beanstalk

    • Deployment strategy is configurable but performed by Elastic Beanstalk

  • Good to re-platform your application from on-premise to the cloud

  • Only pay for the instances used

Feature

  • Supports:

    • Go

    • Java SE / Tomcat

    • .Net on Windows Server with IIS

    • Node.js

    • PHP

    • Python

    • Ruby

    • Packer Builder

    • Docker (Single container / multiconainer / preconfigured )

    • Can write your custom plaform (advanced)

  • Architecture model:

    • Single Instance: good for dev

    • LB + ASG: good for production or pre-production apps

    • ASG only: good for non-web apps in production

  • Deployment policy:

    • All at once

    • Rolling (reduce capacity then fill back with new service)

      • Deploy the new version in batches. Each batch is taken out of service during the deployment phase, reducing your environment's capacity by the number of instances in a batch.

    • Rolling with additional batch (provision new service then terminate old one)

      • Deploy the new version in batches, but first launch a new batch of instances to ensure full capacity during the deployment process.

    • Immutable

      • Deploy the new version to a fresh group of instances by performing an immutable update.

    • Traffic splitting

      • Deploy the new version to a fresh group of instances and temporarily split incoming client traffic between the existing application version and the new one.

  • Replacement Options for Configuration changes:

    • Rolling

      • prevents downtime, applies changes in batches, keeping a minimum number of instances running and serving traffic at all times.

    • Immutable

      • Launches a temporary ASG outside of your environment with a separate set of instances running with the new configuration.

      • Then places the new instances behind your load balancer. Old and new instances both serve traffic until the new instances pass health checks.

      • Then moves the new instances into your ASG and terminates the temporary group and old instances.

    • Disabled (like all at once)

      • Makes no attempt to avoid downtime. It terminates old instances and replaces them with new ones.

  • Scenarios

    • Decoupling Web Server, Woker Servers with SQS

      • If a service contains web tier and worker tier, can decouple them by SQS.

    • Blue / Green Deployment

      • Create a new "stage" environment for deploying v2 there

      • Route swapping options:

        • Utilize Route53 with weighted policies

        • Use "swap URLs" (DNS swap) when done with the environmrnt validation

Last updated