Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[Lady Talks] Continuous Delivery

[Lady Talks] Continuous Delivery

Palestra sobre Continuous Delivery para o Lady Talks

Samanta Cicilia

January 06, 2016
Tweet

More Decks by Samanta Cicilia

Other Decks in Programming

Transcript

  1. Reflexão A forma como as empresas desenvolvem software muda rapidamente

    – seja por necessidades do mercado, evolução de tecnologias ou até mesmo redução de custos. Todos os dias essas empresas precisam fazer mais com menos investimento, para simultaneamente manter a competitividade e reduzir os custos. (The Phoenix Project)
  2. Exemplos •  Google: 8 minutos entre DEV e PRD • 

    Facebook: 2 vezes por dia •  Linkedin: 30 minutos entre DEV e PRD
  3. Exemplos •  Google: 8 minutos entre DEV e PRD • 

    Facebook: 2 vezes por dia •  Linkedin: 30 minutos entre DEV e PRD •  Etsy: 30 deploys por dia feitos por 200+ pessoas;
  4. Objetivos •  tornar todas as partes do processo de compilar,

    implantar, testar e entregar a versão visíveis para todas as pessoas envolvidas a fim de promover colaboração; •  melhorar o feedback do processo para que problemas sejam identificados o mais cedo possível dentro do ciclo ; e •  permitir que o software seja entregue em qualquer ambiente e a qualquer momento
  5. Conceitos Importantes •  Controle de Versão •  Integração Contínua • 

    Testes Automatizados (unitários, integração e aceitação)
  6. Conceitos Importantes •  Controle de Versão •  Integração Contínua • 

    Testes Automatizados (unitários, integração e aceitação) •  Testes de Capacidade
  7. Pipeline de Implantação •  Implementação automatizada do processo de compilar

    todas as partes de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.
  8. Pipeline de Implantação •  Implementação automatizada do processo de compilar

    todas as partes de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.
  9. Pipeline de Implantação •  Implementação automatizada do processo de compilar

    todas as partes de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.
  10. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo
  11. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão
  12. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão •  Se é difícil, faça com mais frequência e amenize o sofrimento
  13. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão •  Se é difícil, faça com mais frequência e amenize o sofrimento •  A qualidade DEVE estar presente desde o início
  14. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão •  Se é difícil, faça com mais frequência e amenize o sofrimento •  A qualidade DEVE estar presente desde o início •  Pronto quer dizer versão entregue
  15. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão •  Se é difícil, faça com mais frequência e amenize o sofrimento •  A qualidade DEVE estar presente desde o início •  Pronto quer dizer versão entregue •  Todos são responsáveis pelo processo de entrega
  16. Princípios •  Criar um processo de confiabilidade e repetitividade de

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão •  Se é difícil, faça com mais frequência e amenize o sofrimento •  A qualidade DEVE estar presente desde o início •  Pronto quer dizer versão entregue •  Todos são responsáveis pelo processo de entrega •  Melhoria Contínua
  17. Práticas •  Compile seus binários somente uma vez •  Faça

    a implementação da mesma maneira em cada ambiente
  18. Práticas •  Compile seus binários somente uma vez •  Faça

    a implementação da mesma maneira em cada ambiente •  Use Smoke Tests
  19. Práticas •  Compile seus binários somente uma vez •  Faça

    a implementação da mesma maneira em cada ambiente •  Use Smoke Tests •  Implante em uma cópia de Produção
  20. Práticas •  Compile seus binários somente uma vez •  Faça

    a implementação da mesma maneira em cada ambiente •  Use Smoke Tests •  Implante em uma cópia de Produção •  Cada mudança deve ser propagada pelo pipeline instantaneamente
  21. Práticas •  Compile seus binários somente uma vez •  Faça

    a implementação da mesma maneira em cada ambiente •  Use Smoke Tests •  Implante em uma cópia de Produção •  Cada mudança deve ser propagada pelo pipeline instantaneamente •  Se qualquer parte do pipeline falhar, pare o processo
  22. Estágio de Commit •  Entrada: Código ◦  compilar projeto; ◦ 

    executar testes unitários; ◦  executar Sonar; ◦  gerar binário; ◦  armazenar no repositório (binário + propriedades).
  23. Estágio de Commit •  Entrada: Código ◦  compilar projeto; ◦ 

    executar testes unitários; ◦  executar Sonar; ◦  gerar binário; ◦  armazenar no repositório (binário + propriedades). •  Saída: Binários e Relatórios
  24. Deploy em INTEGRAÇÃO •  Entrada: Versão para Deploy ◦  pegar

    binário no repositório; ◦  verificar propriedades do binário (pode fazer deploy?); ◦  executar deploy em Integração; ◦  atualizar propriedades do binário.
  25. Deploy em INTEGRAÇÃO •  Entrada: Versão para Deploy ◦  pegar

    binário no repositório; ◦  verificar propriedades do binário (pode fazer deploy?); ◦  executar deploy em Integração; ◦  atualizar propriedades do binário. •  Saída: Servidores e propriedades do binário atualizados
  26. Deploy em STAGING •  Entrada: Versão para Deploy ◦  pegar

    binário no repositório; ◦  verificar propriedades do binário (pode fazer deploy?); ◦  executar deploy em Staging; ◦  atualizar propriedades do binário.
  27. Deploy em STAGING •  Entrada: Versão para Deploy ◦  pegar

    binário no repositório; ◦  verificar propriedades do binário (pode fazer deploy?); ◦  executar deploy em Staging; ◦  atualizar propriedades do binário. •  Saída: Servidores e propriedades do binário atualizados
  28. Análise de Log Automatizada •  Logs da Aplicação; •  Sumarização

    do TOP 15 erros que mais ocorreram; •  Verificação de erros 404 e 50X;
  29. Análise de Log Automatizada •  Logs da Aplicação; •  Sumarização

    do TOP 15 erros que mais ocorreram; •  Verificação de erros 404 e 50X; •  Envio de e-mail para todos os responsáveis;
  30. Análise de Log Automatizada •  Logs da Aplicação; •  Sumarização

    do TOP 15 erros que mais ocorreram; •  Verificação de erros 404 e 50X; •  Envio de e-mail para todos os responsáveis; •  Tomada de decisão se o processo vai até o final (Deploy em PRODUÇÃO);
  31. Análise de Log Automatizada •  Logs da Aplicação; •  Sumarização

    do TOP 15 erros que mais ocorreram; •  Verificação de erros 404 e 50X; •  Envio de e-mail para todos os responsáveis; •  Tomada de decisão se o processo vai até o final (Deploy em PRODUÇÃO); •  Muito importante para os produtos mais antigos;
  32. Análise de Log Automatizada •  Logs da Aplicação; •  Sumarização

    do TOP 15 erros que mais ocorreram; •  Verificação de erros 404 e 50X; •  Envio de e-mail para todos os responsáveis; •  Tomada de decisão se o processo vai até o final (Deploy em PRODUÇÃO); •  Muito importante para os produtos mais antigos; •  Preocupação de OPS.
  33. Testes de Performance Automatizados •  Scritps do Jmeter; •  Cenários

    pré-definidos; •  Limite máximo aceitável de tempo.
  34. Testes de Performance Automatizados •  Scritps do Jmeter; •  Cenários

    pré-definidos; •  Limite máximo aceitável de tempo.
  35. Deploy em PRODUÇÃO •  Entrada: Versão para Deploy ◦  pegar

    binário no repositório; ◦  verificar propriedades do binário (pode fazer deploy?); ◦  executar deploy em Produção; ◦  atualizar propriedades do binário.
  36. Deploy em PRODUÇÃO •  Entrada: Versão para Deploy ◦  pegar

    binário no repositório; ◦  verificar propriedades do binário (pode fazer deploy?); ◦  executar deploy em Produção; ◦  atualizar propriedades do binário. •  Saída: Servidores e propriedades do binário atualizados
  37. Alguns Resultados •  Deploys por camadas (Tomcat, Apache, Varnish, Solr,

    Serviços); •  Deploy em qualquer horário; •  90 pipelines em 1 ano;
  38. Alguns Resultados •  Deploys por camadas (Tomcat, Apache, Varnish, Solr,

    Serviços); •  Deploy em qualquer horário; •  90 pipelines em 1 ano;
  39. Alguns Resultados •  Deploys por camadas (Tomcat, Apache, Varnish, Solr,

    Serviços); •  Deploy em qualquer horário; •  90 pipelines em 1 ano; •  Devs fazem Deploy em PRODUÇÃO \o/;
  40. Alguns Resultados •  Deploys por camadas (Tomcat, Apache, Varnish, Solr,

    Serviços); •  Deploy em qualquer horário; •  90 pipelines em 1 ano; •  Devs fazem Deploy em PRODUÇÃO \o/; •  Tempo de entrega
  41. Alguns Resultados •  Deploys por camadas (Tomcat, Apache, Varnish, Solr,

    Serviços); •  Deploy em qualquer horário; •  90 pipelines em 1 ano; •  Devs fazem Deploy em PRODUÇÃO \o/; •  Tempo de entrega (2 horas).
  42. Contatos ➔  testedesoftware.com ➔  rtstreinamentos.com.br ➔  medium.com/@samantacicilia ➔  Linkedin: Samanta

    Cicilia ➔  Twitter: @samantacicilia ➔  Slideshare: pt.slideshare.net/samantacicilia/ ➔  Email: [email protected] ➔  Email: [email protected]