Referência: como funciona o processo de Integração Contínua

Hoje, abordaremos a história do termo, discutiremos as dificuldades na implementação de CI e apresentaremos algumas ferramentas populares que ajudam a trabalhar com isso.

Referência: como funciona o processo de Integração Contínua
/ Flickr / Altug Karakoc / CC BY / Фото изменено

Termo

Continuous Integration (integração contínua) é uma abordagem para o desenvolvimento de aplicações que implica a realização frequente de compilações do projeto e teste do código.

O objetivo é tornar o processo de integração previsível e detectar potenciais bugs e erros em um estágio inicial, para que haja mais tempo para corrigi-los.

O termo Continuous Integration apareceu pela primeira vez em 1991. Foi introduzido pelo criador da linguagem UML, Grady Booch (Grady Booch). O engenheiro apresentou o conceito de CI como parte de sua própria prática de desenvolvimento — o método Booch. Ele implicava o refinamento incremental da arquitetura ao projetar sistemas orientados a objetos. Grady não descreveu requisitos específicos para integração contínua. Mas mais tarde, em seu livro “Object-Oriented Analysis and Design with Applications”, ele afirmou que a tarefa da metodologia é acelerar a liberação de 'releases internas'.

Histórico

Em 1996, a CI foi adotada pelos criadores da metodologia programação extrema (XP) — Kent Beck (Kent Beck) e Ron Jeffries (Ron Jeffries). A integração contínua tornou-se um dos doze princípios fundamentais de sua abordagem. Os fundadores do XP detalharam os requisitos para a metodologia de CI e enfatizaram a necessidade de compilar o projeto várias vezes ao dia.

No início dos anos 2000, a metodologia de integração contínua começou a ser promovida por um dos fundadores da Agile Alliance, Martin Fowler (Martin Fowler). Seus experimentos com CI resultaram no surgimento da primeira ferramenta de software na área — CruiseControl. A ferramenta foi criada por um colega de Martin — Matthew Foemmel.

O ciclo de compilação na ferramenta é implementado na forma de um daemon, que periodicamente verifica o sistema de controle de versões em busca de alterações na base de código. A solução ainda pode ser baixada hoje — ela é distribuído está sob uma licença semelhante à BSD.

Com o surgimento de software para CI, cada vez mais empresas começaram a adotar a prática. Segundo uma pesquisa da Forrester [p.5 relatório], em 2009, 86% das cinquenta empresas de tecnologia entrevistadas usavam ou estavam implementando métodos de CI.

Hoje, a prática de Integração Contínua é adotada por organizações de diversas indústrias. Em 2018, um grande provedor de nuvem realizou uma pesquisa com profissionais de TI de empresas nos setores de serviços, educação e finanças. Entre seis mil respondentes, 58% disseram que utilizam ferramentas e princípios de CI em seu trabalho.

Como funciona

A base da integração contínua consiste em duas ferramentas principais — um sistema de controle de versão e um servidor de CI. Este último pode ser tanto um dispositivo físico quanto uma máquina virtual em um ambiente de nuvem. Os desenvolvedores carregam novo código uma ou mais vezes por dia. O servidor de CI copia automaticamente esse código com todas as dependências e executa a compilação. Em seguida, ele inicia os testes de integração e testes unitários. Se os testes forem bem-sucedidos, o sistema de CI implanta o código.

O esquema geral do processo pode ser representado da seguinte forma:

Referência: como funciona o processo de Integração Contínua

A metodologia de CI impõe uma série de requisitos aos desenvolvedores:

  • Corrigir problemas imediatamente. Esse princípio veio do desenvolvimento ágil. Corrigir bugs é a tarefa prioritária para os desenvolvedores.
  • Automatizar processos. Desenvolvedores e gerentes devem constantemente buscar 'pontos críticos' no processo de integração e eliminá-los. Por exemplo, muitas vezes o 'gargalo' da integração se revela nos testes.
  • Realizar compilações com a maior frequência possível. Uma vez por dia, para sincronizar o trabalho da equipe.

Desafios de implementação

O primeiro problema é o alto custo operacional. Mesmo se a empresa utilizar ferramentas de CI de código aberto (sobre as quais falaremos adiante), ainda assim terá que gastar dinheiro para manter a infraestrutura. No entanto, soluções em nuvem podem ser uma alternativa.

Elas simplificam a construção de configurações de computação de diferentes escalas. Além disso, as empresas pagam apenas pelos recursos utilizados, o que ajuda a economizar na infraestrutura.

De acordo com pesquisas [p.14 artigo], a integração contínua aumenta a carga de trabalho dos funcionários da empresa (pelo menos no início). Eles precisam se familiarizar com novas ferramentas, e os colegas nem sempre ajudam no treinamento. Portanto, muitas vezes é necessário aprender novos frameworks e serviços "em movimento".

A terceira dificuldade são os problemas com a automação. Isso acontece em organizações com um grande volume de código legado que não está coberto por testes automatizados. Isso leva à simples reescrita do código antes da implementação completa do CI.

Referência: como funciona o processo de Integração Contínua
/ Flickr / theilr / CC BY-SA

Quem usa

Os gigantes de TI foram alguns dos primeiros a valorizar as vantagens da metodologia. O Google usa adotou a integração contínua no meio dos anos 2000. O CI foi implementado para resolver problemas de atraso no funcionamento do motor de busca. A integração contínua ajudou a detectar e corrigir falhas rapidamente. Hoje, o CI é utilizado por todos os departamentos do gigante de TI.

A integração contínua também auxilia pequenas empresas, além de ser utilizada por organizações financeiras e de saúde. Por exemplo, na Morningstar, os serviços de integração contínua ajudaram a corrigir vulnerabilidades 70% mais rápido. Já a plataforma médica Philips Healthcare conseguiu dobrar a velocidade de teste das atualizações.

Ferramentas

Aqui estão algumas ferramentas populares de CI:

  • Jenkins — um dos sistemas de CI mais populares. Ele suporta mais de mil plugins para integração com diferentes VCS, plataformas em nuvem e outros serviços. O Jenkins é utilizado por nós no 1cloud: a ferramenta faz parte do nosso sistema DevOps. Ela verifica regularmente o ramo do Git destinado a testes.
  • Buildbot — um framework Python para a criação de processos de integração contínua personalizados. A configuração inicial da ferramenta é bastante complexa, mas isso é compensado por amplas possibilidades de personalização. Entre as vantagens do framework, os usuários destacam seu baixo consumo de recursos.
  • Concourse CI — um servidor da Pivotal que utiliza contêineres Docker. O Concourse CI se integra com qualquer ferramenta e sistemas de controle de versões. Os desenvolvedores destacam que o sistema é adequado para empresas de qualquer tamanho.
  • Gitlab CI — uma ferramenta embutida no sistema de controle de versões GitLab. O serviço opera na nuvem e utiliza arquivos YAML para configuração. Assim como o Concourse, o Gitlab CI aplica contêineres Docker, que ajudam a isolar diferentes processos entre si.
  • Codeship — um servidor CI em nuvem que trabalha com GitHub, GitLab e BitBucket. A plataforma não requer uma configuração inicial longa — no Codeship, processos de CI pré-instalados padrão estão disponíveis. Para projetos pequenos (até 100 compilações por mês) e open source, o Codeship é gratuito.

Materiais do nosso blog corporativo:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster