INTEGRAÇÃO CONTÍNUA E SEUS BENEFÍCIOS
A integração contínua é um conjunto de práticas em que as equipes entregam seu trabalho com muita frequência.O texto publicado foi encaminhado por um usuário do site por meio do canal colaborativo Meu Artigo. 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: https://www.brasilescola.com.
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.
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. 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: https://www.brasilescola.com.