Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas. Processos de desenvolvimento são muitas vezes burocráticos. O desenvolvimento ágil veio para nos mostrar que a forma que pensávamos em software podia ser melhorada. A Entrega Contínua veio para potencializar a entrega desde a primeira linha de código até produção. Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas: Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
4. 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:
5. 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
7. 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
8. 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
9. 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;
10. 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.
12. 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
14. 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
19. 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
25. 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
26. Globalcode – Open4education
Desafios
• Acabar com os mitos:
o Testes “atrasam” o processo
o Custo da Qualidade é alto demais
o “Só está quebrando um teste, não precisa investigar”
• TDD (Desenvolvimento Orientado a Testes)
• DevOps
• Agilidade na Organização
27. 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
28. 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
29. 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/