Histórico: Como o processo de integração contínua funciona

Hoje, nos voltamos para o histórico do termo, discutimos as dificuldades de implementar o IC e fornecemos algumas ferramentas populares para ajudá-lo a trabalhar com ele.


/ Flickr / Altug Karakoc / CC BY / Foto alterada

Prazo


Integração Contínua - Uma abordagem ao desenvolvimento de aplicativos, envolvendo montagem frequente do projeto e teste de código.

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

O termo Integração Contínua apareceu pela primeira vez em 1991. Foi introduzido pelo criador da linguagem UML, Grady Booch. O engenheiro introduziu o conceito de IC como parte de sua própria prática de desenvolvimento - o método Butch . Implicou refinamento incremental da arquitetura no design de sistemas orientados a objetos. Grady não descreveu nenhum requisito para integração contínua. Mais tarde, porém, em seu livro " Análise e Design Orientados a Objetos com Aplicações ", ele disse que a tarefa da metodologia é acelerar o lançamento de "releases internos".

A história


Em 1996, o CI foi adotado pelos criadores da Extreme Programming Methodology (XP) - Kent Beck e Ron Jeffries . A integração contínua se tornou um dos doze princípios principais de sua abordagem. Os fundadores do XP esclareceram os requisitos da metodologia de IC e observaram a necessidade de montar o projeto várias vezes ao dia.

No início dos anos 2000, Martin Fowler, um dos fundadores da Agile Alliance, começou a promover a metodologia de integração contínua. Suas experiências com a CI levaram à primeira ferramenta de software do setor - CruiseControl. O utilitário foi criado por um colega de Martin - Matthew Fommel (Matthew Foemmel).
O ciclo de construção da ferramenta é implementado como um daemon, verificando periodicamente o sistema de controle de versão quanto a alterações na base de código. A solução pode ser baixada hoje - é distribuída sob uma licença semelhante ao BSD.
Com o advento do software para a CI, mais e mais empresas começaram a adotar a prática. De acordo com um estudo da Forrester [p. 5 do relatório ], em 2009, 86% das cinquenta empresas de tecnologia pesquisadas usavam ou implementavam métodos de IC.

Hoje, a integração contínua é praticada por organizações de uma ampla gama de indústrias. Em 2018, um grande provedor de nuvem realizou uma pesquisa entre especialistas em TI de empresas dos setores de serviços, educação e finanças. Dos seis mil entrevistados, 58% disseram que usam ferramentas e princípios de IC em seu trabalho.

Como isso funciona


A base da integração contínua são duas ferramentas - um sistema de controle de versão e um servidor de IC. O último pode ser um dispositivo físico ou uma máquina virtual em um ambiente em nuvem. Os desenvolvedores enviam o novo código uma ou várias vezes ao dia. O servidor de IC copia-o automaticamente com todas as dependências e executa a montagem. After - lança testes de integração e unidade. Se os testes forem bem-sucedidos, o sistema de IC implementará o código.

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



A metodologia do IC tem vários requisitos para desenvolvedores:

  • Corrija os problemas imediatamente. Esse princípio chegou ao CI a partir de programação extrema. Correções de bugs são uma prioridade para os desenvolvedores.
  • Automatize processos. Desenvolvedores e gerentes devem procurar constantemente gargalos no processo de integração e eliminá-los. Por exemplo, o teste geralmente é o "gargalo" da integração.
  • Crie o mais rápido possível. Uma vez por dia para sincronizar o trabalho em equipe.

Dificuldades de implementação


O primeiro problema são os altos custos operacionais. Mesmo que uma empresa use ferramentas de CI abertas (sobre as quais falaremos mais adiante), ainda precisará gastar dinheiro no suporte à infraestrutura. No entanto, a tecnologia em nuvem pode ser a solução.

Eles simplificam a montagem de configurações de computador em várias escalas. Além disso, as empresas pagam apenas pelos recursos utilizados, o que ajuda a economizar em infraestrutura.

De acordo com pesquisas [p . 14 do artigo ], a integração contínua aumenta a carga sobre os funcionários da empresa (pelo menos pela primeira vez). Eles precisam aprender novas ferramentas, e os colegas nem sempre ajudam no treinamento. Portanto, você precisa lidar com novas estruturas e serviços em movimento.

A terceira dificuldade são os problemas com a automação. É enfrentado por organizações com uma grande quantidade de código legado que não é coberto por testes automatizados. Isso leva ao fato de que o código é simplesmente reescrito antes da implementação completa do IC.


/ Flickr / theilr / CC BY-SA

Quem usa


Uma das primeiras vantagens da metodologia foi apreciada pelos gigantes de TI. O Google usa integração contínua desde meados dos anos 2000. IC implementado para resolver o problema com atrasos no mecanismo de pesquisa. A integração contínua ajudou a identificar e solucionar problemas rapidamente. Agora, o CI é usado por todos os departamentos da gigante de TI.

A integração contínua também ajuda pequenas empresas, e as ferramentas de IC também são usadas por organizações financeiras e médicas. Na Morningstar, por exemplo, os serviços de integração contínua ajudaram a corrigir vulnerabilidades 70% mais rapidamente. E a plataforma médica da Philips Healthcare conseguiu dobrar a velocidade das atualizações de testes.

As ferramentas


Aqui estão algumas ferramentas populares para o IC:

  • Jenkins é um dos sistemas de CI mais populares. Ele suporta mais de mil plugins para integração com vários VCS, plataformas em nuvem e outros serviços. Também usamos o Jenkins no 1cloud: a ferramenta está incluída no nosso sistema DevOps . Ele verifica regularmente o ramo Git para testes.
  • O Buildbot é uma estrutura python para escrever seus próprios processos de integração contínua. A configuração inicial da ferramenta é bastante complicada, mas isso é compensado pelas amplas possibilidades de personalização. Entre as vantagens da estrutura, os usuários distinguem sua baixa intensidade de recursos.
  • O Concourse CI é um servidor da Pivotal que usa contêineres do Docker. O Concourse CI se integra a qualquer ferramenta e sistema de controle de versão. Os desenvolvedores observam que o sistema é adequado para trabalhos em empresas de qualquer tamanho.
  • O Gitlab CI é uma ferramenta incorporada ao sistema de controle de versão do GitLab. O serviço é executado na nuvem e usa arquivos YAML para configuração. Como o Concourse, o Gitlab CI usa contêineres do Docker que ajudam a isolar processos diferentes um do outro.
  • Codeship é um servidor de IC baseado em nuvem que funciona com GitHub, GitLab e BitBucket. A plataforma não requer uma configuração inicial longa - os processos de IC predefinidos padrão estão disponíveis no Codeship. Para projetos pequenos (de até 100 compilações por mês) e de código aberto, o Codeship está disponível gratuitamente.

Materiais do nosso blog corporativo:

Source: https://habr.com/ru/post/pt447090/


All Articles