View
426
Download
1
Category
Preview:
Citation preview
Continuous Delivery: entregando software de
valor(versão estendida)
@samantacicilia
Sobre mimContinuous Delivery
Case da Infoglobo – GoCDOutros Tópicos
ResultadosReferências
@samantacicilia
Sobre mim
@samantacicilia
insideoutproject.com.br
Mulheres Palestrantes
http://insideoutproject.com.br/mulheres-palestrantes
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)
Antipadrões
@samantacicilia
Antipadrões
Antipadrões• Implantar software manualmente;
Antipadrões• Implantar software manualmente;• Implantar em ambiente similar ao de Produção
somente quando o desenvolvimento está completo;
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.
Continuous Delivery
@samantacicilia
Objetivos
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;
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
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.
Todo check-in é uma versão em potencial
Princípios
Princípios• Processo de Confiabilidade e repetitividade de entrega de versão;
Princípios• Processo de Confiabilidade e repetitividade de entrega de versão;• Automatize quase tudo;
Princípios• Processo de Confiabilidade e repetitividade de entrega de versão;• Automatize quase tudo;• Mantenha tudo sobre Controle de Versão;
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;
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;
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;
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;
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.
Conceitos Importantes
@samantacicilia
Gerência de Configuração
Gerência de Configuração• Controle de Versão;
Gerência de Configuração• Controle de Versão;• Gerenciar Dependências (Bibliotecas &
Componentes);
Gerência de Configuração• Controle de Versão;• Gerenciar Dependências (Bibliotecas &
Componentes);• Gerenciar Configuração de Software;
Gerência de Configuração• Controle de Versão;• Gerenciar Dependências (Bibliotecas &
Componentes);• Gerenciar Configuração de Software;• Gerenciar Ambientes.
Integração Contínua• Check-ins regulares;
Integração Contínua• Check-ins regulares;• Conjunto de Testes Automatizados;
Integração Contínua• Check-ins regulares;• Conjunto de Testes Automatizados;• Processo de Compilação e Testes curto.
Integração Contínua (Práticas)
Integração Contínua (Práticas)• Não faça check-in se o processo de compilação está quebrando;
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;
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;
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;
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;
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!!!
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.
Estratégia de Testes
Estratégia de Testes
Estratégia de Testes
Pipeline de Implantação
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.
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.
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.
Práticas
Práticas● Compile seus binários somente uma vez;
Práticas● Compile seus binários somente uma vez;● Faça a implementação da mesma maneira em cada ambiente;
Práticas● Compile seus binários somente uma vez;● Faça a implementação da mesma maneira em cada ambiente;● Use Smoke Tests;
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;
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;
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.
Como fazer um pipeline?
@samantacicilia
Como fazer um pipeline?
Como fazer um pipeline?● Modelar o fluxo de valor;
Como fazer um pipeline?● Modelar o fluxo de valor;● Automatizar compilação e implantação;
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;
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;
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.
Case
@samantacicilia
124 pipelines
Escalável
Diferentes tecnologias
Estágio de Commit
Estágio de Commit
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;
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
SONARTESTES UNITÁRIOS
ARTEFATO
Deploy em INTEGRAÇÃO
Deploy em INTEGRAÇÃO
Deploy em INTEGRAÇÃO● Entrada: Versão para Deploy
○ pegar binário no repositório;○ executar deploy em Integração;
Deploy em INTEGRAÇÃO● Entrada: Versão para Deploy
○ pegar binário no repositório;○ executar deploy em Integração;
● Saída: Servidores atualizados
Promover para STAGING
SMOKE TESTSDEPLOY
Deploy STAGING
Deploy em STAGING
Deploy em STAGING
Deploy em STAGING● Entrada: Versão para Deploy
○ pegar binário no repositório;○ executar deploy em Staging;
Deploy em STAGING● Entrada: Versão para Deploy
○ pegar binário no repositório;○ executar deploy em Staging;
● Saída: Servidores atualizados
Promover para PRODUÇÃO
Promover para PRODUÇÃO
Promover para PRODUÇÃO
Promover para PRODUÇÃO
Promover para PRODUÇÃO
Promover para PRODUÇÃO
Promover para PRODUÇÃO
Testes de Performance Automatizados
● Scritps do Jmeter;
Testes de Performance Automatizados
● Scritps do Jmeter;● Cenários pré-definidos;
Testes de Performance Automatizados
● Scritps do Jmeter;● Cenários pré-definidos;● Limite máximo aceitável de tempo.
Testes de Performance Automatizados
● Scritps do Jmeter;● Cenários pré-definidos;● Limite máximo aceitável de tempo.
Testes de Performance Automatizados
DEPLOY
REGRESSIVOS
TESTES DE PERFORMANCE
Análise de Log Automatizada
Análise de Log Automatizada● Logs da Aplicação;
Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;
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;
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;
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);
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;
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.
Análise de Log Automatizada
ANÁLISE DE LOG
Abrir Coordenação de Mudança Automática
Deploy em PRODUÇÃO
Deploy em PRODUÇÃO
Deploy em PRODUÇÃO
Deploy em PRODUÇÃO● Entrada: Versão para Deploy
○ pegar binário no repositório;○ executar deploy em Produção;
Deploy em PRODUÇÃO● Entrada: Versão para Deploy
○ pegar binário no repositório;○ executar deploy em Produção;
● Saída: Servidores atualizados
DEPLOYHEALTH CHECK
Demonstração
@samantacicilia
Outros Tópicos
@samantacicilia
Gerência de Dados
Gerência de Dados● Scritps no Controle de Versão;
Gerência de Dados● Scritps no Controle de Versão;● Mudanças incrementais;
Gerência de Dados● Scritps no Controle de Versão;● Mudanças incrementais;● Testar as mudanças;
Gerência de Dados● Scritps no Controle de Versão;● Mudanças incrementais;● Testar as mudanças;● Rollback sem perda de dados;
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.
Gerência de Dados
Estratégias de Implantação● Blue-Green
Estratégias de Implantação● Canário
Resultados
@samantacicilia
Alguns Resultados
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• +120 pipelines em 1 ano;
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/;
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)
Referências
@samantacicilia
Referências
Referências
Referências
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
Contatos➔ testedesoftware.com➔ rtstreinamentos.com.br➔ medium.com/@samantacicilia
➔ Linkedin: Samanta Cicilia➔ Twitter: @samantacicilia➔ Slideshare: pt.slideshare.net/samantacicilia/➔ Email: samanta.souza@infoglobo.com.br➔ Email: samycici@gmail.com
Recommended