3. Software hoje em dia exige uma
iteração muito mais rápida
•Criação e distribuição de software
nunca foi tão fácil:
• Startups agora podem derrubar gigantes com pouco ou
nenhum financiamento antecipado
• O quão ágil você é, irá determinar sua habilidade de
enfrentar tecnologias disruptivas
5. Quais ferramentas você precisa para ser
mais ágil?
• Lançar software nesse novo mundo software-driven requer certas
ferramentas:
• Ferramentas para gerenciar o fluxo do processo de um novo deploy
• Ferramentas que testam seu código
• Ferramentas que fazem o deploy da sua aplicação
• De maneira automática
6. Reality check
• Deploy manual
• FTP
• Rsync
• Janela de manutenção
• Algum controle de
versionamento (SVN)
7. Source Build Test Production
Continuous integration
Continuous delivery
Continuous deployment
As 4 fases do processo de deploy
8. • CodeBuild
• RunScope
• Blazemeter
As 4 fases do processo de deploy
Source Build Test Production
• S3
• CodeCommit
• GitHub
• CodeBuild
• Jenkins
• Solano
• TeamCity
• Elastic Beanstalk
• CodeDeploy
• CloudFormation
• OpsWorks
10. Elastic Beanstalk
A maneira mais fácil de ter sua aplicação
web rodando na nuvem de maneira
escalável
• Simplesmente faça um upload da sua
aplicação (ZIP ou WAR)
• Deploy direto do Visual Studio ou
Eclipse
• O EB irá criar os recursos
necessários e fará o deploy
• Gratuito. Pague somente pelos
recursos que o EB provisionar
• Versionamento e rollback
• Foco em conveniência
Diversas opções de deploy
• Blue/Green
• All at once
• Rolling
• Rolling with additional batch
• Immutable
26. Elastic Beanstalk
Enforça melhor prática: não logue
nas instâncias
• Personalização através do
deploy
• No diretório root do seu
pacote, crie um diretório
.ebextensions
• Dentro do diretório crie
arquivos .config no formato
YAML
• ~/workspace/my-app/
|-- .ebextensions
| |--environmentvariables.config
| `-- healthcheckurl.config
|-- .elasticbeanstalk
| `-- config.yml
|-- index.php
`-- styles.css
28. EB + Git
1. Pelo Console, crie seu
primeiro ambiente de EB
2. Baixe e instale o Git
3. Baixe e instale o EB CLI 3.0
git init
git checkout nomedabranch
eb use nomedoenv
git add .
eb deploy
29. EB + CodeCommit
1. Baixe e instale o Git
2. Baixe e instale o EB CLI 3.0
3. Pelo Console, crie seu
repositório no CodeCommit
git init
git add .
git commit –m ”EBApp”
eb init
y
1
eb create myapp
eb use nomedoenv –-source branch
eb deploy
30. CodeDeploy
Faça deploy em qualquer instância
EC2 ou on-premises
• Evita downtime
• Rollback automático em caso
de falha
• Qualquer linguagem ou SO
• Integra com CodeCommit,
GitHub e S3
• Foco em controle
Duas opções de deploy
• In-place deployment
• Blue/green deployment
35. v2 v2 v2 v2 v2 v2
Um por vez
Medate
Tudo de uma vez
v2 v2 v2 v1 v1 v1
v2 v1 v1 v1 v1 v1
Agent Agent
Dev Deployment group
ou
Prod Deployment group
Agent
AgentAgent
Agent Agent
Agent
Velocidade e grupo do deploy
36. V1V1 V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2 V2V2 V2 V2 V2 V2
Rolling deployments – sucesso
Instâncias de Produção
ELB
37. V1V1 V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2 V2V2
Rolling deployments
Production Fleet
ELB
Falha no Deploy
40. Confgure o Rollback
• CodeDeploy: configure no deployment group
2 of 5 – Manage deployment health
41. Vamos automatizar o processo
Source Stage/Homo/Dev Aprovação Prod
• S3
• CodeCommit
• GitHub
• Manual…
por
enquanto
AWS CodePipeline
• Elastic Beanstalk
• CodeDeploy
• CloudFormation
• OpsWorks
• Elastic Beanstalk
• CodeDeploy
• CloudFormation
• OpsWorks
42. AWS CodePipeline
Serviço de CI e CD da AWS. Orquestra e
automatiza de ponta a ponta o seu deploy
• Source: GitHub, S3 e
CodeCommit
• Deployment: Elastic
Beanstalk, CodeDeploy e
CloudFormation
Ações
• Source
• Build
• Test
• Deploy
• Approval
• Invoke
45. Build do seu código
• Refere-se a linguagens que requerem compilação de
binários:
• .NET languages: C#, F#, VB.net, etc.
• Java e JVM languages: Java, Scala, JRuby
• Go
• iOS languages: Swift, Objective-C
• Também pode ser o processo de criação de imagens de
containers Docker como ”build” da imagem
EC2
46. AWS CodeBuild
Compila seu código, faz testes unitários
e gera artefatos prontos para o deploy
• Totalmente gerenciado
• CB cria uma imagem ou usa um
Docker seu
• Use comandos de build ou crie
um buildspec.yml
• Variáveis de ambiente
• 3 a 15Gb RAM
• 2 a 8 vCPUs
Diversas opções de runtime
• Base
• Android
• Java
• Python
• Ruby
• Golang
• Node.js
49. Dicas finais
• Objetivo: Faça seu pipeline ser seguro e confiável…
1. Identifique problemas em produção rapidamente
• Teste Continuo em Produção
2. Faça deploys seguros
• Gerencie o deployment health
• Segmentar produção é uma boa opção
3. Decida automaticamente quando lançar novas mudanças
50. Dicas finais
4. CI/CD é obrigatório!
• Commits frequentes
• Build para cada commit
5. Tudo que é código (aplicação, infra, documentação) vai para um
repositório
• Se não está em um repositório, não vai para prod!
6. Auto-rollback é o mecanismo mais rápido de recuperação
• Espere o rollback para depois começar o debug com logs/gráficos