Escalando sua aplicação Web com Beanstalk

Preview:

Citation preview

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

Glauber Gallego - Arquiteto de Soluções

Setembro 2016

Escalando suas aplicações Web com Elastic BeanstalkAWS Experience Porto Alegre 2016

Agenda

• O que é o Elastic Beanstalk?

• Primeiros Passos com o Elastic Beanstalk

• Demo

• Melhores Práticas

Porque nós contruímos o Elastic Beanstalk?

* As of 30 April 2016

2009

48

280

722

82

2011 2013 2015

Passo de inovação na AWSOuvimos nossos clientes e criamos o que eles precisam

Alguns Desafios dos Clientes

Implantar código e não se preocupar o provisionamento e gerenciamento da infraestrutura

Não ter expertise ou tempo disponível

Escalabilidade automática de aplicações

Elastic Beanstalk

Maneira mais simples para implantar e escalar aplicações

Java, .NET, PHP, Node.js, Python, Ruby, Go e Docker

Faça o upload de sua aplicação e deixe o Beanstalk gerenciar a infraestrutura necessária

Elastic Beanstalk vs. Faça você mesmo

Seu código

Servidor HTTP

Servidor de Aplicação

Interpretador

Sistema Operacional

Host

Foco na construção de sua aplicação

Fornecido por você

Fornecido e gerenciado pelo Elastic Beanstalk

On-instance configuration

Elastic Beanstalk vs. Faça você mesmo

• Instância única ou com balanceador

•Camada Web e Camada de Workers

• Provisiona a infra necessária: balanceador de carga, auto scaling, security groups, bds (opcional), etc.

• Provê um único domínio para aplicação: app.elasticbeanstalk.com)

Stack de Infraestrutura

Becherer, Lou Ann
Must change www.mywebsite.com to www.example.com. www.mywebsite.com is a we site belonging to someone else.

Versionamento da aplicação e configuração

Configurações salvasGuarde as conf. dos seus ambientes para replicação futura

Versão das appsVersões armazenadas no S3. Código pode vir do Git.

Benefícios

Rápido e simples de começar

Produtividade para

desenvolvedor

Escalabilidade automática

Total Controle dos Recursos

Rápido e Simples de Começar

Maneira mais rápida e simples de se implantar uma aplicação na AWS

Faça o upload de sua aplicação e deixe o Beanstalk gerenciar a infraestrutura necessária

Produtividade para o Desenvolvedor

Provisiona a infraestrutura e gerencia a stack das aplicações por você

Foco na criação de códigos ao invés de gastar tempo gerenciando infraestrutura

Escalabilidade automática

Elastic Beanstalk automaticamente escala sua aplicação

Utilize métricas do CloudWatch para disparar ações de escalabilidade

Ex: utilização de CPU

Total Controle dos Recursos

Mantenha o controle total sobre os recursos na AWS

Assuma o controle de alguns (ou todos) os elementos de sua infraestrutura

Casos de Uso Comuns

• Websites

• API backends

• Mobile backends

• Processamento assíncrono

Preço e Disponibilidade

• Atualmente disponível em todas as regiões da AWS

• Não há cobrança adicional pelo AWS Elastic Beanstalk

• Pague somente pelos recursos (ex: instâncias EC2, ELBs ou

RDS, etc) criados para rodar suas aplicações

Primeiros passos com o Elastic Beanstalk

Informações para implantar uma aplicação

01

02

03

04

Região

Tipo de Stack

Instância única Balanceador e AutoScalingou

Banco de Dados (RDS) Optional

Seu código Plataformas

Becherer, Lou Ann
Is autoscaling generic or the service (Auto Scaling). Should it be consistent with reference on preceding slide.
Becherer, Lou Ann
Are 0s in numbered list necessary? The standard is without the 0.

Como implantar aplicações

1. Com o AWS Management Console

2. Com o AWS Toolkit para Eclipse ou Visual Studio IDE

3. Com o EB CLI (command line)

Implantando uma aplicação via CLI

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

Baixe uma aplicação exemplo:2

$ eb initCrie seu app3

Siga os prompts e configure o ambiente

4

5 Crie os recursos e lance a aplicação:$ eb create

$ pip install --upgrade awsebcli

Instale o EB CLI:1

Becherer, Lou Ann
Are the 0s necessary in the numbered list?

Atualizando via CLI

Atualize seu código1

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

Adicione e faça o commit no repositório2

Abra a aplicação quando o deploy terminar:3$ eb open

Becherer, Lou Ann
Are 0s necessary?

Demo: Implantando uma aplicação no ElasticBeanstalk via Console

Demo: Implantando uma aplicação no ElasticBeanstalk via CLI

Demo: Interagindo com a AWS via Eclipse

Melhores Práticas

Teste e faça o tunning de sua aplicação

• Escolha as métricas de performance que você deseja otimizar (ex: latência, usuários concorrentes, requisições web, etc.)

• Faça o teste de carga de sua aplicação

• Configure Autoscaling para otimizar as métricas de performance

• Faça o tunning do backend (DynamoDB, RDS, etc.) para performance ótima;

Implantação – Rolling updates

1. Defina a % de instâncias implantadas por vez

2. Implante x% e continue somente se as instâncias estiverem saudáveis

3. Rollback automático em caso de falhas

Prós:• Implantações são rápidas (20-60 s)

Contras:• Rollback mais demorado pois a versão

anterior da aplicação precisa ser reimplantada

Implantação – Rolling updates

Implantação – Zero Downtime

1. Crie um novo ambiente para uma aplicação

2. Implante a nova versão da app no novo ambiente

3. Use o “Swap Environment URLs” para direcionar os usuários para o novo ambiente de produção

Prós:• Implantação com Zero downtime• Rollback rápido: ambiente com a versão anterior não foi

modificado

Contras:• Implantações levam mais tempo do que o modelo rolling

(2-5 min) pois um novo ambiente precisa ser criado• Cache de DNS, não respeitam o TTL

Implantação – Zero Downtime

Logs, métricas e alarmes

• Habilite a rotação de logs para que sejam automaticamente gravadas no S3

• Entender métricas disponíveis para o seu ambiente e o que eles significam

• Configure alarmes para monitorar automaticamente métricas críticas e enviar notificações quando estiverem fora do intervalo de operação normal

Coloque Tags em seus ambientes

• Torna mais fácil a busca de recursos de um determinado ambiente

• Pode ser utilizada para monitorar custos associado a um ambiente ou aplicação

• Elastic Beanstalk automaticamente coloca tags nos ambientes:

• Environment name• Environment ID

Conclusão

• Elastic Beanstalk é a maneira mais simples e conveniente de

subir aplicações na AWS

• Possui recursos poderosos

• Pague somente pelos recursos utilizados

Muito Obrigado!