Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Quebrando barreiras entre desenvolvimento e operação de software com DevOps

1,167 views

Published on

Apresentado para o Pop-ES e NPD da Ufes. Conheça o significado de DevOps e como ele pode apoiar entregas mais rápidas de software por meio da mudança de cultura, automatização entre outras...

Published in: Technology

Quebrando barreiras entre desenvolvimento e operação de software com DevOps

  1. 1. Quebrando barreiras entre desenvolvimento e operação de software com DevOps José Alexandre Macedo
  2. 2. Monte Sião/MG Quem sou eu Foz do Iguaçu/PR Alfenas/MG Vila Velha/ES Vitória/ES Guarapari/ES Rio de Janeiro/RJ
  3. 3. Monte Sião/MG Quem sou eu Foz do Iguaçu/PR Alfenas/MG Vila Velha/ES Vitória/ES Guarapari/ES Rio de Janeiro/RJ
  4. 4. Software faz parte do nosso dia a dia
  5. 5. Quantos software estão envolvidos em uma viajem de férias?
  6. 6. Quantos software estão envolvidos em uma viajem de férias?
  7. 7. Sistema fora do ar...
  8. 8. Sistema fora do ar... problemas para todos
  9. 9. investimentos em qualidade e estabilidade são fundamentais desde o inicio até a produção
  10. 10. Desenvolvimento e operação Tradicional Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
  11. 11. Desenvolvimento e operação Tradicional Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
  12. 12. Métodos Ágeis •Software entregue mais rápido •Menos bugs •Cliente participando mais ... mudando a execução das atividades
  13. 13. Um belo dia o código é colocado em produção E o inesperado acontece...
  14. 14. Um belo dia o código é colocado em produção
  15. 15. Desenvolvimento e operação Tradicional Prioridade é manter rodando...
  16. 16. Novas preocupações surgem... Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
  17. 17. Desenvolvimento e operação Tradicional • Separação de responsabilidades Time de desenvolvimento • criar produtos • criar novas funcionalidades • corrigir bugs Time de operação • Cuidar dos produtos em produção
  18. 18. Conflito de interesses •Devs introduzem mudanças •Operacao evita mudanças •+ risco a estabilidade
  19. 19. Novos processos são criados para definir modo trabalho
  20. 20. Gargalo para o deploy Exige docs para configurar e instalar, tickets para comunicação
  21. 21. O ciclo diminui habilidade de resposta rápida a mudanças no negócio Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops Desenvolvimento e operação Tradicional
  22. 22. DevOps e Entrega Contínua Qual a alternativa?
  23. 23. Entrega contínua Diminuir o tempo entre criação da ideia e colocar em produção
  24. 24. DevOps nasceu para aproximar as áreas de desenvolvimento e operação
  25. 25. Mas o que é devops? “DevOps é colaboração entre desenvolvedores e operação” “DevOps é usar Automação” “DevOps é fazer deploys pequenos” “DevOps é tratar sua infra como código” “DevOps é troca de funcionalidades”
  26. 26. Mudança de cultura... ... Nunca é fácil O QUE QUEREMOS? COLABORAÇÃO ENTRE DEVs E SYSADMIN! E QUANDO QUEREMOS? NO PRÓXIMO PROJETO!
  27. 27. DevOps – Mudança Cultural •Reconhecer o conflito de objetivos e criar um ambiente de colaboração entre as equipes •Isso vai influenciar •Fluxo de trabalho completado •Frequência de deploys •Estabilidade e robustez do ambiente de produção
  28. 28. DevOps – Por quê? Competitividade e Adaptação à Mudanças
  29. 29. DevOps – Como? •Aumentar quantidade de deploy •- tempo ciclo + qualidade Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
  30. 30. DevOps – Como? •Um dos segredos para inversão do ciclo é a automatização do processo
  31. 31. DevOps – Como? Automatizar o que exatamente?
  32. 32. DevOps – Automatizar o que? entre outras atividades... Compilação do código testes automatizados empacotamento criação de ambientes para teste ou produção configuração da infraestrutura migração de dados monitoramento agregamento de logs e métricas auditoria segurança desempenho deploy
  33. 33. Como as empresas encaram DevOps?
  34. 34. DevOps sem miséria
  35. 35. Como as empresas encaram DevOps?
  36. 36. Como as empresas encaram DevOps?
  37. 37. Benefícios comprovados do DevOps http://devops.com/features/fresh-stats-comparing-traditional-it-and-devops-oriented-productivity/
  38. 38. Conceitos e Ferramentas
  39. 39. Automatizando o setup de desenvolvimento O VirtualBox possui uma ferramenta de linha de comando para executar e configurar as máquinas virtuais, porém...
  40. 40. Automatizando o setup de desenvolvimento ...podemos complementar o uso do VirtualBox com o Vagrant, uma DSL para definir, gerenciar e configurar ambientes virtuais
  41. 41. Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais 1. Adiconar uma nova box
  42. 42. Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais 2. Declarar o Vagrantfile
  43. 43. Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais 3. Subindo o servidor
  44. 44. Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais 4. Comunicando com a máquina
  45. 45. Provisionamento de VM agora!
  46. 46. Por onde começar antes de automatizar tarefas de desenvolvimento?
  47. 47. Por onde começar antes de automatizar tarefas de desenvolvimento? Sistemas de controle de versão Os primórdios da entrega deve ser o commit...
  48. 48. Por onde começar antes de automatizar tarefas de desenvolvimento? Git e GitLab
  49. 49. Ok, faço controle de versão, e agora?
  50. 50. Ok, faço controle de versão, e agora? Hora de automatizar o build  Compilação, download e resolução de dependências, vinculação com bibliotecas, empacotamento, testes automatizados
  51. 51. Build Automatizado Ferramentas em Java Resultado do build são arquivos binários (artefatos)
  52. 52. SCV BUILD AUTOMATIZADO Hora de automatizar os testes... Compilar não é garantia que o sistema irá funcionar corretamente
  53. 53. SCV BUILD AUTOMATIZADO Hora de automatizar os testes... •Testes automatizáveis •Teste de unidade •Teste de integração •Testes funcionais
  54. 54. Agora podemos automatizar a integração Integração Contínua Trabalhar em paralelo exige mais •Comunicação •Coordenação Quanto mais tempo sem integrar, maior o risco de se criar conflitos
  55. 55. Ferramentas para Integração Contínua Jenkins
  56. 56. Ferramentas para Integração Contínua Serviços na nuvem
  57. 57. Boas práticas para Integração Contínua 1. Rodar um build local para garantir que isoladamente esta ok 2. Atualiza repositório local 3. Testes novamente 4. Compartilha commit com repo central
  58. 58. Monitoramento Com o sistema em produção preciso saber se está funcionando normalmente...
  59. 59. Monitoramento Com o sistema em produção preciso saber se está funcionando normalmente... • Muito popular • Implementação robusta • Ecossistema de plug-ins
  60. 60. Orquestração de Deploy Quanto mais componentes você possuir na arquitetura, maior a necessidade de orquestrar a ordem do deploy Exemplo: Provisionar o banco de dados antes do servidor web, deploy em clusters...
  61. 61. Ferramentas para Orquestração de Deploy Fabric Mcollective
  62. 62. Automatizando a Infra Administradores de sistema aprendem o poder da linha de comando desde
  63. 63. Automatizando a Infra Administradores de sistema amam seus scripts! Scripts
  64. 64. Automatizando a Infra • Cada um escreve sua própria versão • Difícil de reutilizar em outras situações Qual o problema disso?
  65. 65. Automatizando a Infra Devs são bons (ou deveriam ser) em escrever código modularizado e reusável Aprendendo com desenvolvedores...
  66. 66. Automatizando a Infra Gosto tanto dos meus scripts...
  67. 67. Automatizando a Infra • Scripts só funcionam para instalar e configurar o servidor pela primeira vez • Não serve de documentação Motivos para trocarmos os scripts por ferramentas...
  68. 68. Automatizando a Infra • Execute diversas vezes o mesmo código e apenas o necessário será alterado • serviço rodando? não será reiniciado • arquivo com conteúdo correto? não será alterado Idempotência
  69. 69. Automatizando a Infra • Ao invés da instrução ser "instale o pacote X” ou "crie o usuário Y” , • Você diz "eu quero que o pacote X esteja instalado” ou "eu quero que o usuárioY exista” Escrever código de infra de forma declarativa
  70. 70. Padronizar a Automatização da Infra Controle de versões, testes, empacotando e distribuindo módulos comuns Tratar infra como tratamos código!
  71. 71. Ferramentas para Automatizar a Infra Tratar infra como tratamos código!
  72. 72. Exemplificando • Madura • Aceita na comunidade de admisys • Bem adotada pela comunidade Tratar infra como tratamos código!
  73. 73. Conceitos •Diretiva: Cada comando que você declara na linguagem (recursos no Puppet) •Arquivo de diretivas: Arquivo de código fonte (manifesto no Puppet)
  74. 74. Exemplificando
  75. 75. Exemplificando
  76. 76. Recursos do Puppet são abstratos! Não precisamos dizer para o Puppet qual gerenciador de pacotes usar... Provedores para package apt , rpm , yum , gem ,etc
  77. 77. DevOps além das ferramentas • John Willis, Damon Edwards e Jez Humble definiram o acrônimo CALMS para definir o que é DevOps John Willis.What devops means to me. 2010. (C)ultura (A)utomação (L)ean (pensamento enxuto) (M)edição (S)haring (compartilhamento)
  78. 78. Referências e Recursos • http://web.experiencedevops.org/resou rces/ • http://www.infoq.com/br/presentations/ padroes-de-deploy-para-devops • http://www.infoq.com/br/presentations/ devops-com-exemplos-praticos • http://www.infoq.com/br/presentations/ devops-na-zendesk
  79. 79. @jamacedo jamacedo.com

×