Logo de cara vou te dizer CI/CD é a sigla para Continuous Integration e Continuous Delivery, e designa inovações nos processos de desenvolvimento e entrega de projetos.
Esses dois processos são baseados em fórmulas modernas que permitem que tanto o processo de desenvolvimento como a entrega de ferramentas seja mais ágil.
Além disso, os times tornam-se mais produtivos com a automação que estes processos trazem para o dia a dia.
Por isso, continue acompanhando esse material, entenda o que é CI/CD e saiba como estruturar estes processos de acordo com o que a Accurate realiza.
CI/CD designa respectivamente Continuous Integration e Continuous Delivery traduzindo: Integração Contínua e Entrega Contínua.
Ambas as siglas designam processos e técnicas modernas para tornar o processo de desenvolvimento, teste e entrega de ferramentas mais ágil e eficiente.
Integração Contínua ou CI, significa uma automação para que todas às vezes que haja uma mudança em código de aplicação, ela seja integrada, testada e implementada.
E todo esse processo acontecendo em um ambiente compartilhado, com todos os envolvidos no processo.
Uma vez que é muito comum que aplicações sejam desenvolvidas por um time não somente por uma pessoa.
Dessa forma com o CI, é possível que todas as mudanças sejam realizadas no “mesmo local”, permitindo a integração de mudanças no código de maneira mais rápida.
Por meio dessa técnica há a diminuição de conflitos e problemas quando diversos projetos acontecem simultaneamente.
Entrega contínua ou CD, por sua vez, reúne a integração contínua e a testagem que podem ser agrupados em contêineres e depois colocado em produção.
Ou seja, ele ajunta esses códigos e testes realizados, e coloca-os em produção de forma automatizada.
Mesmo que necessite da ação humana, ele se torna automatizado ao colocar tudo o que foi feito “no ar” de maneira integrada e completa.
Existe um segundo CD que é a Implantação Total ou Continuous Deployment, onde tudo o que for integrado e testado é colocado em um repositório.
O repositório coloca tudo que foi desenvolvido, códigos da aplicação e afins em produção de forma contínua e totalmente automatizada.
Isso é uma evolução do CD, que apresentamos anteriormente, mas que depende do start humano para ser colocado em produção, enquanto aqui não.
A Accurate identificou os seguintes desafios que levaram a utilizar o CI/CD nos projetos:
O primeiro era criar um fluxo/processo de desenvolvimento padronizado e automatizado para todos os times.
E a partir disso garantir a qualidade das entregas individuais dos desenvolvedores, assim como as entregas dos times.
Isso pode ser realizado através da definição de um processo de CI para execução dos testes unitários e validação da qualidade do código entregue
Seguido da definição de um processo de CD para construção das imagens e implantação nos ambientes continuamente.
Por fim buscou-se a definição de um processo para construção das imagens e implantação no ambiente de produção, onde em 2 etapas:
O primeiro passo é o alinhamento do processo/fluxo de desenvolvimento junto aos arquitetos envolvendo os líderes dos times.
Segue-se com o mapeamento das branches do Git para os ambientes (develop -> desenvolvimento e master -> [homologação e production])
E depois veio o disparo do Job de CI a cada Pull Request e do Job de CD a cada alteração nas branches mapeadas.
Foram definidas as seguintes ferramentas para esse processo:
Para o CI, é realizado o acionamento via Webhook quando um Pull Request é criado ou atualizado no repositório Git.
Seguido de verificação da qualidade e estilo do código, execução dos testes unitários, construção do pacote para verificar a integridade e notificação do repositório Git para atualizar o status do Pull Request.
E o CD, é acionado via Webhook quando há alterações nas branches correspondentes aos ambientes (develop, master).
Depois é construído o pacote atualizando automaticamente a versão, e depois as Bibliotecas são enviadas para o Nexus com a versão correspondente.
E das aplicações as imagens docker são geradas e implantadas no ambiente destino, conforme o mapeamento das branches / ambientes.
Mas antes da implantação em produção, a premissa é que já esteja implantado e validado em homologação antes da promoção da imagem docker
A operacionalização da implantação do CI/CD começou as ações no repositório Git, iniciando pela criação das branches para todos os projetos: develop, homolog, master.
Seguido pelo Mapeamento dos webhooks para realizar o disparo dos Jobs no Jenkins, sendo:
A configuração do Jenkins se desenrola primeiro pela Instalação dos plugins necessários para integração (Sonarqube, Groovy, etc).
E segundo, através da criação de imagens Docker e configuração como agentes dentro do Jenkins.
Depois é realizada a criação de Jenkins files (pipelines) templates para CI / CD por linguagem/tecnologia, onde, cada tecnologia possui um ferramental e scripts diferentes.
Foi criado tanto para CI, quanto para CD um fluxo do Job para ser acompanhado.
O Fluxo do Job de CI se desenvolve em 7 passos:
Já Fluxo do Job de CD segue o seguinte caminho: primeiro se realiza o checkout da branch notificada.
Segundo, se constrói o artefato utilizando a ferramenta de build específica do projeto que está sendo trabalhado.
Terceiro vêm os projetos de bibliotecas que são enviadas para o Nexus para armazenamento do artefato, e depois disso o fluxo é finalizado.
Em quarto, nos Projetos de aplicações que se encontram em ambiente de desenvolvimento, realizam-se as seguintes ações:
Passo 1 – Criação da imagem Docker para o artefato gerado, aplicando a versão do artefato à imagem Docker.
Passo 2 – Envio da imagem para o Docker Registry.
Passo 3 – Implantação através do rollout da imagem via Kubernetes.
Os Projetos de aplicações que, por sua vez, estejam em ambiente de homologação / produção, seguem os passos 1 e 2 acima e depois os seguintes:
Algumas integrações entre Repositório Git e Jenkins não possuem plugins que atendam a necessidade, nestes casos, é necessário implementar as mesmas.
É preciso também acompanhar os fluxos e atender os times para garantir que não sejam impactados por problemas nos fluxos.
Monitorar a saúde do Ferramental, assim como suas integrações (Webhooks, plugins, etc) se faz necessário também.
Cada necessidade de incremento/melhoria no fluxo de CI e CD deve ser comunicado para o pessoal responsável.
Por conta da utilização de muito espaço em disco para os artefatos gerados, foi necessária a restrição do número de builds realizados
Com a implementação do projeto foi possível chegar a automatização dos testes e validação de código.
O processo de Implantação dos projetos nos ambientes, passou a acontecer de forma contínua, garantindo agilidade no desenvolvimento.
A definição de templates dos Jobs, trouxe facilidade no setup inicial dos projetos, que por sua vez passou a ter média de 5h em todos os ambientes.
E por fim foi conseguida a promoção e Rollback das imagens tanto em homologação quanto em produção.
Tudo isso proporcionou o aumento da eficiência dos times de desenvolvimento e devops/site reliability.
Garantia de qualidade de todas as entregas, setup inicial de novos projetos muito rápido e padronização de todo o ferramental e tecnologias utilizadas.
Pelo apresentado no material já é possível entender que a Accurate está sempre preocupada com a agilidade de entrega dos seus projetos.
Isso tudo garantindo eficiência e bons resultados com produtos e serviços de alta qualidade.
Entre em contato agora mesmo com um de nossos especialistas e descubra como a Accurate pode acelerar e transformar seu negócio com soluções tech invadoras e escaláveis, utilizando squads ágeis com diferentes formas de contratação, conforme a sua necessidade.
Não deixe conhecer a Accurate e os serviços oferecidos e também continuar acompanhando as atualizações do Blog.
Compartilhe esse material e siga-nos nas Redes Sociais: Facebook, Instagram, Twitter, Linkedin e YouTube.
A transformação digital acelerou a necessidade de inovação em Tecnologia da Informação (TI). No ambiente…
O desenvolvimento de FAQBots inteligentes é uma solução que vem ganhando espaço, permitindo que…
O avanço da Inteligência Artificial (IA) está remodelando a maneira como empresas conduzem suas…
Adotar uma estratégia multicloud para redução de custos é essencial para empresas que buscam…
No cenário atual, onde a transformação digital não é mais uma opção, mas uma necessidade,…
O comércio eletrônico tem evoluído de maneira acelerada nas últimas décadas, e estamos agora às…