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.

Webinar: Introdução à Distribuição Contínua na AWS

1.354 visualizações

Publicada em

Empresas de ponta possuem ciclos de entrega de software medido em dias ao invés de meses. Essa agilidade é alcançada através de práticas de DevOps como entrega contínua, da qual permite automatizar a construção, testes e deploy mudanças no código da aplicação. Essa automação permite reconhecer problemas antecipadamente e aumentando a produtividade dos desenvolvedores.

Nesse webinar, vamos compartilhar os processos que os engenheiros da Amazon utilizam na prática de DevOps e discutir como você pode levar estes processos para sua empresa utilizando uma série de serviços (AWS CodePipeline e AWS CodeDeploy). Estes por sua vez, foram inspirados pela nossas ferramentas de desenvolvimento internos e cultura DevOps.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Webinar: Introdução à Distribuição Contínua na AWS

  1. 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Paulo Miguel Almeida Arquiteto Soluções 20 de julho de 2016 DevOps na AWS: Introdução a entrega contínua na AWS
  2. 2. https://secure.flickr.com/photos/mgifford/4525333972 Por que estamos aqui hoje?
  3. 3. A velocidade de desenvolvimento esta crescendo rapidamente A criação e a distribuição de software estão mais fáceis e mais rápidas do que nunca: • As startups agora podem competir com gigantes com pouco ou nenhum investimento. • Colocar seu software nas mãos de milhões de pessoas está a um download de distância
  4. 4. Antigo modelo de fornecimento de software O modelo de distribuição de software mudou bastante Novo modelo de fornecimento de software
  5. 5. Quais ferramentas são necessárias alcançar isso? Disponibilizar software nesse novo cenário voltado para entrega de software requer muitas coisas: • Ferramentas para gerenciar o fluxo do processo de entrega de desenvolvimento de software. • Ferramentas para testar e inspecionar devidamente o código quanto suas falhas e possíveis problemas. • Ferramentas para deploy (implantar) suas aplicações.
  6. 6. Primeiro, precisamos entender um pouco mais sobre os processos de entrega de software https://www.flickr.com/photos/jurvetson/5201796697/
  7. 7. • Testes de integração com outros sistemas • Testes de carga • Testes de interface do usuário • Pen test Processos de entrega têm quatro fases principais Código Construção Teste Produção • Desenvolver código-fonte como arquivos .java. • Revisar o novo código • Compilar o código • Testes de unidade • Verificadores de estilo • Métricas de código • Criar imagens de contêiner • Implantação em ambientes de produção
  8. 8. Níveis dos processos de entrega Código Construção Teste Produção Integração contínua Entrega contínua Implantação contínua
  9. 9. Níveis dos processos de liberação Código Construção Teste Produção Integração contínua Implantação contínua Entrega contínua Nosso foco hoje
  10. 10. Benefícios da entrega contínua Melhorar a produtividade do desenvolvedor Encontrar e resolver bugs rapidamente Fornecer atualizações com mais rapidez Automatizar o processo de entrega de software
  11. 11. Considerações sobre o desenvolvimento na Amazon... https://secure.flickr.com/photos/pixelthing/15806918992/
  12. 12. 2001 Transformação do desenvolvimento na Amazon: 2001-2009 2009 aplicação monolítico + equipes micro serviços + equipes de 2 pizzas
  13. 13. Tudo melhorou muito com esse modelo e as equipes estavam desenvolvendo funcionalidades mais rápido do que nunca, mas sentimos que ainda podíamos melhorar.
  14. 14. Em 2009, realizamos um estudo para identificar onde ainda poderia haver ineficiências
  15. 15. Ficamos somente esperando. Esperar Escrever código Esperar Construção código EsperarImplantar para testar Implantar para produção
  16. 16. Ficamos somente esperando. Esperar Escrever código Esperar Construção código EsperarImplantar para testar Implantar para produção Min. Dias Min. Dias Min. Dias Min.
  17. 17. Ficamos somente esperando. Esperar Escrever código Esperar Construção código EsperarImplantar para testar Implantar para produção Semanas Min. Dias Min. Dias Min. Dias Min.
  18. 18. Ficamos somente esperando. Esperar Escrever código Esperar Construção código EsperarImplantar para testar Implantar para produção Semanas Min Dias Min Dias Min Dias Min
  19. 19. Criamos ferramentas para automatizar nosso processo de entrega de software https://secure.flickr.com/photos/lindseygee/5894617854/
  20. 20. Ações e transições automatizadas; do início até a produção Benefícios de desenvolvimento: • Mais rápido • Mais seguro • Consistente e padronizado • Visualização do processo Pipelines
  21. 21. Serviço de entrega contínua para atualizações de aplicativo rápidas e confiáveis Elabore e visualize seu processo de entrega de software Cria, testa e implanta seu código sempre que há uma alteração de código Integra-se a ferramentas de terceiros e da AWS AWS CodePipeline
  22. 22. Benefícios do AWS CodePipeline Fluxo de trabalho configurável Fácil de integrar Melhora a qualidade das entregas Entrega rápida Comece a usar rapidamente
  23. 23. Código Código GitHub Construção JenkinsOnEC2 Jenkins Implantação JavaApp Elastic Beanstalk Estrutura Estágio Ação Transição CodePipeline MyApplication
  24. 24. Código Código GitHub Construção JenkinsOnEC2 Jenkins Implantação JavaApp Elastic Beanstalk Notificar_Devs Lambda CodePipeline MyApplication Ações paralelas
  25. 25. Código Código GitHub Construção JenkinsOnEC2 Jenkins Implantação JavaApp Elastic Beanstalk Notificar_Devs Lambda TesteAPI Runscope CodePipeline MyApplication Ações sequenciais
  26. 26. 8. Recuperar artefato construído Instância do EC2 CodePipeline Código Código GitHub Construção JenkinsOnEC2 Jenkins Implantação JavaApp Elastic Beanstalk Artefato de origem S3 Criar artefato S3 5. Obter artefato de origem 1. Obter alterações 6. Armazenar artefato construído 3. Satisfazer tarefa 4. Confirmar tarefa 7. Realizar com êxito 9. Implantar artefato construído Elastic Beanstalk Contêiner da Web Aplicativo Java MyApplication
  27. 27. Temos uma boa lista de parceiros, que está crescendo Código Construção Teste Implantação
  28. 28. Integrações de serviços da AWS Código Invocar lógica Implantar AWS Elastic BeanstalkAmazon S3 AWS CodeDeploy AWS Lambda AWS CodeCommit
  29. 29. Criando seu processo de entrega contínua de com o AWS Pipeline https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/
  30. 30. Construindo e testando seu aplicativo https://secure.flickr.com/photos/spenceyc/7481166880
  31. 31. Construção/Compilação do código “Construir” o código normalmente envolve linguagens que precisam ser compiladas: • Linguagens .NET: C#, F#, VB.net etc. • Linguagens que rodam em cima de uma JVM: Java, Scala, JRuby • Go • Linguagens: iOS: Swift, Objective-C Também chamamos o processo de criação de imagens do contêiner de Docker de ”construção" da imagem. EC2
  32. 32. Caso onde compilar não é necessário Muitas linguagens não precisam de criação. Elas são consideradas linguagens interpretadas: • PHP • Ruby • Python* • Node.js* Você pode simplesmente implantar seu código! EC2
  33. 33. Testando seu código O teste é tanto uma ciência quanto uma forma de arte! Objetivos do teste do código: • Confirmar a funcionalidade desejada • Identificar erros de sintaxe de programação • Padronizar formato e padrões de código • Reduzir bugs decorrentes do uso indesejado do aplicativo e falhas lógicas • Deixar os aplicativos mais seguros
  34. 34. Implantação de aplicações https://secure.flickr.com/photos/simononly/15386966677
  35. 35. Automatiza as implantações de código em qualquer instância Lida com a complexidade da atualização dos aplicativos Evite o tempo de indisponibilidade durante a implantação da aplicação. Funciona com Amazon EC2 ou em servidores locais, em qualquer linguagem e em qualquer sistema operacional Integra-se a ferramentas de terceiros e da AWS AWS CodeDeploy
  36. 36. 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
  37. 37. 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 • Remover/adicionar instância ao ELB • Instalar pacotes de dependência • Iniciar Apache • Confirmar implantação bem- sucedida • Mais! • Enviar arquivos do aplicativo para um diretório e os arquivos de configuração para outro • Definir permissões específicas em diretórios e arquivos específicos
  38. 38. v2 v2 v2 v2 v2 v2 um de cada vez metade de cada vez tudo de uma vez v2 v2 v2 v1 v1 v1 v2 v1 v1 v1 v1 v1 Agente Agente Grupo de implantação de desenvolvimento OU Grupo de implantação de produção Agente AgenteAgente Agente Agente Agente Escolher velocidade e grupo de implantação
  39. 39. https://www.flickr.com/photos/spacex/16510243060/ Implantação em produção
  40. 40. Implantação em produção Depois de criar e testar o código e passar por algumas implantações de pré-produção, é hora de passar para o mundo real! Convém pensar sobre: • Impacto para os clientes • Impacto para a infraestrutura • Impacto para a empresa Como podemos acompanhar isso e comunicar as implantações?
  41. 41. Usando ações personalizadas o AWS CodePipeline Atualizar tickets Provisionar recursos Atualizar painéis Testes em dispositivos móveis Enviar notificações Verificação de segurança
  42. 42. Qual método de extensão devo usar? Lambda Ação personalizada Tarefas curtas são fáceis de criar É possível executar qualquer tipo de tarefas As tarefas longas envolvem mais trabalho Controle sobre os links exibidos no console Suporte para Node.js, Python e Java Suporte para qualquer linguagem Executado na AWS Pode ser executado em ambiente on- premises Nenhum servidor para provisionar ou gerenciar Requer recursos de computação
  43. 43. FIN, ACK Vimos um breve resumo hoje dos benefícios da entrega contínua para o nosso processo de entrega de software: • A integração contínua (construção/teste) ajuda a diminuir muito o ciclo de feedback • Podemos disponibilizar o software para os usuários com muito mais rapidez • Melhorias na qualidade do software através da automação de processos. • O CodePipeline permite a integração com praticamente qualquer serviço ou ferramenta que se possa imaginar! • Maior visualização do que está acontecendo!
  44. 44. Experimente hoje mesmo Experimente o CodePipeline e aproveite uma estrutura completa de fornecimento contínuo usando o Starter Kit bit.ly/AWSCodeStarterKit
  45. 45. Recursos para saber mais: • Integração contínua: https://aws.amazon.com/devops/continuous-integration/ • Entrega contínua: https://aws.amazon.com/devops/continuous-delivery/ • CodePipeline • https://aws.amazon.com/codepipeline/ • https://aws.amazon.com/documentation/codepipeline/ • CodeDeploy • https://aws.amazon.com/codedeploy/ • https://aws.amazon.com/documentation/codedeploy/ • https://github.com/awslabs/aws-codedeploy-samples • Code Services Starter Kit: http://bit.ly/AWSCodeStarterKit Aguarde porque ainda tem muito mais!
  46. 46. Obrigado!

×