Integração e Entrega Continua (CI-CD)

Suporte e Consultoria em Integração e Entrega Continua.

  • Implantação de uma pipeline Continuous Integration (CI) usando o Jenkins que pode ser implementada para qualquer linguagem de programação ( por exemplo: Java, .NET, PHP, Python, entre outras).
  • Implantação de uma pipeline Continuos Deploy (CD) para garantir que novas versões dos softwares já validadas pelo processo de CI possam ser liberadas com segurança em Produção.
  • Consultoria para a incorporação de testes unitários no desenvolvimento dos softwares com a adoção da metodologia TDD (Test Driven Development) ou Desenvolvimento Orientado a Testes.
  • Implantação do Sonar para a geração de métricas e validação automatizada da qualidade dos códigos.
  • Consultoria para a criação de ‘Build’ automatizado e relação de dependências com as ferramentas Maven, Gradle e Ant ou ferramenta de acordo com a tecnologia ou projeto utilizado.
  • Consultoria para o desenvolvimento de testes de aceitação automatizados com a ferramenta Selenium.
  • Definição de política de versionamento de artefatos utilizando Nexus
  • Outros serviços: Definição de estratégias para versionamento baseadas no modelo Gitflow, criação de testes unitários automáticos a cada novo commit, criação de dashboards em Python sobre o estado de execução de cada etapa da pipeline, automatização do ‘Deployment ‘ em ambiente de Desenvolvimento, incorporação dos Testes de Integração ao pipeline CI para que sejam executados automaticamente a cada novo commit, integração com sistemas de gestão de mudanças para auditoria, provisionamento automatizado em ambiente de Homologação e Produção

Conheça um pouco mais sobre Integração e Entrega e Contínua.

  • Integração Contínua (Continuous integration)

As metodologias ágeis de desenvolvimento permitiram entregas rápidas com pequenas e frequentes modificações nos códigos, em vez de versões criadas em períodos longos de tempo com grandes alterações. Com essa otimização, o trabalho em paralelo dos membros da equipe de desenvolvimento tornou-se possível. Como as entregas são rápidas, um programador pode atuar em uma parte do código enquanto os demais em outras e assim o desenvolvimento é mais ágil. Integração Contínua é um processo essencial dessas metodologias ágeis que permite a integração do trabalho dos membros de uma equipe o mais rápido possível com a execução de builds e testes automatizados do código.

A Integração contínua promove o trabalho conjunto e para isso é essencial que o uso de uma solução de controle de versão, como o Gitlab, Github, CVS ou Subversion. Essas ferramentas criam um repositório principal para armazenar o código e manter versões com cada modificação realizada para que seja possível revertê-las e auditá-las sempre que preciso. Para o trabalho paralelo, são criadas branches (ou trunks) nessas ferramentas que irão conter uma cópia completa do código para que seja modificado por parte da equipe sem que interferência no código principal ou em branches de outros programadores. Concluída a alteração do código de uma branch é preciso integrá-lo ao código principal. Para isso a ferramenta de controle de versão compara o código da branch e do repositório principal e mantêm apenas as diferenças, consolidando os códigos. Mas como as modificações são ágeis e frequentes haverão diversas integrações, as vezes várias em um mesmo dia, é preciso garantir que estas modificações não irão gerar erros.
O processo de build e aplicação de testes devem então ser executados a cada nova modificação concluída. Desta forma o programador valida o quanto antes sua alteração para que possa atuar em uma eventual correção ou seguir para uma nova modificação o mais rápido possível. Além disso, testar pequenos trechos de códigos modificados facilita o entendimento de eventuais erros se comparados a entregas acumuladas com um grande volume de alterações o que minimiza riscos. Há diversas ferramentas para automatizar o bluid, como Ant e Maven para códigos Java e Nant e MSBuild para .net. É imprescindível que o código contenha testes unitários para garantir que as novas implantações funcionem como esperado.

Por fim é preciso utilização de uma ferramenta para integração contínua, como o Jenkins ou Hudson. Elas atuam como orquestradores de todo o processo com a execução dos builds, validação dos testes e integração do código modificado ao principal. A ferramenta valida cada etapa e só segue se a anterior for executada com sucesso e envia notificações para conhecimento do desenvolvedor sobre a operação.

Integração Contínua é, portanto, o processo que permite integrar frequentemente alterações parciais em desenvolvimento ao código principal, sem intervenções manuais e com garantias de que funcionem como esperado para um trabalho conjunto e contínuo.

Entrega Contínua (Continuous Delivery)

A Entrega Contínua é um conjunto de práticas com o objetivo de garantir que um novo código esteja apto para ser disponibilizado em ambiente de produção. No entanto, o deploy em ambiente de produção não é automático, sendo esta uma decisão de negócio a ser aprovada previamente.
A prática incorpora além de todas ações previstas na Integração Contínua, processos adicionais e necessários para que a modificação seja acessível aos usuários e assim sejam realizadas inspeções finais, sejam elas manuais e/ou automatizadas.

Assim que um programador entende que sua modificação está pronta para seguir para as validações finais, é feito o deploy automatizado do novo código nos ambientes que antecedem o de produção, normalmente de Desenvolvimento e Homologação. Tudo deve ser feito com um simples apertar de um botão.

Na sequência são executados testes de comportamento para validar a lógica de negócio e/ou visuais, complementares aos testes unitários executados na fase de Integração contínua. O deploy com a nova alteração pode então ser aceita ou rejeitada e notificações são enviadas.

No caso de inspeções manuais, equipes responsáveis pelas validações, como Controle de Qualidade, recebem lotes constantes e pequenos de trabalho que são facilmente validados. Caso um eventual erro seja detectado, o programador será informado rapidamente enquanto ainda lembra dos detalhes de sua alteração. Nesta fase feedbacks são fundamentas como rege a prática DevOps.

Para que os processos da entrega contínua possam funcionar é imprescindível que a infraestrutura dos ambientes em que serão feitos os deploy e realizados os testes estejam sempre funcionais. Por isso é comum esses projetos incorporarem conceitos de Infraestrutura ágil.

Case:

https://www.4linux.com.br/case/infraestrutura-agil-para-um-dos-maiores-bancos-do-brasil

Cases de Sucesso

Infraestrutura Ágil para um dos maiores bancos do Brasil.

Um dos maiores bancos públicos do Brasil possuía um grande gargalo no provisionamento de infraestrutura, chegando as vezes a demorar até 3 meses para a criação de servidores para o deploy de novas aplicações, o que resultava em atrasos recorrentes nos projetos a serem desenvolvidos e desmotivação da equipe devido a burocracia durante todo este processo, O desenvolvimento precisava ser ágil mas o provisionamento da infraestrutura também.

Compartilhe esta página

Solicite Contato

Forma de contato preferencial
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
4 + 4 =
Resolva este problema matemático simples e digite o resultado. Por exemplo para 1+3, digite 4.