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 alteradaPrazo
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-SAQuem 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: