34
© 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 Beanstalk AWS Experience Porto Alegre 2016

Escalando sua aplicação Web com Beanstalk

Embed Size (px)

Citation preview

Page 1: Escalando sua aplicação Web com Beanstalk

© 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

Page 2: Escalando sua aplicação Web com Beanstalk

Agenda

• O que é o Elastic Beanstalk?

• Primeiros Passos com o Elastic Beanstalk

• Demo

• Melhores Práticas

Page 3: Escalando sua aplicação Web com Beanstalk

Porque nós contruímos o Elastic Beanstalk?

Page 4: Escalando sua aplicação Web com 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

Page 5: Escalando sua aplicação Web com Beanstalk

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

Page 6: Escalando sua aplicação Web com Beanstalk

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

Page 7: Escalando sua aplicação Web com Beanstalk

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

Page 8: Escalando sua aplicação Web com Beanstalk

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.
Page 9: Escalando sua aplicação Web com Beanstalk

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.

Page 10: Escalando sua aplicação Web com Beanstalk

Benefícios

Rápido e simples de começar

Produtividade para

desenvolvedor

Escalabilidade automática

Total Controle dos Recursos

Page 11: Escalando sua aplicação Web com Beanstalk

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

Page 12: Escalando sua aplicação Web com Beanstalk

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

Page 13: Escalando sua aplicação Web com Beanstalk

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

Page 14: Escalando sua aplicação Web com Beanstalk

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

Page 15: Escalando sua aplicação Web com Beanstalk

Casos de Uso Comuns

• Websites

• API backends

• Mobile backends

• Processamento assíncrono

Page 16: Escalando sua aplicação Web com Beanstalk

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

Page 17: Escalando sua aplicação Web com Beanstalk

Primeiros passos com o Elastic Beanstalk

Page 18: Escalando sua aplicação Web com 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.
Page 19: Escalando sua aplicação Web com Beanstalk

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)

Page 20: Escalando sua aplicação Web com Beanstalk

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?
Page 21: Escalando sua aplicação Web com Beanstalk

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?
Page 22: Escalando sua aplicação Web com Beanstalk

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

Page 23: Escalando sua aplicação Web com Beanstalk

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

Page 24: Escalando sua aplicação Web com Beanstalk

Demo: Interagindo com a AWS via Eclipse

Page 25: Escalando sua aplicação Web com Beanstalk

Melhores Práticas

Page 26: Escalando sua aplicação Web com Beanstalk

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;

Page 27: Escalando sua aplicação Web com Beanstalk

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

Page 28: Escalando sua aplicação Web com Beanstalk

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

Page 29: Escalando sua aplicação Web com Beanstalk

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

Page 30: Escalando sua aplicação Web com Beanstalk

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

Page 31: Escalando sua aplicação Web com Beanstalk

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

Page 32: Escalando sua aplicação Web com Beanstalk

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

Page 33: Escalando sua aplicação Web com Beanstalk

Conclusão

• Elastic Beanstalk é a maneira mais simples e conveniente de

subir aplicações na AWS

• Possui recursos poderosos

• Pague somente pelos recursos utilizados

Page 34: Escalando sua aplicação Web com Beanstalk

Muito Obrigado!