Continuous Delivery - versão estendida :)

Post on 12-Jan-2017

426 views 1 download

Transcript of Continuous Delivery - versão estendida :)

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