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

[UFF] Continuous Delivery - Entrega Contínua de Software de Valor

[UFF] Continuous Delivery - Entrega Contínua de Software de Valor

Palestra da Semana Acadêmica Ciência da Computação - UFF 2015

Samanta Cicilia

November 26, 2015
Tweet

More Decks by Samanta Cicilia

Other Decks in Technology

Transcript

  1. Exemplos •  Google: 8 minutos entre DEV e PRD • 

    Facebook: 2 vezes por dia •  Linkedin: 30 minutos entre DEV e PRD
  2. 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;
  3. 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.
  4. 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.
  5. 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.
  6. Princípios •  Criar um processo de confiabilidade e repetitividade de

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

    entrega de versão •  Automatize quase tudo •  Mantenha tudo sob controle de versão
  8. 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
  9. 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
  10. 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
  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 •  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
  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 •  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
  13. Práticas •  Compile seus binários somente uma vez •  Faça

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

    a implementação da mesma maneira em cada ambiente •  Use Smoke Tests
  15. 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
  16. 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
  17. 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
  18. 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).
  19. 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
  20. 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.
  21. 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
  22. 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.
  23. 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
  24. 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;
  25. 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;
  26. 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);
  27. 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;
  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; •  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.
  29. Testes de Performance Automatizados •  Scritps do Jmeter; •  Cenários

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

    pré-definidos; •  Limite máximo aceitável de tempo.
  31. 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.
  32. 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
  33. Alguns Resultados •  Deploys por camadas (Tomcat, Apache, Varnish, Solr,

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

    Serviços); •  Deploy em qualquer horário; •  90 pipelines em 1 ano;
  35. 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/;
  36. 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
  37. 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).
  38. 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]