Processo de Entrega Contínua de Sistemas

Você é um desenvolvedor de sistemas? Arquiteto de Software, ou Analista de Qualidade ou Gerente de Desenvolvimento de Software? Se sim, tenho algumas perguntas para você. Responda se tiver coragem…

  1. Como sua equipe garante que uma versão de um sistema a ser lançado está no nível de qualidade esperado? Requisitos implementados e funcionando corretamente atendendo os requisitos não funcionais.
  2. Como sua equipe garante que recursos desenvolvidos em iterações anteriores estão funcionando corretamente?
  3. Como são controlada as funcionalidades de cada versão?
  4. Já parou para pensar/definir o seu processo de entrega?
  5. Qual é a agilidade desse processo? Quantos recursos e tempo é preciso para gerar uma versão confiável do sistema? É possível, para um desenvolvedor, rodá-lo em 1 hora de um domingo?

Pois bem, tais perguntas são difíceis de serem respondidas por uma boa parte das empresas de tecnologia. O problema se agrava quando é desejável trazer valor para o mercado de forma mais rápida. Atualmente, as empresas e startups desejam lançar funcionalidades de forma mais eficaz que seus concorrentes!

A Entrega Contínua, ou Continuous Delivery, é uma abordagem que busca reduzir os ciclos de entrega. Seu objetivo é garantir, continuamente, que o sistema sempre esteja pronto para ir para produção. Para tanto, primeiramente, todos os passos são definidos e colocados em um pipeline. Em seguida, eles são automatizados utilizando técnicas como Integração Contínua e Testes Automatizados.

Cada etapa depende da anterior para ser executada. Para um sistema ser lançado todos os passos devem ter sucesso. Se algum deles falhar e exigir uma alteração no software, todo o processo deve ser reiniciado.

O time pode definir as etapas da maneira que se encaixa melhor com o sistema. Entretanto, geralmente, os passos do pipeline são: Atualização do código, versionamento (branch ou tag), construção e execução de testes unitários automatizados, execução da análise estática de código (Ex.: Sonar), implantação do sistema no servidor de aplicações, testes funcionais automatizados, demais testes automatizados (Ex.: performance), testes manuais e, por fim, implantação em produção (ou entrega oficial do artefato construído).

processoEntrega

Exemplo de um pipeline de entrega criado na ferramenta de Integração Contínua Jenkins.

 

O processo de entrega deve ser executado frequentemente para garantir a qualidade do sistema e reduzir os riscos de implantação em produção.

Quando utilizada essa abordagem as entregas de código serão mais frequentes. Com isso, sugiro criar uma rotina automatizada de rollback de versão para quando tiver um problema com uma implantação. E, é claro que se acontecer um erro desse, após realizar a troca de versão da aplicação, crie um teste automatizado para cobrir esse erro na próxima entrega. 😉

Concluindo, adotando a estratégia da Entrega Contínua você trará valor para seu produto de forma mais ágil. Além disso, reduzirá os riscos de implantações em produção e terá bem definido o seu controle de qualidade.

Bruno Carneiro

Bruno Carneiro é um apaixonado por TI, pela Engenharia e Arquitetura de Sistemas e pela criação de novos produtos baseados em tecnologia de informação. Formado em Ciência da Computação e pós graduado em Arquiteutra de Sistemas Distribuídos pela PUC-MG. Há mais de sete anos trabalha com desenvolvimento de sistemas que utilizam tecnologias de ponta.

More Posts - Website

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *