Atualmente um dos grandes problemas enfrentados por profissionais que atuam com desenvolvimento de software é entregar ao cliente o quanto antes o sistema desenvolvido ou alterações e correções necessárias após estar em produção. Neste contexto, foi criado o conceito de entrega contínua que segundo Fowler (2013), é uma disciplina de desenvolvimento de software na qual se constrói o software de maneira que ele possa ser liberado para produção a qualquer momento.
Este conceito vem mudando o processo de desenvolvimento e entrega de software e sendo adotado, cada vez por mais organizações, que além de ter que alterar sua cultura interna também devem utilizar de diversas ferramentas para que o processo fique confiável e automatizado.
A definição dessas ferramentas pode ser um trabalho árduo, pois existem inúmeras opções e é necessário experiência profissional prévia para garantir que o processo seja implementado de maneira correta e de acordo com o exigido pela organização. Diante disso, o objetivo desta série de posts é abordar os conceitos e práticas de entrega contínua e a escolha genérica dessas ferramentas, com foco em open source e multi-linguagem, em um processo padrão que pode ser utilizado em qualquer projeto de software, servindo como referencial para empresas e profissionais.
O principal referencial utilizado foi o livro “Entrega Contínua. Como Entregar Software de Forma Rápida e Confiável” que pode ser adquirido aqui. As demais referências utilizadas e lista de ferramentas utilizadas estão neste link.
Entrega Contínua de Software
Segundo Fowler (2013), a entrega contínua às vezes é confundida com a implantação contínua:
A implantação contínua significa que cada mudança passa pelo pipeline e é automaticamente colocada em produção, resultando em muitas implantações em produção todos os dias. A entrega contínua significa que você pode fazer implantações frequentes, mas pode optar por não fazê-lo, geralmente devido às empresas que preferem uma taxa de implantação mais baixa. Para fazer a implantação contínua, você deve estar fazendo entrega contínua. (FOWLER, 2013).
Para o autor, a entrega contínua só é possível integrando continuamente o software:
Você consegue entrega contínua integrando continuamente o software feito pela equipe de desenvolvimento, criando executáveis e executando testes automatizados nesses executáveis para detectar problemas. Além disso, você implanta os executáveis em ambientes cada vez mais similares ao de produção para garantir que o software funcionará na produção (FOWLER, 2013).
Fowler (2013) afirma ainda que a adoção de entrega contínua reduz o risco de problemas na implantação, “uma vez que você está implantando mudanças menores, há menos para dar errado e é mais fácil corrigir se um problema aparecer”.
De acordo com Humble e Farley (2014) há diversos benefícios além da redução de erros. Entre eles, dar autonomia às equipes, reduzir o estresse, oferecer flexibilidade na implantação. “O principal benefício é que ela cria um processo de entrega confiável, previsível e passível de repetição, que, por sua vez, gera grandes reduções no tempo de ciclo e entrega novas funcionalidades e correções aos usuários rapidamente” (HUMBLE; FARLEY, 2014).
Para implantar a entrega contínua, Fowler (2013) afirma que é necessário “uma relação de trabalho estreita e colaborativa entre todos envolvidos na entrega” e “automatização de todas as partes possíveis do processo”.
Assim, é possível verificar a eficácia da implantação de um processo de entrega contínua quando:
Seu software é frequentemente implantado ao longo de seu ciclo de vida; sua equipe prioriza manter o software implantável ao trabalhar em novos recursos; qualquer um pode obter feedback rápido e automatizado sobre seus sistemas sempre que alguém faz uma mudança neles; você pode executar implantações com um clique de um botão de qualquer versão do software para qualquer ambiente(FOWLER, 2013).
Desta forma, a entrega contínua fornece padrões para facilitar e melhorar a qualidade de entrega de software para o cliente.
O próximo post define quais são os pré-requisitos para implantar um processo de entrega contínua. Acesse aqui.
Parabéns pelo iniciativa e conteúdo.
CurtirCurtir