Usando IA generativa para correção de problemas e confiabilidade de software
25 de julho de 2023 por Dotan Horovits
No cenário digital acelerado de hoje, manter seus serviços atualizados e com bom desempenho, especialmente para serviços on-line e baseados em nuvem, é crucial para se manter competitivo. Problemas de tempo de inatividade ou latência podem afastar os clientes, especialmente quando basta um clique para mudar para uma solução SaaS concorrente. As equipes de DevOps e de engenharia de confiabilidade de site (SRE) enfrentam o desafio constante de minimizar o tempo médio de correção (MTTR) ao lidar com erros e problemas. Por mais valiosos que sejam os motores de busca como o Google, a grande quantidade de informações disponíveis pode fazer com que encontrar as soluções certas seja uma tarefa demorada. E se houvesse uma forma de automatizar e agilizar esse processo, tornando a investigação de erros mais inteligente, focada e eficiente?
Este artigo orientará você na jornada de resolução de erros, desde a primeira linha de registro obscura até a identificação do problema oculto nela. Resolveremos o problema usando diversas táticas, levando, em última análise, ao uso de IA generativa para reduzir o MTTR e fornecer recomendações de TI precisas. Esta jornada inclui medidas e princípios úteis que podem ser aplicados pelas equipes de DevOps e explora o potencial de aplicação de IA generativa.
Imagine isto: uma linha de registro aparece com uma mensagem de erro obscura, e o primeiro instinto é procurar por essa mensagem no Google em busca de possíveis soluções. Afinal, outra pessoa deve ter encontrado um problema semelhante, certo? No entanto, a abundância de recursos e resultados de pesquisa pode ser esmagadora. Os resultados da pesquisa geralmente são exibidos com base na relevância do site, não necessariamente na relevância do erro em si. Conseqüentemente, um tempo precioso é desperdiçado examinando inúmeros resultados de pesquisa, levando mais tempo para entender e corrigir o erro. Para as equipes de DevOps e SRE responsáveis por manter a estabilidade do sistema, a redução do MTTR é um indicador-chave de desempenho (KPI) crucial. Isto levanta a questão: como podemos aproveitar a automação e a inteligência artificial para melhorar o processo de pesquisa e acelerar a resolução de erros?
Na tentativa inicial da nossa organização de enfrentar esse desafio, nos concentramos em aproveitar técnicas de crowdsourcing para obter resultados mais relevantes do que a pesquisa de força bruta no Google. Além disso, queríamos automatizar o processo e executá-lo off-line para que, quando ocorrer um incidente, possamos oferecer informações úteis em vez de iniciar a pesquisa quando o sistema estiver inativo ou com defeito.
A abordagem envolve uma fase offline e uma fase online. A fase off-line envolveu a análise de todos os nossos logs ingeridos e a identificação de padrões de log comuns. Isso também nos permitiu contar com que frequência esse padrão ocorreu em nosso sistema e quão prevalente ele é. Em seguida, rastreamos fóruns de tecnologia relevantes, como StackOverflow, Grupos do Google e Grupos do Bing, para obter discursos relevantes sobre esses padrões de log que poderiam oferecer soluções relevantes. A próxima etapa foi classificar os resultados da pesquisa por relevância e escolher os cinco links mais relevantes.
A fase offline resultou em uma biblioteca de padrões de log conhecidos e, para cada um deles, um insight cognitivo contendo esses links, além de informações adicionais como o nível de gravidade, quantas vezes esse padrão ocorreu nos logs, a data da primeira ocorrência e tags adicionais de tecnologias, ferramentas e domínios envolvidos.
A fase online ocorre em tempo real à medida que novos logs chegam. Ao ingerir o log, ele é automaticamente comparado com todos os padrões conhecidos; se corresponder a um, obtém o insight cognitivo para esse padrão. Isso significa que assim que o log problemático chega, o engenheiro de DevOps já focou e classificou os resultados da pesquisa e o contexto para começar, o que acelera o processo de investigação.
Depois de refletir sobre a nossa abordagem inicial, tivemos uma epifania. Grandes modelos de linguagem (LLMs), como o ChatGPT, já haviam rastreado a web e absorvido uma grande quantidade de informações. Então, por que não aproveitar suas capacidades e pedir insights diretamente? A ideia era simples: deixar a IA “ler as postagens” para nós e nos fornecer recomendações. Começamos formulando questões específicas como “Quais seriam os possíveis erros?” e até deu um passo além, solicitando novas etapas de investigação. No entanto, a implementação desta abordagem aparentemente simples trouxe consigo o seu próprio conjunto de desafios. Precisávamos executar o pré-processamento antes de perguntar à IA generativa, bem como executar o pós-processamento nas respostas retornadas, para obter o que esperávamos. Vamos ver o que esse processo envolve.