- Antipadrões de Entrega de Software;
- Princípios de Continuous Delivery
- Gerência de Configuração
- Integração Contínua
- Estratégias de Teste
- Pipeline de Implantação
- Case da Infoglobo
- Gerência de Dados
- Estratégias de Implantação
8. 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)
12. Antipadrões
• Implantar software manualmente;
• Implantar em ambiente similar ao de Produção somente
quando o desenvolvimento está completo;
13. Antipadrões
• Implantar software manualmente;
• Implantar em ambiente similar ao de Produção somente
quando o desenvolvimento está completo;
• Gerência de Configuração manual.
17. 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;
18. 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
19. 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.
23. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
24. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
• Mantenha tudo sobre Controle de Versão;
25. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
• Mantenha tudo sobre Controle de Versão;
• Se é difícil, faça com mais frequência;
26. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
• Mantenha tudo sobre Controle de Versão;
• Se é difícil, faça com mais frequência;
• Qualidade deve estar presente desde o início;
27. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
• Mantenha tudo sobre Controle de Versão;
• Se é difícil, faça com mais frequência;
• Qualidade deve estar presente desde o início;
• Pronto = Versão Entregue;
28. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
• Mantenha tudo sobre Controle de Versão;
• Se é difícil, faça com mais frequência;
• Qualidade deve estar presente desde o início;
• Pronto = Versão Entregue;
• Todos são responsáveis pelo Processo de Entrega;
29. Princípios
• Processo de Confiabilidade e repetitividade de entrega de versão;
• Automatize quase tudo;
• Mantenha tudo sobre Controle de Versão;
• Se é difícil, faça com mais frequência;
• Qualidade deve estar presente desde o início;
• Pronto = Versão Entregue;
• Todos são responsáveis pelo Processo de Entrega;
• Melhoria Contínua.
41. Integração Contínua (Práticas)
• Não faça check-in se o processo de compilação está quebrando;
• Rodar os testes antes de enviar as mudanças ao servidor;
42. Integração Contínua (Práticas)
• Não faça check-in se o processo de compilação está quebrando;
• Rodar os testes antes de enviar as mudanças ao servidor;
• Aguardar a execução de testes antes de continuar;
43. Integração Contínua (Práticas)
• Não faça check-in se o processo de compilação está quebrando;
• Rodar os testes antes de enviar as mudanças ao servidor;
• Aguardar a execução de testes antes de continuar;
• Esteja preparado para voltar a versão anterior;
44. Integração Contínua (Práticas)
• Não faça check-in se o processo de compilação está quebrando;
• Rodar os testes antes de enviar as mudanças ao servidor;
• Aguardar a execução de testes antes de continuar;
• Esteja preparado para voltar a versão anterior;
• Limite o tempo antes de reverter a mudança;
45. Integração Contínua (Práticas)
• Não faça check-in se o processo de compilação está quebrando;
• Rodar os testes antes de enviar as mudanças ao servidor;
• Aguardar a execução de testes antes de continuar;
• Esteja preparado para voltar a versão anterior;
• Limite o tempo antes de reverter a mudança;
• NÃO COMENTE TESTES QUE ESTÃO FALHANDO!!!
46. Integração Contínua (Práticas)
• Não faça check-in se o processo de compilação está quebrando;
• Rodar os testes antes de enviar as mudanças ao servidor;
• Aguardar a execução de testes antes de continuar;
• Esteja preparado para voltar a versão anterior;
• Limite o tempo antes de reverter a mudança;
• NÃO COMENTE TESTES QUE ESTÃO FALHANDO!!!
• TDD.
51. 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.
52. 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.
53. 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.
57. Práticas
● Compile seus binários somente uma vez;
● Faça a implementação da mesma maneira em cada ambiente;
58. Práticas
● Compile seus binários somente uma vez;
● Faça a implementação da mesma maneira em cada ambiente;
● Use Smoke Tests;
59. 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;
60. 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;
61. 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.
65. Como fazer um pipeline?
● Modelar o fluxo de valor;
● Automatizar compilação e implantação;
66. Como fazer um pipeline?
● Modelar o fluxo de valor;
● Automatizar compilação e implantação;
● Automatizar testes unitários e análise de código;
67. Como fazer um pipeline?
● Modelar o fluxo de valor;
● Automatizar compilação e implantação;
● Automatizar testes unitários e análise de código;
● Automatizar testes de aceitação;
68. Como fazer um pipeline?
● Modelar o fluxo de valor;
● Automatizar compilação e implantação;
● Automatizar testes unitários e análise de código;
● Automatizar testes de aceitação;
● Automatizar a entrega.
84. Deploy em INTEGRAÇÃO
● Entrada: Versão para Deploy
○ pegar binário no repositório;
○ executar deploy em Integração;
85. Deploy em INTEGRAÇÃO
● Entrada: Versão para Deploy
○ pegar binário no repositório;
○ executar deploy em Integração;
● Saída: Servidores atualizados
111. Análise de Log Automatizada
● Logs da Aplicação;
● Sumarização do TOP 15 erros que mais ocorreram;
112. 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;
113. 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;
114. 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);
115. 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;
116. 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.
133. Gerência de Dados
● Scritps no Controle de Versão;
● Mudanças incrementais;
134. Gerência de Dados
● Scritps no Controle de Versão;
● Mudanças incrementais;
● Testar as mudanças;
135. Gerência de Dados
● Scritps no Controle de Versão;
● Mudanças incrementais;
● Testar as mudanças;
● Rollback sem perda de dados;
136. Gerência de Dados
● Scritps no Controle de Versão;
● Mudanças incrementais;
● Testar as mudanças;
● Rollback sem perda de dados;
● Desacoplar implantação da aplicação da migração de banco de dados.
143. Alguns Resultados
• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);
• Deploy em qualquer horário;
144. Alguns Resultados
• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);
• Deploy em qualquer horário;
• +120 pipelines em 1 ano;
145. Alguns Resultados
• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);
• Deploy em qualquer horário;
• +120 pipelines em 1 ano;
• Devs fazem Deploy em PRODUÇÃO o/;
146. Alguns Resultados
• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);
• Deploy em qualquer horário;
• +120 pipelines em 1 ano;
• Devs fazem Deploy em PRODUÇÃO o/;
• Redução do tempo de entrega (menos de 1 hora)