SlideShare a Scribd company logo
1 of 95
Download to read offline
Eduardo Horai
AWS Solutions Architect
Continuous Deployment e DevOps na Nuvem
Vários Tutoriais , treinamentos e mentoria em
português
Inscreva-se agora !!
http://awshub.com.br
Foco de hoje:
Sem discussões filosóficas sobre Continuous Integration (CI),
Continuous Deployment (CD) ou DevOps
Como AWS pode te ajudar em CI / CD / DevOps
Exemplos de boas práticas (porém não verdades absolutas)
AWS + Soluções Open Source
• Continuous Integration
• Continuous Deployment
• DevOps
• Continuous Integration
• Continuous Deployment
• DevOps
Técnicas e ferramentas para
implementar processos
contínuos de verificação de
qualidade, aplicados
frequentemente, para
melhorar a qualidade do
software e reduzir o tempo de
entrega.
• Continuous Integration
• Continuous Deployment
• DevOps
Técnicas e ferramentas para
melhorar o processo de
entrega de software,
resultando em deployments
rápidos, confiáveis e
repetíveis de melhorias ou
correção de bugs com baixo
risco e mínimo de
intervenção manual.
• Continuous Integration
• Continuous Deployment
• DevOps
Entregando o código
feito pelas mãos dos
desenvolvedores ao
ambiente de produção de
maneira rápida e
eficiente, com resultados
positivo
• Continuous Integration
• Continuous Deployment
• DevOps
Relação direta entre
desenvolvedores e
operadores de infra, para
diminuir riscos e unir
duas áreas essenciais do
ciclo de vida de um
software.
Continuous Integration & Deployment na AWS
• Infraestrutura também é código (programável)
• Automação de teste e deploy do início ao fim
• Ambientes Dev/QA/Prod são os mais parecidos possíveis
• Utilizar diferente modelos de custo quando necessário
• Simplificar e aumentar a frequência e velocidade do processo de
deploy
• Utilizar serviços da AWS para controlar fluxo
• Monitorar e observar tudo (instância, apliçação, logs)
Infraestrutura antiga!
Infraestrutura hoje!
Na Amazon Web Services
Na infraestrutura atual, tudo é código.
Desde o desenvolvimento de aplicações, até os arquivos de
configurações de ferramentas de automação, incluindo
também templates do CloudFormation ou scripts para
chamar as APIs da AWS.
Infraestrutura é código, por isso…
• Controle de versionamento (bom início, mas não é tudo)!
• Utilizar sistemas de bug tracking / ticketing
• Revisões de código antes de ir pra produção!
• Criar “design patterns” para infraestrutura
• Testar as mudanças no código da infraestrutura
A jornada do seu código até a produção…
1. Código é escrito
Alguém escreve o código, faz commit no Svn/Git/etc
Controlador de versão ativa o trabalho do CI
2. Código é testado
Testes unitários, testes de integração, testes de db,
smoke testes, UI testes, …
Luz verde indica OK ou volta para etapa 1.
3. Código é “deployado”
Código é entregue!
Pronto para ser utilizado em produção!
3. Código é consumido
Clientes utilizam o código (aplicação), adoram,
vitória, fim de uma jornada longa, férias na praia.
Código, código, código, …
1.Software ( tools, services, scripts )
2.Ambientes de infraestrutura( dev, test, prod )
3.Processos ( deploy, monitor, alert, track )
Precisamos de ferramentas para trabalhar
com os códigos acima de maneira rápida e
mais eficiente.
Código, código, código, …
1.Software ( tools, services, scripts )
2.Ambientes de infraestrutura( dev, test, prod )
3.Processos ( deploy, monitor, alert, track )
Opções de Continuous Integration
• Suporte para verificação de QA e testes repetidos com resultados pré definidos
• Opções: hospedado, open source, proprietário, SaaS…
Continuous Integration - Jenkins
“An extendable open source continuous
integration server”
• Open Source
• Well established and used by many
• Has plugins for EC2/SQS/SNS/CloudFormation!
• Supports spot pricing!
• Supports the ability to put workers into a
“standby” mode by stopping instead of
terminating
• Scales well
• Easily add more EC2 instances as workers
• Flexible
• Easy to get started
Internal
GitCI Server
Pre-commit
Hook
Testing Environment Subnet
CI Workers
Teste de receitas Chef com FoodCritic depois de cada commit no GIT.
…e agora, para onde o código vai?
Ambientes de infraestrutura
Ruim, muito ruim:
“Desenvolvedores desenvolvem localmente nos seus laptops, utilizando MacOS
ou Ubuntu, e depois o deploy na produção é em RedHat. Cada laptop tem uma
configuração um pouco diferente com versões de software diferentes.”
– Dev e prod não estão em sincronia
– Dev não está em sincronia com outros devs
– Sem ambiente de teste entre dev e prod
“… na minha máquina funcionou…”
(todo) desenvolvedor
Region
Amazon
Route 53
Amazon
CloudFront
Customer
Traffic
Amazon S3
Availability Zone
Availability Zone
Availability Zone
Internet
Gateway
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
Instance Instance
Instance
NAT
Bastion/
Chef
ELBELB
RDS DB
Instance
RDS DB Instance
Standby (Multi-AZ) Instance
AWS
CloudFormation
Amazon CloudWatch
Amazon
SNS
Potential RDS DB
Instance Read
Replica
Instance Instance
Region
Amazon
Route 53
Amazon
CloudFront
Customer
Traffic
Amazon S3
Availability Zone
Availability Zone
Availability Zone
Internet
Gateway
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
Instance Instance
Instance
NAT
Bastion/
Chef
ELBELB
RDS DB
Instance
RDS DB Instance
Standby (Multi-AZ) Instance
AWS
CloudFormation
Amazon CloudWatch
Amazon
SNS
Potential RDS DB
Instance Read
Replica
Instance Instance
Dev Environment VPC Subnet
DEV WEB ELB
Dev Stack
Tier 1
Dev Stack
Tier 2
Dev MySQL DB Instance DEV APP ELB
Ambiente de desenvolvimento
Dev Environment VPC Subnet
DEV WEB ELB
Dev Stack
Tier 1
Dev Stack
Tier 2
Dev MySQL DB Instance DEV APP ELB
Ambiente de desenvolvimento
Region
Amazon
Route 53
Amazon
CloudFront
Customer
Traffic
Amazon S3
Availability Zone
Availability Zone
Availability Zone
Internet
Gateway
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
Instance Instance
Instance
NAT
Bastio
n/Chef
ELBELB
RDS DB
Instance
RDS DB Instance
Standby (Multi-AZ) Instance
AWS
CloudFormation
Amazon CloudWatch
Amazon
SNS
Potential
RDS DB
Instance
Read Replica
Instance Instance
Dev Environment VPC Subnet
DEV WEB ELB
Dev Stack
Tier 1
Dev Stack
Tier 2
Dev MySQL DB Instance DEV APP ELB
Ambiente de desenvolvimento
Region
Amazon
Route 53
Amazon
CloudFront
Customer
Traffic
Amazon S3
Availability Zone
Availability Zone
Availability Zone
Internet
Gateway
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
Instance Instance
Instance
NAT
Bastion/
Chef
ELBELB
RDS DB
Instance
RDS DB Instance
Standby (Multi-AZ) Instance
AWS
CloudFormation
Amazon CloudWatch
Amazon
SNS
Potential RDS DB
Instance Read
Replica
Instance Instance
Region
Amazon
Route 53
Amazon
CloudFront
Customer
Traffic
Amazon S3
Availability Zone
Availability Zone
Availability Zone
Internet
Gateway
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
Instance Instance
Instance
NAT
Bastion/
Chef
ELBELB
RDS DB
Instance
RDS DB Instance
Standby (Multi-AZ) Instance
AWS
CloudFormation
Amazon CloudWatch
Amazon
SNS
Potential RDS DB
Instance Read
Replica
Instance Instance
Dev Environment VPC Subnet
DEV WEB ELB
Dev Stack
Tier 1
Dev Stack
Tier 2
Dev MySQL DB Instance DEV APP ELB
Ambiente de desenvolvimento
Ambiente de desenvolvimento
Developers
&
Operations
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
Ambiente de desenvolvimento
Developers
&
Operations
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
Ambientes de desenvolvimento & teste
Developers
&
Operations
Internal
GitCI Server
Pre-commit
Hook
Testing Environment Subnet
CI Workers
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
Ambientes de infraestrutura
• Estar preparado para rodar diversos ambientes
– Development
– Testing/QA
– Staging/Pre-prod
– Production
• Eles devem ser o mais semelhante possível (mesmo stack)
• Utilizar ferramentas de gerenciamento de configuração e orquestração de
infraestrutura
• Toda instância deve ser recriável
• Objetivo: criar do zero, todas instâncias rodando sem intervenção humana
Mas isso parece que dá muito trabalho
e talvez custoso.
(pra não dizer impossível)
NÃO PRECISA SER!
(e sim, é possível)
Automação de infraestrutura
Queremos ser capazes de rapidamente criar novos ambiente conforme
necessitamos.
Hmmm… parece que precisamos de automatização!
– AWS CloudFormation
– AWS Elastic Beanstalk
– AWS OpsWorks
– Chef
– Puppet
AWS CloudFormation
"WebServer" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, "64" ]},
"SpotPrice" : { "Ref" : "SpotPrice" },
"InstanceType" : m1.large",
"SecurityGroups" : [{ "Ref" : "InstanceSecurityGroup" }],
"KeyName" : { "Ref" : "KeyName" },
"UserData": {
"Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -vn",
"yum update -y aws-cfn-bootstrapn”,
"curl -L http://www.opscode.com/chef/install.sh | bashn",
"cd /etc/chefn",
"/usr/bin/wget http://",{ "Ref" : "ChefServerIP" },"/chef/validation.pemn",
"/usr/bin/wget http://",{ "Ref" : "ChefServerIP" },"/chef/client.rbn",
"/bin/chown -R chef:chef /etc/chefn",
Ambientes de desenvolvimento & teste
Developers
&
Operations
Internal
GitCI Server
Pre-commit
Hook
Testing Environment Subnet
CI Workers
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
Ambientes de desenvolvimento & teste
Developers
&
Operations
Internal
GitCI Server
Pre-commit
Hook
Testing Environment Subnet
CI Workers
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
AWS Elastic Beanstalk & OpsWorks
Elastic Beanstalk:
• Application container framework similar to a PaaS
• Deploy your application into Elastic Beanstalk and it takes care of building a self
healing, auto-scaling, multi-AZ infrastructure
• Allows you to turn some of the knobs under the hood to tweak
• Considered one of the easiest places to start with hosting an application on AWS
OpsWorks:
• Build multi-layer application stacks
• Ties in with Chef for a large degree of flexibility and customization
• Makes deploying applications easier
• More flexible than Elastic Beanstalk, but requires a bit more knowledge
AWS Application Management Services
Elastic Beanstalk OpsWorks CloudFormation EC2
Convenience Control
Higher-level Services Do it yourself
Ambientes de desenvolvimento & teste
Developers
&
Operations
Internal
GitCI Server
Pre-commit
Hook
Testing Environment Subnet
CI Workers
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
Elastic Beanstalk ou OpsWorks
Region
Amazon
Route 53
Amazon
CloudFront
Customer
Traffic
Amazon S3
Availability Zone
Availability Zone
Availability Zone
Internet
Gateway
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
VPC Subnet VPC Subnet VPC Subnet VPC Subnet
Instance Instance
Instance
NAT
Bastion/
Chef
ELBELB
RDS DB
Instance
RDS DB Instance
Standby (Multi-AZ) Instance
AWS
CloudFormation
Amazon CloudWatch
Amazon
SNS
Potential RDS DB
Instance Read
Replica
Instance Instance
Elastic Beanstalk or OpsWorks
Imagine que você tem uma infraestrutura e você poderia
ligar e desligar por demanda, aproveitar a capacidade
não utilizada por um preço menor ou ainda reservar
capacidade baseado no seu uso e assim economizar!
Ahn….na AWS você pode!
Utilizando o modelo de custo correto – EC2
• On Demand
• Reserved Instance ( RI ) – 40%+ economia
• Spot – 80%+ economia
Cada um tem seu lugar. Para ambiente de desenvolvimento,
por exemplo:
• On Demand – Dev instances start/stop todo dia
• Reserved Instances – Repositório código, CI master, DBs
• Spot – CI workers, camadas de desenvolvimento que podem ser
desligados eventualmente
Ambientes de desenvolvimento & teste
Developers
&
Operations
Internal
GitCI Server
Pre-commit
Hook
Testing Environment Subnet
CI Workers
Dev Environment VPC Subnet
DEV
WEB ELBDev Stack
Tier 1
Dev Stack
Tier 2
Dev
MySQL DB
Instance
DEV APP
ELB
VPN
TUNNEL
VPN facing VPC Subnet
Internet
Gateway
VPN
Endpoint
Dev Admin
Instance
NAT
Instance
Amazon S3
Amazon
DynamoDB
Amazon SQS
Amazon
CloudFront
Amazon
Route 53
RESERVED INSTANCES
SPOT/ON-DEMAND
RRS S3, CloudFront
Price Classes,
DynamoDB RC
Crowdtest
Hugo Barros
Diretor de Projetos
• O Crowdtest é a maior força de trabalho de testes de
software do Brasil, com mais de 4000 testadores
trabalhando 24x7 para encontrar defeitos em sistemas
Web, mobile e desktop.
• O segredo: todos trabalham part-time e só recebem por
produtividade. Por isso, somos 10 vezes mais rápidos e
custamos muito menos para nossos clientes.
• O Crowdtest já atende clientes pequenos e grandes,
como Natura, Buscapé, Locaweb, Sul América, além de
dezenas de startups e pequenas empresas.
• Por que a AWS é um ótimo parceiro para testes e
também para o Crowdtest?
Sem a AWS, nossa startup extremamente escalável
precisaria se transformar em um mini data-center.
“A elasticidade
da AWS é um dos
principais pilares da
escalabilidade no
nosso modelo de
negócio”
- Hugo Barros
Cada vez mais Testes são realizados na nuvem
Cada vez mais empresas usam Testing as a Service
Nossos Desafios
• Desafio 1: hospedar nossa plataforma de gestão de testes baseada em Ruby on
Rails e MySQL.
• Picos de acesso durante execução dos projetos.
• Elevado volume de evidências em vídeo e fotos para registro dos bugs.
• Failover (especialmente durante os projetos)
• Solução: EC2 + RDS + EBS + S3 + CloudWatch
• Desafio 2: durante os testes erros encontrados precisam ser corrigidos e uma
nova versão lançada para aproveitar ao máximo o tempo do testador.
• Solução: integração contínua (builds diários)
• Desafio 3: hospedar os mais diferentes tipos de aplicativos em um ambiente de
homologação
• Solução: EC2
• Desafio 4: testes automáticos disparados a partir de integração contínua em
multi-plataformas
• Durante a integração contínua disparamos testes automáticos paralelos
em multi-plataformas para homologar nossa plataforma de gestão de
testes e de nossos clientes.
• Solução: EC2
Benefícios alcançados com a AWS
• Experimentamosoutras soluções de hospedagem,
aparentementemais baratas, mas nenhuma atendeu a
todas as nossas demandas com a flexibilidade que
precisávamos.
• A rapidez de setup na AWS permite oferecermos
nossas principais vantagens:
• Relatórios de falhas em até 12h
• Testes em regime 24x7
• On-demand
• Múltiplas plataformas
• Orçamentopré-fixado
• Garantia de custos menores
Benefícios alcançados com a AWS
PARAGRAFO RESUMO
CASO _ KEY WORDS
de BENEFICIO,
DESAFIO VENCIDO –
RESUMO DO CASO EM
UM PARAGRAFO
• Implantação simples e rápida, sem entraves. Por exemplo, a
Natura nos contactou às 11h, às 14h tínhamos um piloto e
16h fechamos o contrato.
• Possibilidade de crescer o pool de servidores
automaticamente.
• Scripts permitem retirar a infra do ar e replica-la durante a
janela do projeto que necessita de continuous deployment.
• Redução significativa de despesas antecipadas de capital e
do prazo para setup de servidores em cada projeto de
testes.
Agora, sabemos para onde o código vai,
mas como chegar até lá?
“Deployando” o código
• Como?
– Envio de arquivos:
• Arquivos, texto ou binários
– Pacotes:
• RPMs, Tarballs, etc
– AMI:
• Empacotar em uma AMI
• Quão rápido precisamos fazer deploy?
• Em quantas instâncias?
• Como faremos rollback?
Deploy por envio de arquivos ou pacote
• Mais fácil
• Code Push:
– Origem: Git/SVN/staging
• Rolling restarts para web/app servers
• Utiliza mesmos hosts
• Preocupação com tempo de “refresh”
• Preocupação com possibilidade de rollback
• Preocupação com qual versão está em cada host
Deploy por AMI
Deploy por AMI
AMI
Totalmente
funcional
AMI
Apenas OS
AMI Parcialmente
configurada
Deploy por AMI
AMI
Totalmente
funcional
AMI
Apenas OS
AMI Parcialmente
configurada
Menos flexível
para manter
Deploy por AMI
AMI
Totalmente
funcional
AMI
Apenas OS
AMI Parcialmente
configurada
Menos flexível
para manter
Leva mais tempo
para levantar
Deploy por AMI
AMI
Totalmente
funcional
AMI
Apenas OS
AMI Parcialmente
configurada
Menos flexível
para manter
Leva mais tempo
para levantar
Encontrar um meio
termo ideal aqui
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
Amazon
Route 53
EC2 Instances
ELB
100%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Amazon
Route 53
EC2 Instances
ELB
EC2 Instances
ELB
90% 10%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
Amazon
Route 53
EC2 Instances
ELB
EC2 Instances
ELB
50% 50%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
Amazon
Route 53
EC2 Instances
ELB
EC2 Instances
ELB
0% 100%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
Amazon
Route 53
EC2 Instances
ELB
EC2 Instances
ELB
0% 100%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
Amazon
Route 53
EC2 Instances
ELB
100%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
Amazon
Route 53
EC2 Instances
ELB
100%
DynamoDB MySQL RDS
Instance
ElastiCache
Cache Node
Deploy por AMI – como funciona
Blue/Green Deploys
– Cria infraestrutura duplicada e aos
poucos transfere o tráfego
• Roteamento por DNS
• Facilita o teste de novas features
• Facilita o rollback
– Conforme mais tráfego é transferido,
aumenta/diminui as instâncias por
auto-scaling do novo e antigo
ambientes
• Shut down o antigo ambiente quando
não tem mais tráfego
VTEX
André Uchôa
Diretor de pesquisa e inovação
• A VTEX é líder em tecnologia para e-commerce
e pioneira na comercialização de software
como serviço (SaaS) no Brasil. Suas soluções
atendem lojas virtuais independente do
volume de clientes e do segmento de negócio.
• Mais de 300 lojas de e-commerce, 200
funcionarios, 140 desenvolvedores, 4 países,
mais de 50 agencias parceiras. Os clientes
através do uso da plataforma VTEX
transacionaram R$ 2 bilhões em 2012
“Conseguimos diminuir o atrito na publicação do nosso
software, tornando virtualmente ilimitado o número de
deployments possíveis em um dia”.
“A visão da
infraestrutura como
software fornecida pela
AWS cobriu a lacuna
que havia entre os
times de
desenvolvimento e os
ambientes
operacionais.”
- André Uchôa
• Aproximar os times de desenvolvimento da operação do
sistema
• Garantir um padrão de “Continuous Deployment” que
suportasse diferentes plataformas de desenvolvimento
• Incluir o provisionamento de recursos no processo de
deployment
• Permitir o versionamento das demandas de infraestrutura de
cada um dos hoje 11 sistemas que compõe a suite
• Encontrar uma solução de publicação com “Zero Downtime” e
rollback rápido
O Desafio
• Criação automática de ambientes Beanstalk conforme a necessidade de deployment:
• Uma tag no git = ambientes criados e sistema publicado
• Organizaçãoda infraestrutura orientada pelo versionamentosemântico das aplicações
• Parâmetros de infraestrutura configuradose versionados no git junto com o código da aplicação
• “Convention over Configuration”: hardware agora também é software
• Descentralização da publicação do software: cada time é capaz de cuidar da publicação do seu
módulo
• Rollback de versão fácil em caso de falha de nova versão em produção
Sobre o Papel da AWS e Benefícios
alcançados
Nosso código chegou à produção!
Mas e agora?
Infraestrutura de Monitoramento & Log
• Precisa saber o que está acontecendo
• Gaste o tempo necessário para fazer isso bem
• Compartilhe acesso a essas ferramentas com o time inteiro
• Monitore cada instância
• Configure alerta nos serviços, disponibilidade delas e tempo de resposta
• Utilize as diferentes opções de modelos de custo
• Tente manter os logs e dados de monitoramento pelo maior tempo possível
– 6 meses? 1 ano? Vários anos?
Infraestrutura de Monitoramento & Log
Ferramentas:
• Logging
– Logstash
• Check out Kibana!
– Graylog2
– Syslog-ng/rsyslog/syslog
• Metrics
– CloudWatch
– Ganglia
– Graphite
• Monitoring
– Nagios
– Munin
– Sensu
METRICAS
DO S.O.
MÉTRICAS
AGREGADAS
ANÁLISE DAS
MÉTRICAS
MÉTRICAS
DE BUILD
AWS Marketplace
AWS Online Software Store
• Customer can find, research, buy software
• Simple pricing, aligns with EC2 usage model
• Launch in minutes
• Marketplace billing integrated into your AWS
account
• 600+ products across 23 categories
Learn more at: http://aws.amazon.com/marketplace
Developer Tool Categories Include
• Bug Tracking
• Monitoring
• Source Control
• Testing
Continuous Integration & Deployment & DevOps na AWS
• Trate Infraestrutura como código (programável)
• Automatize teste / deploy do início ao fim
• Ambientes Dev/QA/Prod os mais parecidos possíveis
• Utilize diferente modelos de custo quando necessário
• Simplifique e aumente a frequência e velocidade do processo de
deploy
• Utilize serviços da AWS para controlar fluxo
• Monitore e observe tudo (instância, apliçação, logs)
Obrigado!
ehorai@amazon.com
aws.amazon.com/cloudformation
aws.amazon.com/opsworks
aws.amazon.com/elasticbeanstalk

More Related Content

What's hot

Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemAmazon Web Services LATAM
 
O que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasO que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasAmazon Web Services LATAM
 
Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Amazon Web Services LATAM
 
Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...
Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...
Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...Amazon Web Services LATAM
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorAmazon Web Services LATAM
 
Amazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenhoAmazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenhoAmazon Web Services LATAM
 
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Amazon Web Services LATAM
 
Blue Green Deployments com Elastic Beanstalk - Demo Session
Blue Green Deployments com Elastic Beanstalk - Demo SessionBlue Green Deployments com Elastic Beanstalk - Demo Session
Blue Green Deployments com Elastic Beanstalk - Demo SessionAmazon Web Services LATAM
 
Building blocks #5 - Recuperação de desastres de maneira prática na AWS
Building blocks #5 - Recuperação de desastres de maneira prática na AWSBuilding blocks #5 - Recuperação de desastres de maneira prática na AWS
Building blocks #5 - Recuperação de desastres de maneira prática na AWSAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Explorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraExplorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraAmazon Web Services LATAM
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceAmazon Web Services LATAM
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataAmazon Web Services LATAM
 

What's hot (20)

Abaas - Advanced Beer-as-a-Service
Abaas - Advanced Beer-as-a-ServiceAbaas - Advanced Beer-as-a-Service
Abaas - Advanced Beer-as-a-Service
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvem
 
O que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasO que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 dias
 
Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS
 
Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...
Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...
Usando Amazon CloudFront para aumentar performance, disponibilidade e cache n...
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
 
Backup e Disaster Recovery na Nuvem
Backup e Disaster Recovery na NuvemBackup e Disaster Recovery na Nuvem
Backup e Disaster Recovery na Nuvem
 
Rodando SAP na AWS
Rodando SAP na AWSRodando SAP na AWS
Rodando SAP na AWS
 
Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm
 
Amazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenhoAmazon EC2 boas praticas e otimizações de desempenho
Amazon EC2 boas praticas e otimizações de desempenho
 
Fazendo seu DR na AWS
Fazendo seu DR na AWSFazendo seu DR na AWS
Fazendo seu DR na AWS
 
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
 
Blue Green Deployments com Elastic Beanstalk - Demo Session
Blue Green Deployments com Elastic Beanstalk - Demo SessionBlue Green Deployments com Elastic Beanstalk - Demo Session
Blue Green Deployments com Elastic Beanstalk - Demo Session
 
Building blocks #5 - Recuperação de desastres de maneira prática na AWS
Building blocks #5 - Recuperação de desastres de maneira prática na AWSBuilding blocks #5 - Recuperação de desastres de maneira prática na AWS
Building blocks #5 - Recuperação de desastres de maneira prática na AWS
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Explorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraExplorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon Aurora
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration Service
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
JavaEE
JavaEEJavaEE
JavaEE
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big Data
 

Viewers also liked

Construindo Aplicacoes Web e Mobile Escalaveis na AWS
Construindo Aplicacoes Web e Mobile Escalaveis na AWSConstruindo Aplicacoes Web e Mobile Escalaveis na AWS
Construindo Aplicacoes Web e Mobile Escalaveis na AWSAmazon Web Services LATAM
 
Otimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSOtimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSAmazon Web Services LATAM
 
Como criar sua startup gratuitamente na Nuvem da AWS
Como criar sua startup gratuitamente na Nuvem da AWSComo criar sua startup gratuitamente na Nuvem da AWS
Como criar sua startup gratuitamente na Nuvem da AWSAmazon Web Services LATAM
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço DireitoAlexandre Gaigalas
 
Arquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoArquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoJose Papo, MSc
 
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWSArquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWSAmazon Web Services LATAM
 

Viewers also liked (16)

Construindo Aplicacoes Web e Mobile Escalaveis na AWS
Construindo Aplicacoes Web e Mobile Escalaveis na AWSConstruindo Aplicacoes Web e Mobile Escalaveis na AWS
Construindo Aplicacoes Web e Mobile Escalaveis na AWS
 
Keynote AWS Summit 2013 Sao Paulo
Keynote AWS Summit 2013 Sao PauloKeynote AWS Summit 2013 Sao Paulo
Keynote AWS Summit 2013 Sao Paulo
 
Otimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSOtimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWS
 
Como criar sua startup gratuitamente na Nuvem da AWS
Como criar sua startup gratuitamente na Nuvem da AWSComo criar sua startup gratuitamente na Nuvem da AWS
Como criar sua startup gratuitamente na Nuvem da AWS
 
Arquiteturas de Software para o Século XXI
Arquiteturas de Software para o Século XXIArquiteturas de Software para o Século XXI
Arquiteturas de Software para o Século XXI
 
Introducing Elastic MapReduce
Introducing Elastic MapReduceIntroducing Elastic MapReduce
Introducing Elastic MapReduce
 
Conhecendo o DynamoDB
Conhecendo o DynamoDBConhecendo o DynamoDB
Conhecendo o DynamoDB
 
Arquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud na AWS: Uma IntroducaoArquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud na AWS: Uma Introducao
 
AWS Cloud Security
AWS Cloud SecurityAWS Cloud Security
AWS Cloud Security
 
Introducing AWS OpsWorks
Introducing AWS OpsWorksIntroducing AWS OpsWorks
Introducing AWS OpsWorks
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud Computing
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço Direito
 
Arquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoArquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma Introdução
 
Big Data na Nuvem
Big Data na NuvemBig Data na Nuvem
Big Data na Nuvem
 
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWSArquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
Arquitetura Hibrida - Integrando seu Data Center com a Nuvem da AWS
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 

Similar to Continuous Deployment e DevOps na Nuvem

Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...Amazon Web Services
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasAmazon Web Services LATAM
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSAmazon Web Services LATAM
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaAmazon Web Services LATAM
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppMarcela Godoy Cruz
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsCamila Carrera
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 

Similar to Continuous Deployment e DevOps na Nuvem (20)

Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernas
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
DevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínuaDevOps - melhores práticas e integração contínua
DevOps - melhores práticas e integração contínua
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor App
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
What's New On Azure IaaS
What's New On Azure IaaSWhat's New On Azure IaaS
What's New On Azure IaaS
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 

More from Amazon Web Services LATAM

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.Amazon Web Services LATAM
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.Amazon Web Services LATAM
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAmazon Web Services LATAM
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSAmazon Web Services LATAM
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSAmazon Web Services LATAM
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAmazon Web Services LATAM
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAmazon Web Services LATAM
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosAmazon Web Services LATAM
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSAmazon Web Services LATAM
 
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSLos beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSAmazon Web Services LATAM
 

More from Amazon Web Services LATAM (20)

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
 
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSLos beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWS
 

Continuous Deployment e DevOps na Nuvem

  • 1. Eduardo Horai AWS Solutions Architect Continuous Deployment e DevOps na Nuvem
  • 2. Vários Tutoriais , treinamentos e mentoria em português Inscreva-se agora !! http://awshub.com.br
  • 3. Foco de hoje: Sem discussões filosóficas sobre Continuous Integration (CI), Continuous Deployment (CD) ou DevOps Como AWS pode te ajudar em CI / CD / DevOps Exemplos de boas práticas (porém não verdades absolutas) AWS + Soluções Open Source
  • 4. • Continuous Integration • Continuous Deployment • DevOps
  • 5. • Continuous Integration • Continuous Deployment • DevOps Técnicas e ferramentas para implementar processos contínuos de verificação de qualidade, aplicados frequentemente, para melhorar a qualidade do software e reduzir o tempo de entrega.
  • 6. • Continuous Integration • Continuous Deployment • DevOps Técnicas e ferramentas para melhorar o processo de entrega de software, resultando em deployments rápidos, confiáveis e repetíveis de melhorias ou correção de bugs com baixo risco e mínimo de intervenção manual.
  • 7. • Continuous Integration • Continuous Deployment • DevOps Entregando o código feito pelas mãos dos desenvolvedores ao ambiente de produção de maneira rápida e eficiente, com resultados positivo
  • 8. • Continuous Integration • Continuous Deployment • DevOps Relação direta entre desenvolvedores e operadores de infra, para diminuir riscos e unir duas áreas essenciais do ciclo de vida de um software.
  • 9.
  • 10. Continuous Integration & Deployment na AWS • Infraestrutura também é código (programável) • Automação de teste e deploy do início ao fim • Ambientes Dev/QA/Prod são os mais parecidos possíveis • Utilizar diferente modelos de custo quando necessário • Simplificar e aumentar a frequência e velocidade do processo de deploy • Utilizar serviços da AWS para controlar fluxo • Monitorar e observar tudo (instância, apliçação, logs)
  • 12.
  • 14.
  • 15. Na infraestrutura atual, tudo é código. Desde o desenvolvimento de aplicações, até os arquivos de configurações de ferramentas de automação, incluindo também templates do CloudFormation ou scripts para chamar as APIs da AWS.
  • 16. Infraestrutura é código, por isso… • Controle de versionamento (bom início, mas não é tudo)! • Utilizar sistemas de bug tracking / ticketing • Revisões de código antes de ir pra produção! • Criar “design patterns” para infraestrutura • Testar as mudanças no código da infraestrutura
  • 17. A jornada do seu código até a produção…
  • 18. 1. Código é escrito Alguém escreve o código, faz commit no Svn/Git/etc Controlador de versão ativa o trabalho do CI
  • 19. 2. Código é testado Testes unitários, testes de integração, testes de db, smoke testes, UI testes, … Luz verde indica OK ou volta para etapa 1.
  • 20. 3. Código é “deployado” Código é entregue! Pronto para ser utilizado em produção!
  • 21. 3. Código é consumido Clientes utilizam o código (aplicação), adoram, vitória, fim de uma jornada longa, férias na praia.
  • 22. Código, código, código, … 1.Software ( tools, services, scripts ) 2.Ambientes de infraestrutura( dev, test, prod ) 3.Processos ( deploy, monitor, alert, track )
  • 23. Precisamos de ferramentas para trabalhar com os códigos acima de maneira rápida e mais eficiente. Código, código, código, … 1.Software ( tools, services, scripts ) 2.Ambientes de infraestrutura( dev, test, prod ) 3.Processos ( deploy, monitor, alert, track )
  • 24. Opções de Continuous Integration • Suporte para verificação de QA e testes repetidos com resultados pré definidos • Opções: hospedado, open source, proprietário, SaaS…
  • 25. Continuous Integration - Jenkins “An extendable open source continuous integration server” • Open Source • Well established and used by many • Has plugins for EC2/SQS/SNS/CloudFormation! • Supports spot pricing! • Supports the ability to put workers into a “standby” mode by stopping instead of terminating • Scales well • Easily add more EC2 instances as workers • Flexible • Easy to get started Internal GitCI Server Pre-commit Hook Testing Environment Subnet CI Workers
  • 26. Teste de receitas Chef com FoodCritic depois de cada commit no GIT.
  • 27. …e agora, para onde o código vai?
  • 28. Ambientes de infraestrutura Ruim, muito ruim: “Desenvolvedores desenvolvem localmente nos seus laptops, utilizando MacOS ou Ubuntu, e depois o deploy na produção é em RedHat. Cada laptop tem uma configuração um pouco diferente com versões de software diferentes.” – Dev e prod não estão em sincronia – Dev não está em sincronia com outros devs – Sem ambiente de teste entre dev e prod
  • 29. “… na minha máquina funcionou…” (todo) desenvolvedor
  • 30. Region Amazon Route 53 Amazon CloudFront Customer Traffic Amazon S3 Availability Zone Availability Zone Availability Zone Internet Gateway VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet Instance Instance Instance NAT Bastion/ Chef ELBELB RDS DB Instance RDS DB Instance Standby (Multi-AZ) Instance AWS CloudFormation Amazon CloudWatch Amazon SNS Potential RDS DB Instance Read Replica Instance Instance
  • 31. Region Amazon Route 53 Amazon CloudFront Customer Traffic Amazon S3 Availability Zone Availability Zone Availability Zone Internet Gateway VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet Instance Instance Instance NAT Bastion/ Chef ELBELB RDS DB Instance RDS DB Instance Standby (Multi-AZ) Instance AWS CloudFormation Amazon CloudWatch Amazon SNS Potential RDS DB Instance Read Replica Instance Instance
  • 32. Dev Environment VPC Subnet DEV WEB ELB Dev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB Ambiente de desenvolvimento
  • 33. Dev Environment VPC Subnet DEV WEB ELB Dev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB Ambiente de desenvolvimento
  • 34. Region Amazon Route 53 Amazon CloudFront Customer Traffic Amazon S3 Availability Zone Availability Zone Availability Zone Internet Gateway VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet Instance Instance Instance NAT Bastio n/Chef ELBELB RDS DB Instance RDS DB Instance Standby (Multi-AZ) Instance AWS CloudFormation Amazon CloudWatch Amazon SNS Potential RDS DB Instance Read Replica Instance Instance
  • 35. Dev Environment VPC Subnet DEV WEB ELB Dev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB Ambiente de desenvolvimento
  • 36. Region Amazon Route 53 Amazon CloudFront Customer Traffic Amazon S3 Availability Zone Availability Zone Availability Zone Internet Gateway VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet Instance Instance Instance NAT Bastion/ Chef ELBELB RDS DB Instance RDS DB Instance Standby (Multi-AZ) Instance AWS CloudFormation Amazon CloudWatch Amazon SNS Potential RDS DB Instance Read Replica Instance Instance
  • 37. Region Amazon Route 53 Amazon CloudFront Customer Traffic Amazon S3 Availability Zone Availability Zone Availability Zone Internet Gateway VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet Instance Instance Instance NAT Bastion/ Chef ELBELB RDS DB Instance RDS DB Instance Standby (Multi-AZ) Instance AWS CloudFormation Amazon CloudWatch Amazon SNS Potential RDS DB Instance Read Replica Instance Instance
  • 38. Dev Environment VPC Subnet DEV WEB ELB Dev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB Ambiente de desenvolvimento
  • 39. Ambiente de desenvolvimento Developers & Operations Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53
  • 40. Ambiente de desenvolvimento Developers & Operations Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53
  • 41. Ambientes de desenvolvimento & teste Developers & Operations Internal GitCI Server Pre-commit Hook Testing Environment Subnet CI Workers Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53
  • 42. Ambientes de infraestrutura • Estar preparado para rodar diversos ambientes – Development – Testing/QA – Staging/Pre-prod – Production • Eles devem ser o mais semelhante possível (mesmo stack) • Utilizar ferramentas de gerenciamento de configuração e orquestração de infraestrutura • Toda instância deve ser recriável • Objetivo: criar do zero, todas instâncias rodando sem intervenção humana
  • 43. Mas isso parece que dá muito trabalho e talvez custoso. (pra não dizer impossível)
  • 44. NÃO PRECISA SER! (e sim, é possível)
  • 45. Automação de infraestrutura Queremos ser capazes de rapidamente criar novos ambiente conforme necessitamos. Hmmm… parece que precisamos de automatização! – AWS CloudFormation – AWS Elastic Beanstalk – AWS OpsWorks – Chef – Puppet
  • 46. AWS CloudFormation "WebServer" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, "64" ]}, "SpotPrice" : { "Ref" : "SpotPrice" }, "InstanceType" : m1.large", "SecurityGroups" : [{ "Ref" : "InstanceSecurityGroup" }], "KeyName" : { "Ref" : "KeyName" }, "UserData": { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -vn", "yum update -y aws-cfn-bootstrapn”, "curl -L http://www.opscode.com/chef/install.sh | bashn", "cd /etc/chefn", "/usr/bin/wget http://",{ "Ref" : "ChefServerIP" },"/chef/validation.pemn", "/usr/bin/wget http://",{ "Ref" : "ChefServerIP" },"/chef/client.rbn", "/bin/chown -R chef:chef /etc/chefn",
  • 47. Ambientes de desenvolvimento & teste Developers & Operations Internal GitCI Server Pre-commit Hook Testing Environment Subnet CI Workers Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53
  • 48. Ambientes de desenvolvimento & teste Developers & Operations Internal GitCI Server Pre-commit Hook Testing Environment Subnet CI Workers Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53
  • 49. AWS Elastic Beanstalk & OpsWorks Elastic Beanstalk: • Application container framework similar to a PaaS • Deploy your application into Elastic Beanstalk and it takes care of building a self healing, auto-scaling, multi-AZ infrastructure • Allows you to turn some of the knobs under the hood to tweak • Considered one of the easiest places to start with hosting an application on AWS OpsWorks: • Build multi-layer application stacks • Ties in with Chef for a large degree of flexibility and customization • Makes deploying applications easier • More flexible than Elastic Beanstalk, but requires a bit more knowledge
  • 50. AWS Application Management Services Elastic Beanstalk OpsWorks CloudFormation EC2 Convenience Control Higher-level Services Do it yourself
  • 51. Ambientes de desenvolvimento & teste Developers & Operations Internal GitCI Server Pre-commit Hook Testing Environment Subnet CI Workers Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53 Elastic Beanstalk ou OpsWorks
  • 52. Region Amazon Route 53 Amazon CloudFront Customer Traffic Amazon S3 Availability Zone Availability Zone Availability Zone Internet Gateway VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet VPC Subnet Instance Instance Instance NAT Bastion/ Chef ELBELB RDS DB Instance RDS DB Instance Standby (Multi-AZ) Instance AWS CloudFormation Amazon CloudWatch Amazon SNS Potential RDS DB Instance Read Replica Instance Instance Elastic Beanstalk or OpsWorks
  • 53. Imagine que você tem uma infraestrutura e você poderia ligar e desligar por demanda, aproveitar a capacidade não utilizada por um preço menor ou ainda reservar capacidade baseado no seu uso e assim economizar!
  • 55. Utilizando o modelo de custo correto – EC2 • On Demand • Reserved Instance ( RI ) – 40%+ economia • Spot – 80%+ economia Cada um tem seu lugar. Para ambiente de desenvolvimento, por exemplo: • On Demand – Dev instances start/stop todo dia • Reserved Instances – Repositório código, CI master, DBs • Spot – CI workers, camadas de desenvolvimento que podem ser desligados eventualmente
  • 56. Ambientes de desenvolvimento & teste Developers & Operations Internal GitCI Server Pre-commit Hook Testing Environment Subnet CI Workers Dev Environment VPC Subnet DEV WEB ELBDev Stack Tier 1 Dev Stack Tier 2 Dev MySQL DB Instance DEV APP ELB VPN TUNNEL VPN facing VPC Subnet Internet Gateway VPN Endpoint Dev Admin Instance NAT Instance Amazon S3 Amazon DynamoDB Amazon SQS Amazon CloudFront Amazon Route 53 RESERVED INSTANCES SPOT/ON-DEMAND RRS S3, CloudFront Price Classes, DynamoDB RC
  • 57.
  • 59. • O Crowdtest é a maior força de trabalho de testes de software do Brasil, com mais de 4000 testadores trabalhando 24x7 para encontrar defeitos em sistemas Web, mobile e desktop. • O segredo: todos trabalham part-time e só recebem por produtividade. Por isso, somos 10 vezes mais rápidos e custamos muito menos para nossos clientes. • O Crowdtest já atende clientes pequenos e grandes, como Natura, Buscapé, Locaweb, Sul América, além de dezenas de startups e pequenas empresas. • Por que a AWS é um ótimo parceiro para testes e também para o Crowdtest? Sem a AWS, nossa startup extremamente escalável precisaria se transformar em um mini data-center. “A elasticidade da AWS é um dos principais pilares da escalabilidade no nosso modelo de negócio” - Hugo Barros
  • 60. Cada vez mais Testes são realizados na nuvem
  • 61. Cada vez mais empresas usam Testing as a Service
  • 62. Nossos Desafios • Desafio 1: hospedar nossa plataforma de gestão de testes baseada em Ruby on Rails e MySQL. • Picos de acesso durante execução dos projetos. • Elevado volume de evidências em vídeo e fotos para registro dos bugs. • Failover (especialmente durante os projetos) • Solução: EC2 + RDS + EBS + S3 + CloudWatch • Desafio 2: durante os testes erros encontrados precisam ser corrigidos e uma nova versão lançada para aproveitar ao máximo o tempo do testador. • Solução: integração contínua (builds diários) • Desafio 3: hospedar os mais diferentes tipos de aplicativos em um ambiente de homologação • Solução: EC2 • Desafio 4: testes automáticos disparados a partir de integração contínua em multi-plataformas • Durante a integração contínua disparamos testes automáticos paralelos em multi-plataformas para homologar nossa plataforma de gestão de testes e de nossos clientes. • Solução: EC2
  • 63. Benefícios alcançados com a AWS • Experimentamosoutras soluções de hospedagem, aparentementemais baratas, mas nenhuma atendeu a todas as nossas demandas com a flexibilidade que precisávamos. • A rapidez de setup na AWS permite oferecermos nossas principais vantagens: • Relatórios de falhas em até 12h • Testes em regime 24x7 • On-demand • Múltiplas plataformas • Orçamentopré-fixado • Garantia de custos menores
  • 64. Benefícios alcançados com a AWS PARAGRAFO RESUMO CASO _ KEY WORDS de BENEFICIO, DESAFIO VENCIDO – RESUMO DO CASO EM UM PARAGRAFO • Implantação simples e rápida, sem entraves. Por exemplo, a Natura nos contactou às 11h, às 14h tínhamos um piloto e 16h fechamos o contrato. • Possibilidade de crescer o pool de servidores automaticamente. • Scripts permitem retirar a infra do ar e replica-la durante a janela do projeto que necessita de continuous deployment. • Redução significativa de despesas antecipadas de capital e do prazo para setup de servidores em cada projeto de testes.
  • 65.
  • 66. Agora, sabemos para onde o código vai, mas como chegar até lá?
  • 67. “Deployando” o código • Como? – Envio de arquivos: • Arquivos, texto ou binários – Pacotes: • RPMs, Tarballs, etc – AMI: • Empacotar em uma AMI • Quão rápido precisamos fazer deploy? • Em quantas instâncias? • Como faremos rollback?
  • 68. Deploy por envio de arquivos ou pacote • Mais fácil • Code Push: – Origem: Git/SVN/staging • Rolling restarts para web/app servers • Utiliza mesmos hosts • Preocupação com tempo de “refresh” • Preocupação com possibilidade de rollback • Preocupação com qual versão está em cada host
  • 70. Deploy por AMI AMI Totalmente funcional AMI Apenas OS AMI Parcialmente configurada
  • 71. Deploy por AMI AMI Totalmente funcional AMI Apenas OS AMI Parcialmente configurada Menos flexível para manter
  • 72. Deploy por AMI AMI Totalmente funcional AMI Apenas OS AMI Parcialmente configurada Menos flexível para manter Leva mais tempo para levantar
  • 73. Deploy por AMI AMI Totalmente funcional AMI Apenas OS AMI Parcialmente configurada Menos flexível para manter Leva mais tempo para levantar Encontrar um meio termo ideal aqui
  • 74. Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego Amazon Route 53 EC2 Instances ELB 100% DynamoDB MySQL RDS Instance ElastiCache Cache Node
  • 75. Amazon Route 53 EC2 Instances ELB EC2 Instances ELB 90% 10% DynamoDB MySQL RDS Instance ElastiCache Cache Node Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego
  • 76. Amazon Route 53 EC2 Instances ELB EC2 Instances ELB 50% 50% DynamoDB MySQL RDS Instance ElastiCache Cache Node Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego
  • 77. Amazon Route 53 EC2 Instances ELB EC2 Instances ELB 0% 100% DynamoDB MySQL RDS Instance ElastiCache Cache Node Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego
  • 78. Amazon Route 53 EC2 Instances ELB EC2 Instances ELB 0% 100% DynamoDB MySQL RDS Instance ElastiCache Cache Node Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego
  • 79. Amazon Route 53 EC2 Instances ELB 100% DynamoDB MySQL RDS Instance ElastiCache Cache Node Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego
  • 80. Amazon Route 53 EC2 Instances ELB 100% DynamoDB MySQL RDS Instance ElastiCache Cache Node Deploy por AMI – como funciona Blue/Green Deploys – Cria infraestrutura duplicada e aos poucos transfere o tráfego • Roteamento por DNS • Facilita o teste de novas features • Facilita o rollback – Conforme mais tráfego é transferido, aumenta/diminui as instâncias por auto-scaling do novo e antigo ambientes • Shut down o antigo ambiente quando não tem mais tráfego
  • 81.
  • 82. VTEX André Uchôa Diretor de pesquisa e inovação
  • 83. • A VTEX é líder em tecnologia para e-commerce e pioneira na comercialização de software como serviço (SaaS) no Brasil. Suas soluções atendem lojas virtuais independente do volume de clientes e do segmento de negócio. • Mais de 300 lojas de e-commerce, 200 funcionarios, 140 desenvolvedores, 4 países, mais de 50 agencias parceiras. Os clientes através do uso da plataforma VTEX transacionaram R$ 2 bilhões em 2012 “Conseguimos diminuir o atrito na publicação do nosso software, tornando virtualmente ilimitado o número de deployments possíveis em um dia”. “A visão da infraestrutura como software fornecida pela AWS cobriu a lacuna que havia entre os times de desenvolvimento e os ambientes operacionais.” - André Uchôa
  • 84. • Aproximar os times de desenvolvimento da operação do sistema • Garantir um padrão de “Continuous Deployment” que suportasse diferentes plataformas de desenvolvimento • Incluir o provisionamento de recursos no processo de deployment • Permitir o versionamento das demandas de infraestrutura de cada um dos hoje 11 sistemas que compõe a suite • Encontrar uma solução de publicação com “Zero Downtime” e rollback rápido O Desafio
  • 85. • Criação automática de ambientes Beanstalk conforme a necessidade de deployment: • Uma tag no git = ambientes criados e sistema publicado • Organizaçãoda infraestrutura orientada pelo versionamentosemântico das aplicações • Parâmetros de infraestrutura configuradose versionados no git junto com o código da aplicação • “Convention over Configuration”: hardware agora também é software • Descentralização da publicação do software: cada time é capaz de cuidar da publicação do seu módulo • Rollback de versão fácil em caso de falha de nova versão em produção Sobre o Papel da AWS e Benefícios alcançados
  • 86.
  • 87. Nosso código chegou à produção! Mas e agora?
  • 88. Infraestrutura de Monitoramento & Log • Precisa saber o que está acontecendo • Gaste o tempo necessário para fazer isso bem • Compartilhe acesso a essas ferramentas com o time inteiro • Monitore cada instância • Configure alerta nos serviços, disponibilidade delas e tempo de resposta • Utilize as diferentes opções de modelos de custo • Tente manter os logs e dados de monitoramento pelo maior tempo possível – 6 meses? 1 ano? Vários anos?
  • 89. Infraestrutura de Monitoramento & Log Ferramentas: • Logging – Logstash • Check out Kibana! – Graylog2 – Syslog-ng/rsyslog/syslog • Metrics – CloudWatch – Ganglia – Graphite • Monitoring – Nagios – Munin – Sensu
  • 90.
  • 92. AWS Marketplace AWS Online Software Store • Customer can find, research, buy software • Simple pricing, aligns with EC2 usage model • Launch in minutes • Marketplace billing integrated into your AWS account • 600+ products across 23 categories Learn more at: http://aws.amazon.com/marketplace Developer Tool Categories Include • Bug Tracking • Monitoring • Source Control • Testing
  • 93. Continuous Integration & Deployment & DevOps na AWS • Trate Infraestrutura como código (programável) • Automatize teste / deploy do início ao fim • Ambientes Dev/QA/Prod os mais parecidos possíveis • Utilize diferente modelos de custo quando necessário • Simplifique e aumente a frequência e velocidade do processo de deploy • Utilize serviços da AWS para controlar fluxo • Monitore e observe tudo (instância, apliçação, logs)
  • 94.