SlideShare ist ein Scribd-Unternehmen logo
1 von 51
De 0 a DevOps
Rodando e Escalando sua Aplicação Web de Maneira
Automatizada
https://secure.flickr.com/photos/mgifford/4525333972
Por que nós
estamos aqui
hoje?
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
Modelo antigo
O modelo de entrega de software mudou
drasticamente
Modelo novo
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
Reality check
• Deploy manual
• FTP
• Rsync
• Janela de manutenção
• Algum controle de
versionamento (SVN)
Source Build Test Production
Continuous integration
Continuous delivery
Continuous deployment
As 4 fases do processo de deploy
• 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
Algo mais simples
Source Production
• S3
• CodeCommit
• GitHub
• Elastic Beanstalk
• CodeDeploy
• CloudFormation
• OpsWorks
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
Elastic Beanstalk
Suporte a diversos ambientes
• .NET (Windows/IIS)
• Java
• Node.js
• PHP
• Python
• Ruby
• Tomcat
• Go
• Packer
• Glassfish
• Docker
• Multi-container Docker
User Application
Application Service
HTTP Service
Language Interpreter
Operating System
Host
Elastic Beanstalk: 0 Downtime
Elastic Beanstalk: 0 Downtime
Elastic Beanstalk: 0 Downtime
Elastic Beanstalk: 0 Downtime
Elastic Beanstalk: 0 Downtime
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
Exemplos arquivos no .ebextensions
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
"/home/ec2-user/myfile2" :
mode: "000755"
owner: root group:
root content: |
#arquivos
#conteúdos
commands:
python_install :
command: script1.py
cwd: /home/ec2-user
env:
varname: varname
test: ”[ ! -x /usr/bin/python ]”
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
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
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
CodeDeploy: Instalar o agent
#!/bin/bash
yum -y update
yum install -y ruby
cd /home/ec2-user
curl -O https://bucket-name.s3.amazonaws.com/latest/install
chmod +x ./install ./install auto
<powershell>
New-Item -Path c:temp -ItemType "directory" -Force
powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key
codedeploy-agent.msi -File c:tempcodedeploy-agent.msi
Start-Process -Wait -FilePath c:tempcodedeploy-agent.msi -WindowStyle Hidden
</powershell>
Exemplo de appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- location: scripts/test_site.sh
- location: scripts/register_with_elb.sh
• Remove e adiciona instâncias do ELB
• Instala dependecências
• Inicializa o Apache
• Confirma o deploy
• E muito mais!
• Envia os arquivos da aplicação
oara um diretório e carquivos de
configuração para outro
• Configura permissões
específicas em diretórios e
arquivos específicos
CodeDeploy + GitHub
1. https://www.youtube.com/watch?time_contin
ue=20&v=N3saR9D7hq8
2. https://aws.amazon.com/blogs/devops/auto
matically-deploy-from-github-using-aws-
codedeploy/
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
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
V1V1 V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2 V2V2
Rolling deployments
Production Fleet
ELB
Falha no Deploy
4 failures – 60% healthy
MHH 70%, 10 hosts:
V1V2 V1V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2V2 V2 V2 V2 V2
Minimum healthy hosts
Production Fleet
ELB
1 failure – 90% healthy
Minimum Health Hosts
Confgure o Rollback
• CodeDeploy: configure no deployment group
2 of 5 – Manage deployment health
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
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
MeuApp
CodeCommit/GitHub
DeployemDev
CodeDeploy/EB
QA
QA/Teste
Manual
CodeDeploy/EB
Source
Deploy em DEV
Teste/Aprovação
Deploy em Prod
Processo de release no CodePipeline
Execução do Pipeline
Stage
Pipeline
Source é alterado
• Executa um pipeline;
• Cria um artefato a ser usado em outras
actions.
Mudança
Vamos automatizar o processo
Source Build/Test Stage/Homo/Dev Aprovação Prod
• S3
• CodeCommit
• GitHub
• Automático
AWS CodePipeline
• Elastic Beanstalk
• CodeDeploy
• CloudFormation
• OpsWorks
• CodeBuild
• Jenkins
• Solano
• TeamCity
• Elastic Beanstalk
• CodeDeploy
• CloudFormation
• OpsWorks
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
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
Aprovação automática
Source
MyAppSource
CodeCommit
Build
MyAppBuild
CodeBuild
Deploy
Stage
CodeDeploy
ValidaStage
Approval
SNS topic Lambda Function
registerDeployTest()
Lambda Function
evaluateDeploy()
DynamoDB
CloudWatch
Events (1m)
Change 1
Prod
CodeDeploy
alarmtimeusage
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
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
Obrigado!

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Quais são as opções de banco de dados gerenciados na AWS?
 Quais são as opções de banco de dados gerenciados na AWS? Quais são as opções de banco de dados gerenciados na AWS?
Quais são as opções de banco de dados gerenciados na AWS?
 
Infraestrutura como código
Infraestrutura como códigoInfraestrutura como código
Infraestrutura como código
 
Raising the bar #5 - Melhores práticas de workloads Microsoft
Raising the bar #5 - Melhores práticas de workloads MicrosoftRaising the bar #5 - Melhores práticas de workloads Microsoft
Raising the bar #5 - Melhores práticas de workloads Microsoft
 
Seu primeiro aplicativo de Big Data
Seu primeiro aplicativo de Big DataSeu primeiro aplicativo de Big Data
Seu primeiro aplicativo de Big Data
 
Raising the bar #2 - Explorando o poder do banco de dados com Amazon Aurora
Raising the bar #2 - Explorando o poder do banco de dados com Amazon AuroraRaising the bar #2 - Explorando o poder do banco de dados com Amazon Aurora
Raising the bar #2 - Explorando o poder do banco de dados com Amazon Aurora
 
Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2
Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2
Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2
 
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
 
Aguentando uma enxurrada de requisições com API Gateway + lambda + Kinesis
Aguentando uma enxurrada de requisições com API Gateway + lambda +  KinesisAguentando uma enxurrada de requisições com API Gateway + lambda +  Kinesis
Aguentando uma enxurrada de requisições com API Gateway + lambda + Kinesis
 
Começando com Amazon Redshift
Começando com Amazon RedshiftComeçando com Amazon Redshift
Começando com Amazon Redshift
 
Arquitetura Serverless e AWS Lambda - Demo Session
Arquitetura Serverless e AWS Lambda - Demo SessionArquitetura Serverless e AWS Lambda - Demo Session
Arquitetura Serverless e AWS Lambda - Demo Session
 
Mobile tests usando AWS Device Farm
Mobile tests usando AWS Device FarmMobile tests usando AWS Device Farm
Mobile tests usando AWS Device Farm
 
Armazenamento para uma estratégia híbrida
 Armazenamento para uma estratégia híbrida Armazenamento para uma estratégia híbrida
Armazenamento para uma estratégia híbrida
 
Utilizando NoSQL para Big Data com DynamoDB
Utilizando NoSQL para Big Data com DynamoDB Utilizando NoSQL para Big Data com DynamoDB
Utilizando NoSQL para Big Data com DynamoDB
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Developer Lounge - AWS Summit SP 2019 - Processando alta demanda de Requisições
Developer Lounge - AWS Summit SP 2019 - Processando alta demanda de RequisiçõesDeveloper Lounge - AWS Summit SP 2019 - Processando alta demanda de Requisições
Developer Lounge - AWS Summit SP 2019 - Processando alta demanda de Requisições
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
 
Desenvolvendo aplicacoes moveis Android na Nuvem da Amazon Web Services
Desenvolvendo aplicacoes moveis Android na Nuvem da Amazon Web ServicesDesenvolvendo aplicacoes moveis Android na Nuvem da Amazon Web Services
Desenvolvendo aplicacoes moveis Android na Nuvem da Amazon Web Services
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL Azure
 

Ähnlich wie De 0 a DevOps

Ähnlich wie De 0 a DevOps (20)

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
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
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
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...
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
.Net Core + Docker
.Net Core +  Docker.Net Core +  Docker
.Net Core + Docker
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
Simplificando a montagem de ambientes de Dev/Testes com Docker - Interop Summ...
 
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
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 

Mehr von Amazon Web Services LATAM

Mehr von 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
 

Kürzlich hochgeladen

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Kürzlich hochgeladen (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

De 0 a DevOps

  • 1. De 0 a DevOps Rodando e Escalando sua Aplicação Web de Maneira Automatizada
  • 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
  • 4. Modelo antigo O modelo de entrega de software mudou drasticamente Modelo novo
  • 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
  • 9. Algo mais simples Source Production • S3 • CodeCommit • GitHub • 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
  • 11. Elastic Beanstalk Suporte a diversos ambientes • .NET (Windows/IIS) • Java • Node.js • PHP • Python • Ruby • Tomcat • Go • Packer • Glassfish • Docker • Multi-container Docker
  • 12. User Application Application Service HTTP Service Language Interpreter Operating System Host
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 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
  • 27. Exemplos arquivos no .ebextensions files: "/home/ec2-user/myfile" : mode: "000755" owner: root group: root source: http://foo.bar/myfile "/home/ec2-user/myfile2" : mode: "000755" owner: root group: root content: | #arquivos #conteúdos commands: python_install : command: script1.py cwd: /home/ec2-user env: varname: varname test: ”[ ! -x /usr/bin/python ]”
  • 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
  • 31.
  • 32. CodeDeploy: Instalar o agent #!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://bucket-name.s3.amazonaws.com/latest/install chmod +x ./install ./install auto <powershell> New-Item -Path c:temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:tempcodedeploy-agent.msi Start-Process -Wait -FilePath c:tempcodedeploy-agent.msi -WindowStyle Hidden </powershell>
  • 33. Exemplo de appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/html permissions: - object: /var/www/html pattern: “*.html” owner: root group: root mode: 755 hooks: ApplicationStop: - location: scripts/deregister_from_elb.sh BeforeInstall: - location: scripts/install_dependencies.sh ApplicationStart: - location: scripts/start_httpd.sh ValidateService: - location: scripts/test_site.sh - location: scripts/register_with_elb.sh • Remove e adiciona instâncias do ELB • Instala dependecências • Inicializa o Apache • Confirma o deploy • E muito mais! • Envia os arquivos da aplicação oara um diretório e carquivos de configuração para outro • Configura permissões específicas em diretórios e arquivos específicos
  • 34. CodeDeploy + GitHub 1. https://www.youtube.com/watch?time_contin ue=20&v=N3saR9D7hq8 2. https://aws.amazon.com/blogs/devops/auto matically-deploy-from-github-using-aws- codedeploy/
  • 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
  • 38. 4 failures – 60% healthy MHH 70%, 10 hosts: V1V2 V1V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2V2 V2 V2 V2 V2 Minimum healthy hosts Production Fleet ELB 1 failure – 90% healthy
  • 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
  • 43. MeuApp CodeCommit/GitHub DeployemDev CodeDeploy/EB QA QA/Teste Manual CodeDeploy/EB Source Deploy em DEV Teste/Aprovação Deploy em Prod Processo de release no CodePipeline Execução do Pipeline Stage Pipeline Source é alterado • Executa um pipeline; • Cria um artefato a ser usado em outras actions. Mudança
  • 44. Vamos automatizar o processo Source Build/Test Stage/Homo/Dev Aprovação Prod • S3 • CodeCommit • GitHub • Automático AWS CodePipeline • Elastic Beanstalk • CodeDeploy • CloudFormation • OpsWorks • CodeBuild • Jenkins • Solano • TeamCity • Elastic Beanstalk • CodeDeploy • CloudFormation • OpsWorks
  • 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
  • 47.
  • 48. Aprovação automática Source MyAppSource CodeCommit Build MyAppBuild CodeBuild Deploy Stage CodeDeploy ValidaStage Approval SNS topic Lambda Function registerDeployTest() Lambda Function evaluateDeploy() DynamoDB CloudWatch Events (1m) Change 1 Prod CodeDeploy alarmtimeusage
  • 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