Quanto investir e quanto economizar com o Continuous Integration?
É consenso na área de tecnologia que desenvolver um novo sistema é sempre uma dor de cabeça, os prazos acordados raramente são cumpridos, a infidelidade com os requisitos solicitados pela área de negócio é uma constante e, talvez o pior de todos os problemas com desenvolvimento de sistemas, há o habitual descumprimento com o orçamento.
Se já não bastasse todos os problemas com o desenvolvimento contratado de terceiros, o mais absurdo são empresas que perdem códigos-fonte de sistemas por não possuírem uma ferramenta de controle de versão.
Com esse cenário, tornam-se quase incalculáveis os custos envolvidos com as perdas em desenvolvimento e manutenção dos sistemas, contabilizando os prejuízos institucionais; com a perda de negócios, a angustia dos executivos é tão grande que deixa de ser uma missão impossível convencê-los a investir em soluções que resolvam essa enorme dor de cabeça.
O Continuous Integration, ou Integração Contínua, é uma prática de desenvolvimento de software que vem mudando esse cenário de descontrole e prejuízos, com a mudança de conceitos em que os membros da equipe de desenvolvimento integram seu trabalho frequentemente (cada desenvolvedor integra ao menos uma vez por dia). Cada integração é verificada por uma ferramenta de build automatizado, com a finalidade de detectar erros de integração o mais rápido possível, o que reduz significativamente os custos com as correções de problemas em sistemas.
A implantação de políticas rígidas de permissão de acesso, criação de repositórios, branchs, tags, etc., garante que erros comuns em desenvolvimento sejam resolvidos antes que tornem-se monstros geradores de prejuízos na produção.
Para que esse novo conceito tenha sucesso é fundamental que toda a estrutura de desenvolvimento seja protegida por uma boa cobertura de testes automatizados. Sem isso, uma alteração em qualquer linha de código um pouco mais complexa torna-se um desafio cercado de riscos, com forte tendência a geração de soluções paliativas.
Se em projetos menores, dispor de ferramentas e processos é fundamental, imagine os ganhos que esse sistema gera em projetos maiores, como é o caso de projetos SOA; eles são indispensáveis em função da sua complexidade. A lógica é simples: para garantir a redução de problemas, quanto mais rápido um erro é identificado e isolado, menos tempo e esforço é gasto pelas equipes.
Finalmente, após estar com a ferramenta de controle de versão e testes de unidade automatizados, deve-se investir na automatização do build e deploy. O objetivo de implantar um servidor de build é fazer o checkout do projeto, compilar, executar os testes automatizados, realizar o deploy e executar os testes integrados.
Com todos esses cenários, fica fácil de responder a resposta do quanto investir e o quanto economizar com o Continuous Integration, afinal seu investimento, por mais custoso que possa representar, é muito menor do que o tamanho das dores de cabeça e dos prejuízos que uma aplicação com problemas de entrega fora do prazo é capaz de gerar.