Princípios de entrega contínua
Descubra os princípios básicos por trás da entrega contínua com esses guias de introdução.
Entrega contínua (CD) é um conjunto de práticas recomendadas ágeis e organizacionais anteriores bem-sucedidas. A CD direciona uma empresa na criação de um processo simplificado e automatizado de lançamento de software. No centro desse processo há um ciclo de feedback iterativo. O ciclo de feedback gira em torno da entrega de software para o usuário final o mais rápido possível, aprendendo com sua experiência prática e, em seguida, incorporando esse feedback na próxima versão.
Integração contínua vs. entrega contínua vs. implementação contínua
Oferecer serviços contínuos requer o alinhamento da estrutura, dos valores e das ferramentas da equipe para garantir que a excelência operacional se torne uma competência central. Leia o artigo
Valor de negócios da entrega contínua
O valor comercial da entrega contínua não se limita às empresas queridinhas da tecnologia. A implementação contínua melhora a velocidade, produtividade e sustentabilidade das equipes de desenvolvimento de software. Leia o artigo
Mapeamento de fluxo de valor
O mapeamento dos fluxos de valor é uma técnica de análise que pode ajudar a otimizar o pipeline de entrega contínua. Saiba como e por que essa técnica é usada. Leia o artigo
CD é uma metodologia inclusiva para toda a organização que reúne equipes que não são de engenharia, como design, produto e marketing. A CD incentiva os desenvolvedores a se concentrarem na entrega do produto para o usuário final, ao passo que os ambientes que não são de CD podem incentivar o comportamento "por cima do muro", no qual passar pela equipe de QA se torna a principal experiência do usuário com a qual os desenvolvedores estão preocupados. As próximas seções discutem princípios específicos que estabelecem as bases para fluxos de trabalho de CD.
Processo confiável repetível
Os processos organizacionais têm seu próprio ciclo de vida de desenvolvimento. No geral, eles começam como checklists manuais ou “esquemas táticos”, que são listas de tarefas de execução manual. Mais tarde, eles podem ser automatizados com ferramentas de software e scripts. A confirmação desses esquemas táticos em scripts de software garante que eles sejam repetíveis. Se a checklist precisar ser executada de novo, um membro da equipe vai poder executar o script. A confiabilidade é obtida quando há a execução consistente desses scripts de esquema tático entre ambientes. Por exemplo, o esquema tático para implementar código em um ambiente de desenvolvimento ou staging deve espelhar o ambiente de produção com a maior precisão possível. Essa consistência confiável entre ambientes e execuções elimina toda uma categoria de bugs de consistência.
Automatize tudo
A automação é um valor fundamental da CD. O tempo humano é caro e deve ser gasto com cautela em exercícios criativos, em vez de na execução de tarefas tediosas de esquemas táticos. Um processo manual não é de fato repetível e confiável até que tenha sido confirmado no código e possa ser executado automaticamente sob demanda. Tarefas automatizadas podem ser compostas juntas para criar mais níveis de automação. Automatize o máximo possível: testes, lançamentos, alterações de configuração e muito mais.
Controle de versão
Um pilar do CD, o controle de versão é uma necessidade absoluta para qualquer projeto de software sério. O controle de versão permite que uma equipe de desenvolvedores colabore de modo eficiente em uma base de código compartilhada. O Git é o sistema de controle de versão mais usado e um ótimo companheiro para CD. O controle de versão permite a funcionalidade “desfazer”, permitindo reversões para candidatos à versão anterior. Além do código, a configuração, scripts, bancos de dados e a documentação devem ser controlados por versão para rastrear edições ao longo da história.
Construção em qualidade
No CD, a qualidade não é uma reflexão tardia que é atribuída à equipe de controle de qualidade. A qualidade está presente em cada etapa do pipeline de lançamento. O ciclo de feedback central da CD é um reexame constante da qualidade que está sendo entregue aos usuários finais. Novas funções são fornecidos com conjuntos de testes automatizados que garantem que o novo código esteja livre de erros e atendendo às expectativas de qualidade. O planejamento do projeto para novos lançamentos de funções deve incluir considerações sobre análise, monitoramento de desempenho e tarefas de instrumentação de teste automatizado.
Faça primeiro as partes mais difíceis
Tarefas dolorosas, demoradas ou propensas a erros vão se acumulando ao longo do tempo. Tarefas dolorosas devem ser tratadas o mais rápido possível para evitar uma perda crescente de energia. Imagine uma tarefa dolorosa que leva 20 minutos para ser executada e é executada 5 vezes por semana. A soma disso é de 100 minutos dolorosos por semana e cerca de 400 minutos dolorosos por mês e assim por diante. Imagine se você pudesse resolver e otimizar essa tarefa para evitar o tempo doloroso por completo. Claro que seria uma vitória.
“Faça primeiro as partes mais difíceis” também é um exercício para ajudar a identificar os pontos fracos no processo organizacional. Se houver uma tarefa que é procrastinada ou ativamente evitada, é um indicador de que pode ser uma área de melhoria e deve ser ativamente perseguida. As equipes devem tocar regularmente nas partes difíceis para se familiarizar e mantê-las na vanguarda das conversas de planejamento.
Todo mundo é responsável
Convém que toda a organização seja focada e incentivada para garantir que a entrega do usuário final seja a mais alta qualidade possível. Os gerentes de produto devem planejar com atenção à implementação e garantia de qualidade. A equipe de segurança deve estar ativamente envolvida no processo de lançamento. Os membros da equipe de controle de qualidade devem testar ambientes de desenvolvimento e staging com tanto rigor quanto fariam na produção para detectar todas as falhas antes da eventual liberação. Os desenvolvedores devem estar planejando de modo ativo a liberação da produção.
“Concluído” significa liberado
As empresas de software estão no setor para entregar software aos usuários finais. Não há negócios se um aplicativo funcionar apenas na máquina de um desenvolvedor. “Funciona para mim” é um sinal de alerta comum que indica uma falta de consciência para o objetivo geral dos negócios e falta de empatia com o usuário final. A CD é inteiramente focada no envio de software para o cliente final. Além disso, "feito" não significa quando a contribuição individual de um membro da equipe está concluída, mas, sim, quando toda a contribuição da equipe está completa.
Implementação contínua
Importância da entrega contínua
Por sorte, as seções anteriores começaram a ilustrar as agregações de valor de alto nível da CD. Em um nível macro, a CD promove eficiência de execução, comunicação entre equipes, adequação ao mercado de produtos, agilidade e transparência organizacional geral.
Em um nível micro, a CD pode ser instrumentada com medições de métricas de rastreamento explícitas. Algumas métricas valiosas de CD podem ser:
- Tempo da fase de design de novas funções até o lançamento da produção.
- Quantos bugs de produção foram encontrados pelos usuários.
- Nível de engajamento do usuário em novas funções.
- A frequência de novos lançamentos de funções
Além disso, a CD pode ser usada como base para criar métricas de desempenho organizacional, como KPIs. Por fim, a receita empresarial e a saúde financeira são ótimas maneiras de medir o impacto das práticas organizacionais.
Como começar a usar a entrega contínua
Com uma compreensão dos benefícios e filosofia da CD, os próximos passos são implementá-la. Um bom ponto de partida é a implementação contínua. Integração contínua ou CI é a precursora da CD. A CI se concentra em automatizar o fluxo de trabalho da liberação de código. Ela faz essa automação por meio do uso de ferramentas automatizadas de teste de código e tarefas de garantia de qualidade. Uma vez que o CI está no lugar, os processos de CD podem ser construídos sobre ele para implementar código para usuários finais e desenvolver um ciclo de feedback que vai orientar versões futuras.
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.