Post on 16-Jan-2017
Continuous Delivery: entregando software de valor
@samantacicilia
Sobre mimContinuous Delivery
Case da Infoglobo - Jenkins e GoCDResultadosReferências
@samantacicilia
Sobre mim
@samantacicilia
Comunidades <3
Evento TEST DAY 2012 - SP
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)
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
Conceitos Importantes
Conceitos Importantes
• Controle de Versão
Conceitos Importantes
• Controle de Versão
• Integração Contínua
Conceitos Importantes
• Controle de Versão
• Integração Contínua
• Testes Automatizados (unitários, integração e aceitação)
Conceitos Importantes
• Controle de Versão
• Integração Contínua
• Testes Automatizados (unitários, integração e aceitação)
• Testes de Capacidade
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.
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
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
Case
@samantacicilia
124 pipelines
Escalável
Diferentes tecnologias
vs
Estágio de Commit
Estágio de Commit
Estágio de Commit● Entrada: Código
○ compilar projeto;○ executar testes unitários;○ executar Sonar;○ gerar binário;
Estágio de Commit● Entrada: Código
○ compilar projeto;○ executar testes unitários;○ executar Sonar;○ gerar binário;
● Saída: Binários e Relatórios
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
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
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
Promover para STAGING
SMOKE TESTSDEPLOY
Deploy STAGING
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 e propriedades do binário atualizados
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
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
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
Testes de Performance Automatizados
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.
Abrir Coordenação de Mudança Automática
Abrir Coordenação de Mudança Automática
DEPLOY
REGRESSIVOS
ANÁLISE DE LOGS
Deploy em PRODUÇÃO
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 e propriedades do binário atualizados
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
DEPLOY SMOKE TESTS
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;
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
Referências
@samantacicilia
Referências
Referências
Outros Links slideshare.net/stefanteixeira/meetup-devops-carioca-gocd-docker-docker-compose-uma-histria-de-amor-lt3
agiletesters.com.br
meetup.com/pt-BR/Grupo-de-Testes-Carioca
Monografia - https://goo.gl/CE6xzH
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