[DevOps Carioca] Continuous Delivery

Post on 16-Jan-2017

875 views 2 download

Transcript of [DevOps Carioca] Continuous Delivery

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