O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

De 0 a DevOps

171 visualizações

Publicada em

De 0 a DevOps - AWS Cloud Experience - Começando na AWS

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

De 0 a DevOps

  1. 1. De 0 a DevOps Rodando e Escalando sua Aplicação Web de Maneira Automatizada
  2. 2. https://secure.flickr.com/photos/mgifford/4525333972 Por que nós estamos aqui hoje?
  3. 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. 4. Modelo antigo O modelo de entrega de software mudou drasticamente Modelo novo
  5. 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. 6. Reality check • Deploy manual • FTP • Rsync • Janela de manutenção • Algum controle de versionamento (SVN)
  7. 7. Source Build Test Production Continuous integration Continuous delivery Continuous deployment As 4 fases do processo de deploy
  8. 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. 9. Algo mais simples Source Production • S3 • CodeCommit • GitHub • Elastic Beanstalk • CodeDeploy • CloudFormation • OpsWorks
  10. 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. 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. 12. User Application Application Service HTTP Service Language Interpreter Operating System Host
  13. 13. Elastic Beanstalk: 0 Downtime
  14. 14. Elastic Beanstalk: 0 Downtime
  15. 15. Elastic Beanstalk: 0 Downtime
  16. 16. Elastic Beanstalk: 0 Downtime
  17. 17. Elastic Beanstalk: 0 Downtime
  18. 18. 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
  19. 19. 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 ]”
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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>
  24. 24. 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
  25. 25. 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/
  26. 26. 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
  27. 27. 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
  28. 28. V1V1 V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2 V2V2 Rolling deployments Production Fleet ELB Falha no Deploy
  29. 29. 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
  30. 30. Minimum Health Hosts
  31. 31. Confgure o Rollback • CodeDeploy: configure no deployment group 2 of 5 – Manage deployment health
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. 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
  41. 41. Obrigado!

×