alcançando qualidade de software através de entrega contínua
TRANSCRIPT
Globalcode – Open4education
Sobre a Infoglobo
• Focada no Impresso em processo de migração para o digital;
• Empresa sem Cultura Ágil (apenas em TI)
• Alguns produtos:
• Tecnologias e Plataformas:
Globalcode – Open4education
Cenário Anterior:
• Execução de Testes Unitários dependia de “boa vontade”
• Validação (manuais e automatizadas) das funcionalidades levando mais de 2 dias
• Correria para corrigir testes quebrando (ou nem corrigir)
• Deploys feitos em PRD de forma manual pela equipe de INFRA
• Demora de até 1 mês para colocar uma mudança em PRD
• Necessidade de uma Auditoria antes de uma versão estar disponível para PRD
• Erros em log eram ignorados
Globalcode – Open4education
Benefícios
● Autonomia aos times● Reduzir erros● Reduzir estresse● Flexibilidade de Implantação● Prática leva a perfeição● Todo check-in é uma versão em potencial
Globalcode – Open4education
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
Globalcode – Open4education
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;
Globalcode – Open4education
Pipeline de Implantação
● Manifestação automatizada do processo de levar o software do controle de versão até os usuários.
● 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.
Globalcode – Open4education
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
Globalcode – Open4education
Nosso Pipeline
Commit Stage
Deploy DSV
Smoke Tests
Deploy QLT
Testes Funcionais
Testes de Performance
Análise de Log
Deploy PRD
Globalcode – Open4education
Estágio de Commit
● Entrada para o Pipeline de Implantação● Feedback para os devs● Entrada: Código - Saída: Binários e Relatórios● CUIDADO: poucos testes e qualidade de código ruim
Globalcode – Open4education
Deploys
● Feitos da mesma maneira em qualquer ambiente● Dependem da aprovação do estágio anterior
Globalcode – Open4education
Testes de Performance Automatizados
● Scritps do JMeter● Cenários pré-definidos● Limite máximo aceitável de tempo
Globalcode – Open4education
Análise de Log
● 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 PRD)● Muito importante para os produtos mais antigos● Preocupação de INFRA
Globalcode – Open4education
Já implementados
• 60 pipelines• TIBCO• Aplicações Tomcat (Java & Grails)• Apache• Varnish• Solr
Globalcode – Open4education
Resultados
• Deploy em PRD NÃO é mais um evento temido =D• Facilidade na identificação da causa de erros em PRD• Replicabilidade do Processo• Feedback • Validação diluída no processo, não precisamos mais de vários dias para os testes• Análise de Log parte do processo de todos os produtos• Deploys automatizados em PRD feitos por Atendimento Especializado (utilizando
Jenkins)• Não é mais necessária auditoria antes dos Deploys em PRD• Deploy em PRD pode ser feito a qualquer momento• Menor ocorrência de erros gerados por intervenção manual
Globalcode – Open4education
Desafios
• Acabar com os mitos:o Testes “atrasam” o processoo Custo da Qualidade é alto demaiso “Só está quebrando um teste, não precisa investigar”
• TDD (Desenvolvimento Orientado a Testes)• DevOps• Agilidade na Organização
Globalcode – Open4education
Próxima fase
• Abertura de Solicitações de Deploy automatizada pelo Jenkins• Desenvolvedores fazendo Deploys em PRD• Projetos desenvolvidos por Terceiros no Pipeline• Levar o conhecimento de Entrega Contínua para todos os times• Implementar Pipeline para Mobile
Globalcode – Open4education
Referências
● http://manifestoagil.com.br/● The Facebook Release Process● Continuous Delivery at Google● The Evolution of Continuous Delivery at Scale @ Linkedin● Deploying the Netflix API
Globalcode – Open4education
Treinamento em Automação de Testes:• Selenium Webdriver• Cucumber• TDD• BDD• Jenkins• Page Objects• Performance
Turmas no Rio de Janeiro ou in Company
http://rtstreinamentos.com.br/