aws re:invent 2016: scaling your web applications with aws elastic beanstalk (dev206)

Post on 06-Jan-2017

190 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Jeff Hoffman | Director, Software Development | AWS Elastic Beanstalk

Adhiraj Singh | Sr. Product Manager | AWS Elastic Beanstalk

November 29, 2016

DEV206

Scaling Your Web Applications with

AWS Elastic Beanstalk

Agenda

• Elastic Beanstalk Introduction

• Elastic Beanstalk vs. DIY

• Getting started with Elastic Beanstalk

• Demo – Sample Application

• Best Practices

• Deployment options

• Managed Updated

• Auto Scaling

• Other tips

Developer challenges

• Complexity of deploying code, provisioning

and managing infrastructure

• Expertise and time needed to manage and

configure servers, databases, load

balancers, firewalls, and networks

• How to automate application scaling

• Lack of consistency across teams

What is Elastic Beanstalk?

AWS Elastic Beanstalk is an easy-to-use service for

deploying, scaling, and managing web applications and

services.

AWS Elastic Beanstalk vs. Do It Yourself

Your code

HTTP Server

Application Server

Language Interpreter

Operating System

Host

Elastic Beanstalk configures each

EC2 instance in your

environment with the components

necessary to run applications for

the selected platform.

Focus on building your

application

Provided by you

Provided and managed by AWS Elastic Beanstalk (EB)

On-instance configuration

AWS Elastic Beanstalk vs. Do It Yourself

• Preconfigured Infrastructure

• Single Instance (Dev, Low Cost)

• Load Balanced, Auto Scaling (Production)

• Web & Worker tiers

• Elastic Beanstalk provisions necessary

infrastructure resources such as the load

balancer, Auto Scaling group, security

groups, database (optional), etc.

• Provides a unique domain name for your

application

(e.g.: youapp.regionx.elasticbeanstalk.com)

Infrastructure stack

Elastic Beanstalk benefits

Fast & simple

to begin

Developer

productivity/agility

Impossible

to outgrow

Complete

resource control

No additional charge to use Elastic Beanstalk.

You pay only for underlying AWS resources (i.e., EC2 instances, S3, etc.)

Common use cases

WebsitesAPI

backends

Mobile

backendsAsynchronous

Workers

How do I get started with Elastic Beanstalk?

Information required to deploy application

01

02

03

04

Region

Stack (container) type

Single InstanceLoad Balanced with

Auto ScalingOR

Database (RDS)

Your code

Optional

Supported Platforms

Building blocks

Application

Application Versions ( V1, V2, …,Vx)

Environment 1

Environment 2

Environment .. n

How to deploy applications

1. Via AWS Management Console

2. Via AWS Toolkit for Eclipse and Visual

Studio IDE

3. Via AWS SDKs and CLI

4. Via EB command line interface

$ eb deploy

Deploy sample application (EB CLI)

Initial application deployment workflow

$ git clone https://github.com/awslabs/eb-node-express-sample.git

Download sample application02

$ eb init

Create your Elastic Beanstalk app03

Follow the prompts to configure the

environment04

05 Create the resources and launch the

application

$ eb create

$ pip install --upgrade awsebcli

Install the AWS Elastic Beanstalk

command line interface (EB CLI)

01

Update sample application (EB CLI)

Update application workflow

Update your code01

$ git add .$ git commit –m “v2.0”$ eb deploy

Add & commit code to repository02

Open application once deployment

completes

03

$ eb open

Sample application details

• Application dependency management

• Configuring/customizing an environment using ebextensions

• Choosing a remote source repository: AWS CodeCommit

• Adding additional AWS resources (e.g.: DynamoDB, SNS, SQS, etc.)

Demo

Best practices

• Deployment options

• Managed Platform Updates

• Auto Scaling

• Load test your application

• Other tips

Deployment options

* Default method ^ ”All at Once” Method used

Environment Type Deployment category Method

All at Once*

Immutable (New)

Disabled*^

Immutable (New)

All at Once

Rolling*

Rolling with additional batch

Immutable

Disabled^

Rolling based on Health*

Rolling based on Time

Immutable

Single Instance

Load Balanced/Auto-Scaled

Application

Platform/Configuration

Application

Platform/Configuration

All at once: step 0

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

All at once: step 1

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v2v2

All at once: step 2

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v2v2

Rolling: step 0

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling: step 1

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling: step 2

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling: step 3

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v2v2

Rolling: step 4

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v2v2

Rolling with additional batch: step 0

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 1

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2 v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 2

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2 v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 3

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2 v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 4

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2 v2 v2

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 5

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2 v2 v2

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 6

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2 v2 v2

myapp.us-east-1.elasticbeanstalk.com

v1v1

Rolling with additional batch: step 7

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v2v2

Immutable: step 0

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Immutable: step 1

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Auto Scaling Group

v2

Immutable: step 2

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Auto Scaling Group

v2

Immutable: step 3

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Auto Scaling Group

v2 v2 v2v2

Immutable: step 4

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Auto Scaling Group

v2 v2 v2v2

Immutable: step 5

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Auto Scaling Group

v2 v2 v2v2

Immutable: step 6

Elastic Beanstalk Environment

myapp.us-east-1.elasticbeanstalk.com

Auto Scaling Group

v2 v2 v2v2

Immutable: step 6

Auto Scaling Group

Elastic Beanstalk Environment

v2 v2

myapp.us-east-1.elasticbeanstalk.com

v2v2

Blue/Green: step 0

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Blue/Green: step 1

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp_new.us-east-1.elasticbeanstalk.com

v1v1

Cloned environment

Blue/Green: step 2

Auto Scaling Group

Elastic Beanstalk Environment

v2 V2

myapp_new.us-east-1.elasticbeanstalk.com

v2v2

Cloned environment

Blue/Green: step 3

Cloned environment

Auto Scaling Group

Elastic Beanstalk Environment

v2 V2

myapp_new.us-east-1.elasticbeanstalk.com

v2v2

Blue/Green: step 4

Blue/Green: step 5

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp.us-east-1.elasticbeanstalk.com

v1v1

Cloned environment

Auto Scaling Group

Elastic Beanstalk Environment

v2 V2

myapp_new.us-east-1.elasticbeanstalk.com

v2v2

Blue/Green: step 6

Auto Scaling Group

Elastic Beanstalk Environment

v1 v1

myapp_new.us-east-1.elasticbeanstalk.com

v1v1

Cloned environment

Auto Scaling Group

Elastic Beanstalk Environment

v2 V2

myapp.us-east-1.elasticbeanstalk.com

v2v2

Application deployment options

Method Impact of failed deploymentDeploy

Time

Zero

Downtime

No DNS

Change

Rollback

process

Code

Deployed

To

All at Once Downtime X Re-deploy Existing

instances

Rolling Single batch out of service. Any

successful batches prior to

failure running new application

version

♦ Re-deploy Existing

instances

Rolling with

additional batch

Minimum if first batch fails,

otherwise similar to Rolling

♦ Re-deploy New &

existing

instances

Immutable Minimal Re-deploy New

instances

Blue/Green Minimal Swap URL New

instances

Options available for both Single Instance and Load Balanced/Auto-Scaled Environments ♦ Varies depending on instance batch size

Managed Platform Update

Configure your environment to automatically upgrade to the latest

version of a platform during a scheduled maintenance window.

• Permissions

• Maintenance Window

• Minor and Patch Updates

Key benefits:

• Automated Upgrades

• No/Minimal downtime

• No/Minimal impact on capacity

• Flexibility of manual updates

• Instance replacement

DemoManaged updates

Auto Scaling

Min/Max instances

Availability Zones

Scaling cooldown

Triggers based scaling

Trigger measurement (CPU utilization, network traffic, disk activity, instance health)

Trigger statistic

Measurement period

Breach duration

Thresholds

Breach scale increment

Time-based scaling

Name

Min/Max instance

Occurrence (One-time, Recurrent)

Recurrence (CRON expression- 30 8 * * 3)

Other tips

Logs, Metrics, & Alarms• Enable log rotation to automatically publish logs to S3.

• Understand metrics available for your environment and what they mean.

• Set up alarms to automatically monitor critical metrics and send notifications when

metrics are outside normal operating range.

• Enable Amazon Route 53 health checks and alarms

Tag your environments• Makes it easy to find resources belonging to a given environment.

• Can be used to monitor costs associated with a given environment and/or

application.

• AWS Elastic Beanstalk automatically tags environments with:

• Environment Name

• Environment ID

Key linksElastic beanstalk resources:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/RelatedResources.html

Sample application:

https://github.com/awslabs/eb-node-express-sample

Troubleshooting tips:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/troubleshooting.html

Tutorials and samples:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/tutorials.html

Deployment options:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html

Managed Updates:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-platform-update-managed.html

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-servicerole.html#iam-servicerole-update

Configuring Auto Scaling:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.as.html

Load Testing with Locust:

https://aws.amazon.com/blogs/devops/using-locust-on-aws-elastic-beanstalk-for-distributed-load-generation-and-testing/

https://github.com/awslabs/eb-locustio-sample

Tagging your Elastic Beanstalk resources:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.tagging.html

Thank you!

Remember to complete

your evaluations!

top related