Whatsapp

INTEGRAÇÃO CONTÍNUA E SEUS BENEFÍCIOS

Informática

A integração contínua é um conjunto de práticas em que as equipes entregam seu trabalho com muita frequência.

A Crescente evolução das tecnologias relacionadas a desenvolvimento de software e sustentação de TI, fizeram com que as equipes se especializassem em ramos cada vez mais específicos e criassem ferramentas para melhor gerenciar todo esse grande fluxo de informação e demanda que é gerada pela constante melhoria e manutenção dos sistemas.

A integração contínua é um conjunto de práticas em que as equipes entregam seu trabalho com muita frequência, geralmente ao menos uma vez ao dia, e que podemos ter equipes trabalhando em diversos branchs diferentes para que esse trabalho seja, em dado momento, unido novamente sem que haja incompatibilidade.

A área que gerencia toda essa logística é denominada DevOps, que nada mais é do que a integração das equipes de desenvolvimento com as de operações que apesar de cuidarem do mesmo produto tem ideologias distintas. Abaixo, conseguimos verificar alguns dos valores prezados pelas áreas e suas equipes.

Figura 1: Integração dos times de desenvolvimento e operações.

A automação visa atacar diretamente essa grande parcela de tempo e esforço de colaboradores que é perdida por metodologias de entrega manual. Como podemos ver neste estudo de 2006:

Figura 2. Fonte: Estudo de Deepak Patil (Microsoft Global Foundation Services) de 2006.

Alguns dos exemplos de problemas mais recorrentes ocasionados na entrega manual:

  • Maior probabilidade de erro humano, principalmente em tarefas repetitivas;

  • Mobilização de pessoal especializado destinado única e exclusivamente em fazer a mudança;

  • Caso o sistema possuir mais de um servidor, o procedimento terá que ser refeito em cada um;

  • Há diversos processos que devem ser feitos como restart de serviços, servidores e etc. e a probabilidade de algo ser esquecido é muito alta;

  • Tempo para o procedimento ser concluído é drasticamente superior.

No modelo proposto pela integração contínua, os desenvolvedores têm a liberdade de trabalhar no seu branch utilizando sua ferramenta favorita após sincronizar com o repositório compartilhado através de uma ferramenta de controle de versão como Git e SVN. A cada commit ou entrega, o desenvolvedor gera uma versão que pode ser utilizada pelos seus colegas de trabalho para fazer um merge com as entregas de outros desenvolvedores e utilizar as melhorias geradas por toda a equipe tudo disponível numa versão unificada.

Não pare agora... Tem mais depois da publicidade ;)

A partir do momento que temos uma versão fechada do sistema no repositório, que é integrado com ferramentas de build e testes automatizados previamente configurados, podemos inicializar o processo com apenas um click. Este procedimento gera um arquivo passível de ser implementado a partir do processo de deploy automatizado.

O processo de continuous deployment, no geral, consiste em dois ou mais passos para a sua versão do sistema chegar em produção que é o ambiente final, ou seja, aquele disponível para os clientes utilizarem. Geralmente grandes empresas têm diversos ambientes como: desenvolvimento, testes, homologação e produção, fazendo com que a sua versão do sistema vá escalando os ambientes e as equipes possam fazer os testes e validações necessárias até produção com o sistema estável, porém, nada impede de termos mais de um ambiente de testes, homologação e etc. isso vai depender da/das demandas das equipes que suportam o sistema. Fazendo com que seja possível adaptar a rotina literalmente para qualquer cenário.

Abaixo, temos um exemplo no qual é possível vislumbrar o processo supracitado:

Figura 3: Representação do processo de integração contínua.

O processo todo é facilitado com um analista que tenha experiência em DevOps e podemos tirar algumas vantagens como:

  • Rastreabilidade de todas as ações realizadas na entrega de software;
  • Fallback da versão anterior que se encontrava em funcionamento pleno, caso alguma parte do processo não saia como esperado;
  • Testes mais assertivos com menor índice de erro humano;
  • Diminuição drástica de mobilização de pessoal para um evento de deploy;
  • Possibilidade de diversas equipes estarem trabalhando no mesmo código com a garantia de compatibilidade no momento de merge;
  • Possibilidade de análise e correção de erros e bugs infinitamente superior entre outras.

Cada vez mais, se torna impossível imaginar uma empresa grande, principalmente do ramo de tecnologia, que lida com diversos sistemas e não possuir um processo de continuous integration. Hoje temos médias e até pequenas empresas com uma quantidade menor de sistemas, que pelas vantagens, facilidade, a evolução da metodologia, o empenho dos profissionais em se especializar e a criação de ferramentas mais simples e intuitivas, estão tornando, cada dia mais, esse processo indispensável.

Referências:

https://aws.amazon.com/pt/devops/continuous-integration/ - 25/05/2019.

https://www.cutter.com/offer/devops-software-revolution-making-0 - 25/05/2019.

Autor: Hudson da Costa Angelo


Publicado por: HUDSON DA COSTA ANGELO

O texto publicado foi encaminhado por um usuário do site por meio do canal colaborativo Meu Artigo. O Brasil Escola não se responsabiliza pelo conteúdo do artigo publicado, que é de total responsabilidade do autor. Para acessar os textos produzidos pelo site, acesse: http://www.brasilescola.com.