Upload
samanta-cicilia
View
421
Download
0
Embed Size (px)
Citation preview
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)
Exemplos● Google: 8 minutos entre DEV e PRD● Facebook: 2 vezes por dia● Linkedin: 30 minutos entre DEV e PRD
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;
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• 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● 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
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● 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
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● 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
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
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.
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.
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• 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 fazem Deploy em PRODUÇÃO \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).
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]