Alura > Cursos de DevOps > Cursos de Builds > Conteúdos de Builds > Primeiras aulas do curso CI/CD inteligente: automação preditiva e entrega progressiva

CI/CD inteligente: automação preditiva e entrega progressiva

Identificando riscos em deploys - Introdução

Apresentando o curso e objetivos

Olá! Este é o curso 4 da Alura sobre CI/CD inteligente dentro do nosso curso de AIOps. Estou muito feliz em oferecer mais este módulo para vocês.

Neste módulo, nós vamos:

Detalhando a otimização de testes e pipelines

Vamos executar uma seleção de testes apenas para o código que foi alterado, detectar flaky tests (testes instáveis), colocá-los em quarentena e corrigi-los. Também vamos discutir o impacto na análise de testes, remover redundâncias, gaps (lacunas) e tratar o custo invisível dentro da suíte de testes que podemos resolver.

Além disso, veremos conceitos de automatização de pipelines (esteiras), como trabalhar com paralelismo, cache (armazenamento em cache) inteligente, skip (pular) seguro dependendo do stage (etapa), como identificar gargalos dentro de CI/CD (Integração Contínua/Entrega Contínua) e ideias de agentes que podemos criar para, mesmo com uma pessoa humana no processo — o famoso human-in-the-loop (humano no ciclo) —, gerar bons relatórios e aprimorar essas esteiras de CI/CD.

Mencionando ferramentas e encerrando com convite

Também falaremos sobre ferramentas: Harness, Argo Rollouts, LaunchDarkly, BuildKit, entre outras, e traremos dois projetos práticos.

Espero você no nosso curso de CI/CD inteligente da nossa trilha de AIOps da Alura. Até mais!

Identificando riscos em deploys - Por que deploys falham

Apresentando o curso e objetivos

Olá, pessoal. Esta é a nossa primeira aula do curso de CI (Integração Contínua) e CD (Entrega/Implantação Contínua) inteligente do curso de AIOps da Alura.

Nós vamos abordar temas como pipelines; ferramentas para feature flags (sinalizadores de recursos) e para estratégias de canary (implantação canário); funcionalidades preditivas; modelos de risco de implantação; e diversos tópicos que relacionam CI e CD inteligentes com o uso de AI (Inteligência Artificial), explorando como podemos utilizar esses recursos.

Contextualizando a primeira aula e o problema de falhas

Na nossa primeira aula, vamos discutir como e por que deploys (implantações) falham — a anatomia do risco. Vamos reconhecer que falhas de implantação não são aleatórias, mas correlacionadas a fatores mensuráveis da própria implantação.

Nós vamos trabalhar com um cenário real: um histórico de aproximadamente 200 implantações, e investigar a pergunta: era possível prever? Em termos de teoria, vamos comparar a taxa de falha global com a taxa de falha condicionada a cada fator de risco.

Definindo conceitos-chave de risco

Quais são os conceitos-chave que vamos trabalhar hoje?

Introduzindo a base de dados e a demonstração prática

Essa base será a semente para os modelos dos próximos vídeos. Este é um código que executamos para demonstrar isso na prática.

Temos um histórico de cerca de 200 deploys (implantações), no qual registramos 51 falhas. A taxa de falha global (a base) é de 25%.

Analisando fatores, interações e casos positivos

Ao analisarmos a taxa de falha por fator de risco, observamos que, com migration (migração), considerando 51 deploys (implantações), 51% deles falharam — um lift (elevação relativa) de 2,0 vezes. Para o fator “testes reprovados”, em 23 deploys (implantações), 47% falharam — quase 48%. Em “sexta à noite”, isto é, deploys (implantações) depois das 17h, de 11 deploys (implantações), 45% falharam — um lift (elevação relativa) de 1,8 vezes. E assim por diante.

Esses fatores se acumulam; o risco não é simplesmente aditivo. Por exemplo, com migration (migração) mais deploy (implantação) à noite, na sexta-feira: de 4 deploys (implantações), 25% falharam (um falhou), resultando em lift (elevação relativa) de 1,0.

Há também casos em que o resultado é positivo. Se os testes estão aprovados, não há migration (migração) e a implementação foi feita por uma pessoa sênior, em 96 deploys (implantações), apenas 13% falharam — um lift (elevação relativa) de 0,5.

Explicando a pontuação de risco e seus usos

Qual é a intenção desse deploy risk score (pontuação de risco de implantação)? Cada fator empurra a probabilidade de falha para cima ou para baixo. Se nós somássemos todos eles em um único número — esse risk score (pontuação de risco) —, poderíamos avaliar o risco agregado. Um deploy (implantação) na sexta à noite, com migration (migração), testes reprovados e autoria júnior, é mais arriscado, pois acumula vários fatores simultaneamente.

Nos próximos vídeos, vamos deixar de olhar fator a fator manualmente e permitir que um modelo, treinado de acordo com nossa base de PRs (Pull Requests, solicitações de alteração), aprenda a partir desse histórico e o transforme em um score (pontuação) de 0 a 100. Essa pontuação poderá barrar um deploy (implantação) se ele for crítico — isto é, se representar um risco muito alto —, antes de ir para produção.

No próximo vídeo, vamos discutir quais features (características) extrair de cada PR (Pull Request, solicitação de alteração) para o modelo. Vamos ver isso? Vejo vocês no próximo. Valeu!

Identificando riscos em deploys - Features preditivas: o que torna um deploy perigoso

Apresentando as features preditivas

Chegamos ao vídeo 1.2 da Aula 1 de CI/CD Inteligente. Vamos falar sobre features (características) preditivas. O que torna um deploy (implantação) perigoso? Vamos transformar sinais brutos de commits (registros de alteração) e pull requests (PRs) em um vetor numérico de features (características) que um modelo consegue aprender.

No nosso cenário real, vamos pegar um lote de PRs com mensagens e estatísticas de diff (diferença). Na teoria, vamos do diff bruto ao feature vector (vetor de características), calculando a correlação de cada feature (característica) com falha.

Apresentando os conceitos-chave

Quais são os conceitos-chave que vamos aprender hoje?

Retomando: vamos aplicar esses conceitos para pegar um lote de PRs com mensagens e estatísticas de diff. Com esse diff bruto, vamos construir o feature vector e calcular a correlação de cada feature (característica) com as falhas.

Executando o script de exemplo

Vamos ver como vamos trabalhar com este script em Python de exemplo. Vamos executar nosso script em Python de exemplo. Já o executamos. O que temos?

Temos a extração de features (características) preditivas de pull requests (PRs). Foram processados 120 pull requests (PRs). Há feature vectors (vetores de características) como amostras dos seis primeiros PRs: 1000, 1001, 1002, 1003, 1004 e 1005.

Entre as métricas exibidas no exemplo:

No caso anterior, não foi algo que falhou. Aqui, temos o 1001: churn (volume de mudanças) de 612, nenhuma cobertura de testes, complexidade um pouco maior e uma quantidade maior de arquivos. O código não é tão antigo. O risco é 1, mas acabou falhando. Há outras ocorrências com a mesma correlação que podemos observar, por exemplo, o 1005, com churn de 684, que corresponde à relação que mencionamos acima. Vamos consultar o nosso README: o churn é o volume de mudanças — quanto mudou, de fato, no código. Exemplos: 612, 242. Isso representa o quanto foi alterado no nosso código.

Analisando as correlações e pesos

Quais features (características) mais se associam à falha? Quanto maior o número de arquivos, maior a probabilidade de falha. Quanto maior o número de mudanças (entradas e saídas de código, o diff), maior o risco. Quando temos uma cobertura de testes maior, o risco reduz. Isso é esperado, mas vale reforçar.

As features (características) não têm o mesmo peso. O número de arquivos e o code churn (volume de mudanças no código) costumam dominar o sinal, enquanto a cobertura de testes puxa o risco para baixo. Mudanças extensas aumentam o risco de falha, pois mexemos muito na base de código. A idade do código também pode aumentar o risco, porque podemos ficar muito distantes do main atualizado, da base atualizada. Porém, isso não é necessariamente um risco, dependendo do que estamos modificando.

A correlação simples já mostra a direção de cada feature (característica), mas trata cada uma isoladamente. Um modelo aprende os pesos em conjunto, considerando as interações entre elas.

Antecipando o próximo passo

No próximo vídeo, nós vamos falar sobre treinar um modelo de risco com base nesses vetores dos quais estamos tratando: vetores de complexidade, de cobertura, de idade, de número de arquivos, etc. Vamos ver isso, então?

[música]

Sobre o curso CI/CD inteligente: automação preditiva e entrega progressiva

O curso CI/CD inteligente: automação preditiva e entrega progressiva possui 156 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de Builds em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Builds acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas