153
Continuous Delivery: entregando software de valor (versão estendida) @samantacicil ia

Continuous Delivery - versão estendida :)

Embed Size (px)

Citation preview

Page 1: Continuous Delivery - versão estendida :)

Continuous Delivery: entregando software de

valor(versão estendida)

@samantacicilia

Page 2: Continuous Delivery - versão estendida :)

Sobre mimContinuous Delivery

Case da Infoglobo – GoCDOutros Tópicos

ResultadosReferências

@samantacicilia

Page 3: Continuous Delivery - versão estendida :)

Sobre mim

@samantacicilia

Page 4: Continuous Delivery - versão estendida :)
Page 5: Continuous Delivery - versão estendida :)

insideoutproject.com.br

Page 6: Continuous Delivery - versão estendida :)

Mulheres Palestrantes

http://insideoutproject.com.br/mulheres-palestrantes

Page 7: Continuous Delivery - versão estendida :)
Page 8: Continuous Delivery - versão estendida :)

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)

Page 9: Continuous Delivery - versão estendida :)

Antipadrões

@samantacicilia

Page 10: Continuous Delivery - versão estendida :)

Antipadrões

Page 11: Continuous Delivery - versão estendida :)

Antipadrões• Implantar software manualmente;

Page 12: Continuous Delivery - versão estendida :)

Antipadrões• Implantar software manualmente;• Implantar em ambiente similar ao de Produção

somente quando o desenvolvimento está completo;

Page 13: Continuous Delivery - versão estendida :)

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.

Page 14: Continuous Delivery - versão estendida :)

Continuous Delivery

@samantacicilia

Page 15: Continuous Delivery - versão estendida :)
Page 16: Continuous Delivery - versão estendida :)

Objetivos

Page 17: Continuous Delivery - versão estendida :)

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;

Page 18: Continuous Delivery - versão estendida :)

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

Page 19: Continuous Delivery - versão estendida :)

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.

Page 20: Continuous Delivery - versão estendida :)

Todo check-in é uma versão em potencial

Page 21: Continuous Delivery - versão estendida :)

Princípios

Page 22: Continuous Delivery - versão estendida :)

Princípios• Processo de Confiabilidade e repetitividade de entrega de versão;

Page 23: Continuous Delivery - versão estendida :)

Princípios• Processo de Confiabilidade e repetitividade de entrega de versão;• Automatize quase tudo;

Page 24: Continuous Delivery - versão estendida :)

Princípios• Processo de Confiabilidade e repetitividade de entrega de versão;• Automatize quase tudo;• Mantenha tudo sobre Controle de Versão;

Page 25: Continuous Delivery - versão estendida :)

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;

Page 26: Continuous Delivery - versão estendida :)

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;

Page 27: Continuous Delivery - versão estendida :)

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;

Page 28: Continuous Delivery - versão estendida :)

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;

Page 29: Continuous Delivery - versão estendida :)

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.

Page 30: Continuous Delivery - versão estendida :)

Conceitos Importantes

@samantacicilia

Page 31: Continuous Delivery - versão estendida :)

Gerência de Configuração

Page 32: Continuous Delivery - versão estendida :)

Gerência de Configuração• Controle de Versão;

Page 33: Continuous Delivery - versão estendida :)

Gerência de Configuração• Controle de Versão;• Gerenciar Dependências (Bibliotecas &

Componentes);

Page 34: Continuous Delivery - versão estendida :)

Gerência de Configuração• Controle de Versão;• Gerenciar Dependências (Bibliotecas &

Componentes);• Gerenciar Configuração de Software;

Page 35: Continuous Delivery - versão estendida :)

Gerência de Configuração• Controle de Versão;• Gerenciar Dependências (Bibliotecas &

Componentes);• Gerenciar Configuração de Software;• Gerenciar Ambientes.

Page 36: Continuous Delivery - versão estendida :)

Integração Contínua• Check-ins regulares;

Page 37: Continuous Delivery - versão estendida :)

Integração Contínua• Check-ins regulares;• Conjunto de Testes Automatizados;

Page 38: Continuous Delivery - versão estendida :)

Integração Contínua• Check-ins regulares;• Conjunto de Testes Automatizados;• Processo de Compilação e Testes curto.

Page 39: Continuous Delivery - versão estendida :)

Integração Contínua (Práticas)

Page 40: Continuous Delivery - versão estendida :)

Integração Contínua (Práticas)• Não faça check-in se o processo de compilação está quebrando;

Page 41: Continuous Delivery - versão estendida :)

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;

Page 42: Continuous Delivery - versão estendida :)

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;

Page 43: Continuous Delivery - versão estendida :)

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;

Page 44: Continuous Delivery - versão estendida :)

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;

Page 45: Continuous Delivery - versão estendida :)

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!!!

Page 46: Continuous Delivery - versão estendida :)

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.

Page 47: Continuous Delivery - versão estendida :)

Estratégia de Testes

Page 48: Continuous Delivery - versão estendida :)

Estratégia de Testes

Page 49: Continuous Delivery - versão estendida :)

Estratégia de Testes

Page 50: Continuous Delivery - versão estendida :)

Pipeline de Implantação

Page 51: Continuous Delivery - versão estendida :)

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.

Page 52: Continuous Delivery - versão estendida :)

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.

Page 53: Continuous Delivery - versão estendida :)

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.

Page 54: Continuous Delivery - versão estendida :)
Page 55: Continuous Delivery - versão estendida :)

Práticas

Page 56: Continuous Delivery - versão estendida :)

Práticas● Compile seus binários somente uma vez;

Page 57: Continuous Delivery - versão estendida :)

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

Page 58: Continuous Delivery - versão estendida :)

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

Page 59: Continuous Delivery - versão estendida :)

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;

Page 60: Continuous Delivery - versão estendida :)

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;

Page 61: Continuous Delivery - versão estendida :)

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.

Page 62: Continuous Delivery - versão estendida :)

Como fazer um pipeline?

@samantacicilia

Page 63: Continuous Delivery - versão estendida :)

Como fazer um pipeline?

Page 64: Continuous Delivery - versão estendida :)

Como fazer um pipeline?● Modelar o fluxo de valor;

Page 65: Continuous Delivery - versão estendida :)

Como fazer um pipeline?● Modelar o fluxo de valor;● Automatizar compilação e implantação;

Page 66: Continuous Delivery - versão estendida :)

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;

Page 67: Continuous Delivery - versão estendida :)

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;

Page 68: Continuous Delivery - versão estendida :)

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.

Page 69: Continuous Delivery - versão estendida :)

Case

@samantacicilia

Page 70: Continuous Delivery - versão estendida :)

124 pipelines

Page 71: Continuous Delivery - versão estendida :)

Escalável

Page 72: Continuous Delivery - versão estendida :)

Diferentes tecnologias

Page 73: Continuous Delivery - versão estendida :)
Page 74: Continuous Delivery - versão estendida :)
Page 75: Continuous Delivery - versão estendida :)
Page 76: Continuous Delivery - versão estendida :)

Estágio de Commit

Page 77: Continuous Delivery - versão estendida :)

Estágio de Commit

Page 78: Continuous Delivery - versão estendida :)

Estágio de Commit● Entrada: Código

○ compilar projeto;○ executar testes unitários;○ executar Análise Estática de Código (Sonar);○ gerar binário;

Page 79: Continuous Delivery - versão estendida :)

Estágio de Commit● Entrada: Código

○ compilar projeto;○ executar testes unitários;○ executar Análise Estática de Código (Sonar);○ gerar binário;

● Saída: Binários e Relatórios

Page 80: Continuous Delivery - versão estendida :)

SONARTESTES UNITÁRIOS

ARTEFATO

Page 81: Continuous Delivery - versão estendida :)
Page 82: Continuous Delivery - versão estendida :)

Deploy em INTEGRAÇÃO

Page 83: Continuous Delivery - versão estendida :)

Deploy em INTEGRAÇÃO

Page 84: Continuous Delivery - versão estendida :)

Deploy em INTEGRAÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ executar deploy em Integração;

Page 85: Continuous Delivery - versão estendida :)

Deploy em INTEGRAÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ executar deploy em Integração;

● Saída: Servidores atualizados

Page 86: Continuous Delivery - versão estendida :)
Page 87: Continuous Delivery - versão estendida :)

Promover para STAGING

Page 88: Continuous Delivery - versão estendida :)

SMOKE TESTSDEPLOY

Page 89: Continuous Delivery - versão estendida :)
Page 90: Continuous Delivery - versão estendida :)

Deploy STAGING

Page 91: Continuous Delivery - versão estendida :)

Deploy em STAGING

Page 92: Continuous Delivery - versão estendida :)

Deploy em STAGING

Page 93: Continuous Delivery - versão estendida :)

Deploy em STAGING● Entrada: Versão para Deploy

○ pegar binário no repositório;○ executar deploy em Staging;

Page 94: Continuous Delivery - versão estendida :)

Deploy em STAGING● Entrada: Versão para Deploy

○ pegar binário no repositório;○ executar deploy em Staging;

● Saída: Servidores atualizados

Page 95: Continuous Delivery - versão estendida :)
Page 96: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 97: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 98: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 99: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 100: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 101: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 102: Continuous Delivery - versão estendida :)

Promover para PRODUÇÃO

Page 103: Continuous Delivery - versão estendida :)

Testes de Performance Automatizados

Page 104: Continuous Delivery - versão estendida :)

● Scritps do Jmeter;

Testes de Performance Automatizados

Page 105: Continuous Delivery - versão estendida :)

● Scritps do Jmeter;● Cenários pré-definidos;

Testes de Performance Automatizados

Page 106: Continuous Delivery - versão estendida :)

● Scritps do Jmeter;● Cenários pré-definidos;● Limite máximo aceitável de tempo.

Testes de Performance Automatizados

Page 107: Continuous Delivery - versão estendida :)

● Scritps do Jmeter;● Cenários pré-definidos;● Limite máximo aceitável de tempo.

Testes de Performance Automatizados

Page 108: Continuous Delivery - versão estendida :)

DEPLOY

REGRESSIVOS

TESTES DE PERFORMANCE

Page 109: Continuous Delivery - versão estendida :)

Análise de Log Automatizada

Page 110: Continuous Delivery - versão estendida :)

Análise de Log Automatizada● Logs da Aplicação;

Page 111: Continuous Delivery - versão estendida :)

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;

Page 112: Continuous Delivery - versão estendida :)

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;

Page 113: Continuous Delivery - versão estendida :)

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;

Page 114: Continuous Delivery - versão estendida :)

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);

Page 115: Continuous Delivery - versão estendida :)

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;

Page 116: Continuous Delivery - versão estendida :)

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.

Page 117: Continuous Delivery - versão estendida :)

Análise de Log Automatizada

Page 118: Continuous Delivery - versão estendida :)

ANÁLISE DE LOG

Page 119: Continuous Delivery - versão estendida :)

Abrir Coordenação de Mudança Automática

Page 120: Continuous Delivery - versão estendida :)
Page 121: Continuous Delivery - versão estendida :)
Page 122: Continuous Delivery - versão estendida :)

Deploy em PRODUÇÃO

Page 123: Continuous Delivery - versão estendida :)

Deploy em PRODUÇÃO

Page 124: Continuous Delivery - versão estendida :)

Deploy em PRODUÇÃO

Page 125: Continuous Delivery - versão estendida :)

Deploy em PRODUÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ executar deploy em Produção;

Page 126: Continuous Delivery - versão estendida :)

Deploy em PRODUÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ executar deploy em Produção;

● Saída: Servidores atualizados

Page 127: Continuous Delivery - versão estendida :)

DEPLOYHEALTH CHECK

Page 128: Continuous Delivery - versão estendida :)
Page 129: Continuous Delivery - versão estendida :)

Demonstração

@samantacicilia

Page 130: Continuous Delivery - versão estendida :)

Outros Tópicos

@samantacicilia

Page 131: Continuous Delivery - versão estendida :)

Gerência de Dados

Page 132: Continuous Delivery - versão estendida :)

Gerência de Dados● Scritps no Controle de Versão;

Page 133: Continuous Delivery - versão estendida :)

Gerência de Dados● Scritps no Controle de Versão;● Mudanças incrementais;

Page 134: Continuous Delivery - versão estendida :)

Gerência de Dados● Scritps no Controle de Versão;● Mudanças incrementais;● Testar as mudanças;

Page 135: Continuous Delivery - versão estendida :)

Gerência de Dados● Scritps no Controle de Versão;● Mudanças incrementais;● Testar as mudanças;● Rollback sem perda de dados;

Page 136: Continuous Delivery - versão estendida :)

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.

Page 137: Continuous Delivery - versão estendida :)

Gerência de Dados

Page 138: Continuous Delivery - versão estendida :)

Estratégias de Implantação● Blue-Green

Page 139: Continuous Delivery - versão estendida :)

Estratégias de Implantação● Canário

Page 140: Continuous Delivery - versão estendida :)

Resultados

@samantacicilia

Page 141: Continuous Delivery - versão estendida :)

Alguns Resultados

Page 142: Continuous Delivery - versão estendida :)

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);

Page 143: Continuous Delivery - versão estendida :)

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;

Page 144: Continuous Delivery - versão estendida :)

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

Page 145: Continuous Delivery - versão estendida :)

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/;

Page 146: Continuous Delivery - versão estendida :)

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)

Page 147: Continuous Delivery - versão estendida :)

Referências

@samantacicilia

Page 148: Continuous Delivery - versão estendida :)

Referências

Page 149: Continuous Delivery - versão estendida :)

Referências

Page 150: Continuous Delivery - versão estendida :)

Referências

Page 151: Continuous Delivery - versão estendida :)

Outros Links agiletesters.com.br

meetup.com/pt-BR/Grupo-de-Testes-Carioca

dgmorales.info/talks/cm-pas/#/

agiletesters.com.br/topic/457/slides-e-fotos-do-agile-testers-conference

Monografia - https://goo.gl/CE6xzH

Notas: http://testedesoftware.com/continuous-delivery/563

Page 152: Continuous Delivery - versão estendida :)
Page 153: Continuous Delivery - versão estendida :)

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]