[uff] continuous delivery: entrega contínua de software de valor
TRANSCRIPT
Continuous Delivery:Entrega Contínua de Software de
Valor
@samantacicilia
“I believe in the power of community”
Evento TEST DAY 2012 - SP
insideoutproject.com.br
O que raios significa Entregar Software?
O que raios significa Entregar Software?
O que raios significa Entregar Software?
O que raios significa Entregar Software?
O que raios significa Entregar Software?
O mega deploy da meia-noite
Falando do Desenvolvimento…
Codificar & Testar & Disponibilizar (Deploy)
Codificar …
• Linguagens;• Frameworks;• Técnicas;• Ferramentas;
Testar…
Disponibilizar…
Como fazer tudo isso certo e rápido?
Exemplos
Exemplos● Google: 8 minutos entre DEV e PRD● Facebook: 2 vezes por dia● Linkedin: 30 minutos entre DEV e PRD● Etsy: 30 deploys por dia feitos por 200+ pessoas;
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
Princípios● Criar um processo de confiabilidade e repetitividade de entrega de
versão
Princípios● Criar um processo de confiabilidade e repetitividade de entrega de
versão● Automatize quase tudo
Princípios● Criar um processo de confiabilidade e repetitividade de entrega de
versão● Automatize quase tudo● Mantenha tudo sob controle de versão
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
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
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
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
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
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
Pipeline na Prática
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;○ armazenar no repositório (binário + propriedades).
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
Deploy em INTEGRAÇÃO
Deploy em INTEGRAÇÃO
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.
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
Deploy STAGING
Deploy STAGING
Deploy em STAGING
Deploy em STAGING
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.
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 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;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Produção;○ atualizar propriedades do binário.
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
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;• 90 pipelines em 1 ano;
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;• Devs fazendo Deploy em PRODUÇÃO (pelo Jenkins, é claro) \o/;
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;• Devs fazem Deploy em PRODUÇÃO \o/;• Tempo de entrega
Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;• Devs fazem Deploy em PRODUÇÃO \o/;• Tempo de entrega (2 horas).
Referências
Referências
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]