O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

DevOps na AWS: Construindo Sistemas para Entregas Rápidas

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Criando Aplicações Serverless
Criando Aplicações Serverless
Carregando em…3
×

Confira estes a seguir

1 de 77 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a DevOps na AWS: Construindo Sistemas para Entregas Rápidas (20)

Anúncio

Mais de Amazon Web Services LATAM (20)

Mais recentes (20)

Anúncio

DevOps na AWS: Construindo Sistemas para Entregas Rápidas

  1. 1. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Fernando Sapata Enterprise Solutions Architect, Amazon Web Services DevOps na AWS: Construindo Sistemas para Entregas Rápidas
  2. 2. https://secure.flickr.com/photos/mgifford/4525333972 Por que estamos aqui hoje?
  3. 3. Agenda O que é DevOps? A história de DevOps da Amazon AWS Code Services Serviços de DevOps da AWS
  4. 4. O software muda rapidamente
  5. 5. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Por que DevOps é importante? 5x Menos chances de falhas 440x Mais rápido entre o commit e o deploy 46x Deploys mais frequentes 44% Mais tempo gasto com novas funcionalidades e código Fonte: Puppet 2017 State of DevOps Report
  6. 6. O que é DevOps?
  7. 7. O que é DevOps? • Filosofias culturais • Práticas • Ferramentas
  8. 8. Cultura DevOps • Dev & Ops caminham juntos • Sem silos • Responsabilidade compartilhada • Visibilidade e comunicação
  9. 9. Práticas DevOps Microserviços • Migrando de aplicações monolíticas para arquiteturas baseadas em microserviços
  10. 10. Práticas DevOps • Integração contínua • Deploy contínuo
  11. 11. Práticas DevOps Infraestrutura como código • Defina seus recursos na AWS utilizando código.
  12. 12. Práticas DevOps • Monitoração e Log • Monitore e analise métricas e logs • Compreenda o desempenho da infra-estrutura e da aplicação em tempo real
  13. 13. Confiabilidade Benefícios do DevOps VelocidadeEscala Entrega RápidaColaboração Otimizada Segurança
  14. 14. Olhando para o desenvolvimento na Amazon https://secure.flickr.com/photos/pixelthing/15806918992/
  15. 15. 2001 Transformação no desenvolvimento da Amazon: 2001–2009 2009 Aplicações Monolíticas Microserviços + “two-pizza teams”
  16. 16. As coisas foram bem melhores com este modelo, e as equipes entregaram mais rápido do que nunca, mas sentimos que ainda poderíamos melhorar.
  17. 17. Em 2009, realizamos um estudo para descobrir onde ainda podiam existir ineficiências.
  18. 18. Nós estávamos apenas esperando WaitWrite code WaitBuild code WaitDeploy to test Deploy to prod
  19. 19. Nós estávamos apenas esperando WaitWrite code WaitBuild code WaitDeploy to test Deploy to prod Mins Days Mins Days Mins Days Mins
  20. 20. Nós estávamos apenas esperando WaitWrite code WaitBuild code WaitDeploy to test Deploy to prod Weeks Mins Days Mins Days Mins Days Mins
  21. 21. Nós estávamos apenas esperando WaitWrite code WaitBuild code WaitDeploy to test Deploy to prod Weeks Mins Days Mins Days Mins Days Mins
  22. 22. Criamos ferramentas para automatizar nosso processo de entrega de software https://secure.flickr.com/photos/lindseygee/5894617854/
  23. 23. Ações automatizadas e transições; do check-in à produção Benefícios: • Mais rápido • Mais seguro • Simplificação e Padronização • Visualização do processo Pipelines
  24. 24. E funcionou muito bem… Em 2014: • Milhares de times de serviços na Amazon • Construindo microserviços • Utilizando entrega contínua • Diversos ambientes (staging, beta, production) 50 milhões de deploys
  25. 25. Todos os anos na Amazon, realizamos uma pesquisa com todos os nossos desenvolvedores de software. Os resultados de 2014 mostraram que apenas uma ferramenta / serviço de desenvolvimento poderia ser correlacionada estatisticamente com um desenvolvedor mais feliz: Nosso serviço de pipeline! Entrega contínua = Desenvolvedores mais felizes! E funcionou muito bem…
  26. 26. Por onde começar ?
  27. 27. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • Testes integrados com outros sistemas • Teste de carga • Testes de usabilidade • Testes de vulnerabilidade Cinco principais fases da entrega e monitoração Source Build Test Deploy Monitor • Faça Check in do código fonte • Revisão do novo código • Compile • Testes unitários • Verificações de estilo • Métricas de código • Criar as imagens do contêiner • Deploy no ambiente de produção • Monitore a aplicação em produção para identificar problemas rapidamente
  28. 28. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Code Services AWS CodeBuild + Third Party Etapas do processo de release de software AWS CodeCommit AWS CodeBuild AWS CodeDeploy AWS CodePipeline AWS CodeStar Source Build Test Deploy Monitor AWS X-Ray Amazon CloudWatch
  29. 29. Amazon CloudWatch AWS CloudTrail Monitoração e Log AWS DevOps Portfolio AWS CodeCommit AWS CodeDeploy AWS CodePipeline Desenvolvimento de Software AWS CloudFormation AWS OpsWorks AWS Config Infraestrutura como código AWS CodeBuild AWS CodeStar AWS OpsWorks for Chef Automate AWS X-Ray
  30. 30. Desenvolva e teste sua aplicação https://secure.flickr.com/photos/spenceyc/7481166880
  31. 31. Serviço de build totalmente gerenciado que compila o código-fonte, executa testes e produz pacotes de software Escala continuamente e processa vários builds simultaneamente Você pode criar ambientes de build personalizados utilizando imagens do Docker Pague apenas pelos minutos dos recursos de computação que você utilizar Lançado com integração do AWS CodePipeline e Jenkins AWS CodeBuild
  32. 32. Como funciona ? 1. Realiza o download do código fonte 2. Executa os commandos definidos no arquivo build spec em contêiners temporários (são criadas novas instâncias para cada build) 3. Envia os logs do build para a console e para o CloudWatch Logs 4. Envia os artefatos gerados para um bucket no S3
  33. 33. Como automatizar o processo de build com AWS CodeBuild? • Integrado com o AWS CodePipeline para CI/CD • Facilmente plugável (API/CLI) • Construa seu ambiente de build • Crie imagens Docker com as ferramentas que precisar • Plugin open-source para o Jenkins • Utilize o AWS CodeBuild como worker de um Jenkins Master
  34. 34. Exemplo do arquivo buildspec.yml version: 0.1 environment_variables: plaintext: JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64" phases: install: commands: - apt-get update -y - apt-get install -y maven pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: type: zip files: - target/messageUtil-1.0.jar discard-paths: yes • Variáveis a serem utilizadas na fase de build • Exemplo do que pode ser feito na fase de build: • Você pode instalar pacotes ou executar commandos de preparação do ambiente. • Executar verificações de sintaxe na etapa de pre_build. • Executar o commando de build • Testar sua aplicação ou criar uma imagem na etapa de post_build • Criar e armazenar um artefato no Amazon S3
  35. 35. Realizando o build do seu código Tipicamente o processo de build se refere a linguagens que precisam ser compiladas: • .NET: C#, F#, VB.net, etc. • Java e JVM: Java, Scala, JRuby • Go • iOS: Swift, Objective-C Também nos referimos ao processo de criação de imagens do Docker como build EC2
  36. 36. E se não precisar realizar o build… Diversas linguagens não precisam de build. Elas são consideradas linguagens interpretadas: • PHP • Ruby • Python • Node.js Você simplesmente realiza o deploy do seu código EC2
  37. 37. Testando seu código O teste é uma ciência e uma forma de arte! Objetivos para testar seu código: • Garantir a funcionalidade desejada • Capturar erros de sintaxe • Padronizar o código • Reduzir erros devido a falhas de lógica • Tornar as aplicações mais seguras
  38. 38. Onde focar os testes UI Service Unit 70% 20% 10%
  39. 39. Qual serviço e etapa do processo de release corresponde a quais testes? UI Service Unit Third-party tooling AWS CodeBuild BuildTest
  40. 40. Realizando o Deploy de sua aplicação https://secure.flickr.com/photos/simononly/15386966677
  41. 41. Automatiza implantações de código em qualquer instância Lida com a complexidade de atualizar as aplicações Previne indisponibilidade durante o deploy Realiza a volta automática em caso de falha Deploy no Amazon EC2 ou servidores on- premises, em qualquer linguagem e qualquer sistema operacional Integra-se com ferramentas de terceiros e AWS AWS CodeDeploy
  42. 42. Exemplo do arquivo 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 / adiciona instâncias ao Elastic Load Balancer • Instala pacotes de dependências • Inicia o Apache • Confirma o sucesso do deploy • Envia arquivos da aplicação para um diretório e os de configuração para outro • Define permissões específicas em diretórios e arquivos
  43. 43. v2 v2 v2 v2 v2 v2 Um por vez Metade por vez Todos de uma vez v2 v2 v2 v1 v1 v1 v2 v1 v1 v1 v1 v1 Agent Agent Dev deployment group OR Prod deployment group Agent AgentAgent Agent Agent Agent Escolha a velocidade e o grupo de implantação
  44. 44. Orquestrando o Build e o Deploy com um Pipeline https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/
  45. 45. Serviço de entrega contínua para atualizações rápidas e confiáveis de aplicações Modele e visualize seu processo de release de software Realiza o build, testes, e deploy do código sempre que ocorrer uma alteração Integra-se com ferramentas de terceiros e AWS AWS CodePipeline
  46. 46. Source Source GitHub Build CodeBuild AWS CodeBuild Deploy JavaApp Elastic Beanstalk Pipeline Stage Action Transition AWS CodePipeline MyApplication
  47. 47. Build AWS CodeBuild AWS CodeBuild NotifyDevelopers Lambda Parallel actions Source Source GitHub AWS CodePipeline MyApplication Deploy JavaApp Elastic Beanstalk
  48. 48. Build AWS CodeBuild AWS CodeBuild NotifyDevelopers Lambda TestAPI Runscope Sequential actions Deploy JavaApp Elastic Beanstalk Source Source GitHub AWS CodePipeline MyApplication
  49. 49. Build AWS CodeBuild AWS CodeBuild Staging-Deploy JavaApp Elastic Beanstalk Prod-Deploy JavaApp Elastic Beanstalk QATeamReview Manual Approval Manual approvals Review AWS CodePipeline MyApplication
  50. 50. Repositório de código Git seguro, gerenciado e escalável Use ferramentas no padrão do Git Escalabilidade, disponibilidade, e durabilidade do Amazon S3 Criptografia em repouso com chaves do cliente Repositório sem limite de tamanho Gatilhos de pós commit para chamar o Amazon SNS ou Lambda AWS CodeCommit
  51. 51. Controle de códigos fonte na nuvem Seguro Gerenciado Altamente Disponível Armazene qualquer objeto
  52. 52. AWS CodeCommit Git pull/push AWS CodeCommit Objetos Git no Amazon S3 Índice Git no Amazon DynamoDB Chaves de criptografia no AWS KMS SSH or HTTPS
  53. 53. $ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli Cloning into 'aws-cli'... Receiving objects: 100% (16032/16032), 5.55 MiB | 1.25 MiB/s, done. Resolving deltas: 100% (9900/9900), done. Checking connectivity... done. $ nano README.rst $ git commit -am 'updated README' [master 4fa0318] updated README 1 file changed, 1 insertion(+) $ git push Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 297 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli 4dacd6d..4fa0318 master -> master A mesma experiência do Git
  54. 54. AWS CodeStar • Desenvolva, crie e implante aplicativos rapidamente na AWS • Comece a desenvolver na AWS em minutos • Trabalhe em toda a sua equipe, com segurança • Gerencie facilmente a entrega de software • Escolha entre uma variedade de modelos de projetos
  55. 55. AWS CodeStar Templates de projeto para EC2, AWS Lambda, e Elastic Beanstalk
  56. 56. Selecione a ferramente de versionamento de código
  57. 57. AWS CodeStar Ferramentas de entrega continua pré-configuradas
  58. 58. AWS CodeStar Conecte facilmente sua IDE preferida
  59. 59. AWS CodeStar Configure o acesso de toda a equipe em apenas alguns cliques
  60. 60. AWS CodeStar Painel unificado – Gerenciamento de fluxos de entrega e problemas
  61. 61. AWS CodeStar Painel unificado – Monitoração da aplicação e histórico de commits
  62. 62. AWS X-Ray
  63. 63. Debug Tradicional Developer Local test Developer Add breakpoints Add log statements
  64. 64. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Arquiteturas Monolíticas x Orientadas a Serviços Orientada a ServiçosMonolíticas
  65. 65. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. O processo tradicional de depuração não é efetivo para aplicações em produção ou aplicações que utilizam arquiteturas orientadas a serviços, de microserviços ou serverless. É cansativo, repetitivo e demorado, exigindo mais tempo dos times de DevOps na depuração.
  66. 66. Identifica gargalos de performance Como o AWS X-Ray pode ajudar? Aponta falhas específicas Identifica erros Identifica o impacto para os usuários
  67. 67. Serviço X-Ray
  68. 68. App & X-Ray SDK EC2 Instance/Containers/Lambda X-Ray Daemon Loca lhost UDP X-Ray API HTTPS HTTPS X-Ray console App & X-Ray SDK On-premises server X-Ray Daemon Local host UDP EC2 Role AWS Credentials DevOps team HTTPS Fluxo do X-Ray
  69. 69. X-Ray SDK Permite que você inicie rapidamente sem precisar instrumentar manualmente o código da aplicação. Código Fonte no GitHub https://github.com/aws?q=xray-sdk Disponível para Java, .NET, .NET Core, Python, Ruby, Go, & Node.js Adiciona filtros automaticamente para capturar chamadas:  Serviços AWS através do AWS SDK  Serviços non-AWS sobre HTTP e HTTPS  Bancos de Dados (MySQL, PostgreSQL, e Amazon DynamoDB)  Filas (Amazon SQS)
  70. 70. AWS Cloud9 Ambiente de desenvolvimento integrado baseado em nuvem (IDE) Permite você escrever, executar, e depurar seu código somente com o browser Compartilhe seu ambiente com a equipe para colaboração em tempo real Acesso direto ao terminal Fornece ótima experiência no desenvolvimento serverless: permite testes locais e pré-configura o ambiente de desenvolvimento com todos os SDKs, bibliotecas e plugins
  71. 71. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Editor Completo
  72. 72. Ampla seleção de Run Times
  73. 73. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Depuração completa
  74. 74. Ferramentas integradas para desenvolvimento Serverless
  75. 75. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Entrega Contínua: Aplicações Serverless AWS CodeCommit AWS CodeBuild Source Repository Build Deploy Or AWS Cloud9 AWS CodeStar AWS Lambda Author AWS CodePipeline Monitor AWS X-Ray And / or Amazon CloudWatch
  76. 76. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Entrega Contínua: Containers AWS CodeCommit AWS CodeBuild Amazon ECR Amazon ECS Source repository Build Deploy Or Or AWS CodePipeline
  77. 77. Obrigado!

×