Gerenciando e implantando suas
aplicações na Nuvem da AWS: Elastic
Beanstalk, OpsWorks e CloudFormation
José Papo
AWS Tech Evangelist
@josepapo
Infraestrutura Global US West
(Northern
California)
US East (Northern
Virginia)
EU (Ireland)
Asia
Pacific (Singapore)
Asia
Pacific (Tokyo)
Regiões AWS
Pontos Edge AWS
GovCloud (US ITAR
Region)
US West (Oregon)
South
America (Sao Paulo)
Asia
Pacific (Australia)
Compute Storage
AWS Global Infrastructure
Database
App Services
Deployment & Management
Networking
Modelo de Referência
Como facilitar o deploy e controle do que é feito nos ambientes de dev, test e produção?
Alto nível, pacotes simples
Controle declarativo de
ajuste fino
“Eu só quero minha app funcionando!”
“Eu quero ter controle e também versionar todo o
meu deploy de data center como se fosse um
arquivo de config”
Alto nível, pacotes simples
Controle declarativo de
ajuste fino
“Eu só quero minha app funcionando!”
“Eu quero ter controle e também versionar todo o
meu deploy de data center como se fosse um
arquivo de config”
Elastic Beanstalk
CloudFormation
AWS OpsWorks
“Eu quero minha solução funcionando
com DevOps”
aws.amazon.com/pt/application-management/
Alto nível, pacotes simples
Controle declarativo de
ajuste fino
“Eu só quero minha app funcionando!”
“Eu quero ter controle e também versionar todo o
meu deploy de data center como se fosse um
arquivo de config”
Elastic Beanstalk
CloudFormation
AWS OpsWorks
“Eu quero minha solução funcionando
com DevOps”
Deploy e gestão rápida de apps na AWS…
Elastic Beanstalk
CloudFormation
OpsWorks
Múltiplas plataformas
Elastic Beanstalk
CloudFormation
.Net PHP
Java Python
Ruby Node.js
OpsWorks
Só o pacote da aplicação é necessário
Elastic Beanstalk
CloudFormation
OpsWorks
Beanstalk automaticamente cria o ambiente…
Elastic Beanstalk
CloudFormation
Tools
…adicioando o Elastic Load Balancer…
Elastic Beanstalk
CloudFormation
OpsWorks
…Auto Scaling groups
Elastic Beanstalk
CloudFormation
OpsWorks
…e lançando instancias
Elastic Beanstalk
CloudFormation
OpsWorks
…tudo integrado no Elastic Beanstalk
Elastic Beanstalk
CloudFormation
OpsWorks
…e publicado com um CNAME
Elastic Beanstalk
CloudFormation
OpsWorks
…com logs e versões da app armazenados no S3
Elastic Beanstalk
CloudFormation
OpsWorks
E os dados?
Como você cria uma app para o AWS ElasticBeanstalk?
Como qualquer outra app!
Sua aplicação sem dependências específicas ao ambiente
Elastic Beanstalk
CloudFormation
Código enviado ao Beanstalk
Código pode ser baixado e
usado localmente
OpsWorks
Empacotamento como usual…
Elastic Beanstalk
CloudFormation
Java .war file
Microsoft Web
Deploy package
PHP .zip file
Python .zip file
Git IDE plugins
OpsWorks
Deploy e updates via Console
Elastic Beanstalk
CloudFormation
OpsWorks
Wizards e ferramentas de linha de comando
Elastic Beanstalk
CloudFormation
CheckDNSAvailability elastic-beanstalk-check-dns-availability
CreateApplication elastic-beanstalk-create-application
CreateApplicationVersion
elastic-beanstalk-create-application-version
CreateEnvironment
elastic-beanstalk-create-environment
eb init wizard para inicializar uma aplicação
eb start/stop iniciar/desligar uma aplicação
eb update
atualizar uma versão de aplicação
eb status
verificar status de uma aplicação
OpsWorks
Integração com Eclipse
Elastic Beanstalk
CloudFormation
OpsWorks
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Eclipse
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Eclipse
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Eclipse
Integração com Visual Studio
Elastic Beanstalk
CloudFormation
OpsWorks
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Visual Studio
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Visual Studio
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Visual Studio
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Visual Studio
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Visual Studio
Elastic Beanstalk
CloudFormation
OpsWorks Integração com Visual Studio
Integração com Git
Elastic Beanstalk
CloudFormation
OpsWorks
Configurações do container
Elastic Beanstalk
CloudFormation
OpsWorks
Elastic Beanstalk
CloudFormation
OpsWorks Configurações do container
Elastic Beanstalk
CloudFormation
OpsWorks Configurações do container
Elastic Beanstalk
CloudFormation
OpsWorks Configurações do container
Elastic Beanstalk
CloudFormation
OpsWorks Configurações do container
E acesso completo aos recursos do Elastic Beanstalk caso necessário
Instancias EC2, AMIs, AutoScaling groups…
Alto nível, pacotes simples
Controle declarativo de
ajuste fino
“Eu só quero minha app funcionando!”
“Eu quero ter controle e também versionar todo o
meu deploy de data center como se fosse um
arquivo de config”
Elastic Beanstalk
CloudFormation
AWS OpsWorks
“Eu quero minha solução funcionando
com DevOps”
Elastic Beanstalk
CloudFormation
CloudFormation
Uma interface consistente de scripts para criar/configurar
recursos AWS
Um framework para gestão de ciclo de vida de recursos criados
usando scripts
Security Scaling
Database
Networking Monitoring
Messaging
Workflow
DNS
Load Balancing
Backup CDN
Compute
Storage
CloudFormation – framework de automação
OpsWorks
CloudFormation components & terminology
Elastic Beanstalk
CloudFormation
Template CloudFormation
Stack
JSON
Parametros
Recursos
Ações
Serviços AWS configurados
Suporta os principais serviços
Customizável
Framework
Criação do Stack
Atualizações do Stack
Detecção de erros e rollback
OpsWorks
Template examples
Elastic Beanstalk
CloudFormation
Template {
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair to enable SSH
access to the instance",
"Type" : "String"
}
},
}
Exemplo: Recebendo parametros
OpsWorks
JSON
Parametros
Recursos
Ações
Template examples
Elastic Beanstalk
CloudFormation
Template {
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "Create RDS with fixed username and password",
"Resources" : {
"MyDB" : {
"Type" : "AWS::RDS::DBInstance",
"Properties" : {
"AllocatedStorage" : "5",
"DBInstanceClass" : "db.m1.small",
"Engine" : "MySQL",
"EngineVersion" : "5.5",
"MasterUsername" : "MyName",
"MasterUserPassword" : "MyPassword"
}
}
}
}
Exemplo: Criando uma instancia RDS
OpsWorks
JSON
Parametros
Recursos
Ações
Template examples
Elastic Beanstalk
CloudFormation
Template "AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"yum" : {
"mysql" : [],
"mysql-server" : [],
"httpd" : [],
"php" : [],
"php-mysql" : []
}
},
"sources" : {
"/var/www/html" : "https://s3.amazonaws.com/
cloudformation-examples/
CloudFormationPHPSample.zip"
},
Exemplo: Instalando software
OpsWorks
JSON
Parametros
Recursos
Ações
Benefícios de ambientes definidos por scripts
Elastic Beanstalk
CloudFormation
Template
Definição procedural Crie um stack
completo programaticamente
Configuração conhecida Armazene os scripts no controle de versões
Dirigido por parametros Templates dinâmicos e
dirigidos pela equipe DevOps
Colaboração Compartilhe templates de maneira simples
OpsWorks
NASA TV & Curiosity Route 53 DNS Multi-region & AZ
Elastic Load Balancing Amazon Live Streaming
Cloud Front Cloud Formation
NASA TV & Curiosity Route 53 DNS Multi-region & AZ
Elastic Loadbalancing Amazon Live Streaming
Cloud Front Cloud Formation
Template ELBs
~100 servidores Nginx para cache
2-3 servidores Nginx para aplicação
Stack
Template CloudFormation define a infraestrutura de
vídeos e imagens
NASA TV & Curiosity Route 53 DNS Multi-region & AZ
Elastic Loadbalancing Amazon Live Streaming
Cloud Front Cloud Formation
Com a demanda crescente é possível criar novos stacks em diferentes AZs ou regiões com
um clique ou programaticamente
Rollout complexo feito em apenas um
clique
Alto nível, pacotes simples
Controle declarativo de
ajuste fino
“Eu só quero minha app funcionando!”
“Eu quero ter controle e também versionar todo o
meu deploy de data center como se fosse um
arquivo de config”
Elastic Beanstalk
CloudFormation
AWS OpsWorks
“Eu quero minha solução funcionando
com DevOps”
Solução DevOps poderosa com suporte a Chef
Elastic Beanstalk
CloudFormation
Stack Layers Management
Ambiente
gerenciado
Definição do ambiente
Serviços de
gestão
Escalabilidade, clonagem de
ambientes, self healing
Coleção de
recursos
Camada de aplicação, de base de dados, etc
OpsWorks
Apps
Os ativos de
aplicação
Código-fonte ou executáveis para
implantar em uma camada
Criação simples de stacks com definição de camadas
Elastic Beanstalk
CloudFormation
OpsWorks
Layers
Load balancing
HA Proxy ou Elastic Load Balancers
Container de aplicação
Static, Node.js, Rails, PHP, etc
Camada de banco de dados
MySQL, SQL Server, Oracle, etc
Elastic Beanstalk
CloudFormation
OpsWorks
Layers Ganglia
MemCached
Camadas customizadas
+
Criação simples de stacks com definição de camadas
Scaling and auto-healing
Elastic Beanstalk
CloudFormation
OpsWorks
Auto healing
Troca de uma instancia com problemas mesmo
sem escalabilidade
i.e. sempre manter 3 nós em 3 AZs
Time based scaling
Criar uma nova instancia EC2 em horários determinados
i.e. executa algumas instancias apenas em dias ou horas específicas
Load based scaling
Adicionar e remover instancias com base em
regras de carga
i.e. cria novas instancias quando a CPU passar de 80%
Escalabilidade e auto-healing
Elastic Beanstalk
CloudFormation
OpsWorks
Escalabilidade e auto-healing
Elastic Beanstalk
CloudFormation
OpsWorks Lo
ad b
ased
Ti
me
bas
ed
Implantação de aplicações
Elastic Beanstalk
CloudFormation
OpsWorks
Elastic Beanstalk
CloudFormation
OpsWorks Implantação de aplicações
Elastic Beanstalk
CloudFormation
OpsWorks Implantação de aplicações
Customização com chef recipes
Elastic Beanstalk
CloudFormation
OpsWorks
Inicie rapidamente com Beanstalk (controle o caos)
Controle granular e script com CloudFormation
(especificações do data center em script)
Gerencie com camadas e recipes Chef com OpsWorks
(controle com customização Chef)
aws.amazon.com/pt/application-management
Saiba mais em…
RECURSOS TÉCNICOS
awshub.com.br
OBRIGADO! aws.typepad.com/brasil
slideshare.net/AmazonWebServicesLATAM
José Papo
AWS Tech Evangelist
@josepapo