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 automação de processos robóticos (RPA) é mais do que uma tendência passageira no mundo…
Você já se perguntou como os dados brutos, originados de diversas fontes, são refinados e…
No cenário empresarial contemporâneo, marcado pela constante transformação digital, as novas redes sociais despontam como…
No cenário do mercado atual, onde a competição é acirrada e as expectativas dos clientes…
Em um cenário empresarial dinâmico e altamente competitivo, as Estratégias Avançadas de Capacity Planning assumem…
O capacity planning é um dos pilares fundamentais para o sucesso de qualquer empresa. Ele…