Inscreva-se no feed

A demanda pela execução de sistemas complexos com dezenas a centenas de microsserviços em escala massiva aumentou bastante. Além disso, os usuários finais esperam que os serviços de que eles dependem tenham disponibilidade ininterrupta, fazendo com que até mesmo poucos minutos de downtime importem. Um engenheiro do caos proativo atende às expectativas do usuário ao identificar os obstáculos e fortalecer os serviços antes que ocorra downtime em um ambiente de produção. A engenharia do caos é essencial para não perder a confiança dos usuários finais.

Para atender à necessidade de uma plataforma Kubernetes resiliente e oferecer experiências de usuário aprimoradas, a Red Hat colabora com a comunidade open source e os usuários finais para criar e manter ferramentas open source e frameworks de engenharia do caos, como o Krkn. Para ter uma ideia das funcionalidades do Krkn, confira alguns recursos extras que incluem insights e descobertas feitas em execuções de engenharia do caos.

O Krkn está sendo muito mais adotado pela comunidade e pelos clientes em uma abundante quantidade de soluções. Por isso, enfrentamos desafios onde a inteligência artificial (IA) demonstrou ser útil nos seguintes casos:

  • Adicionar e atualizar casos de teste à medida que as soluções recebem novas funcionalidades e correções.
  • Adicionar e manter a cobertura da engenharia do caos em várias soluções, o que envolve rastrear todas de perto.
  • Executar centenas de casos de teste, em vez de apenas aqueles com uma alta probabilidade de interrupção.

As equipes de engenharia do caos da Red Hat e a IBM Research estão trabalhando juntas para integrar a IA ao Krkn, o que melhora e automatiza a cobertura dos testes. Assim, é possível escalar as atividades de engenharia do caos em várias soluções que executam diferentes arquiteturas, escalas de nós e padrões de tráfego.

Caso de uso da integração da IA ao Krkn

Com o aumento da adoção do Krkn na engenharia do caos de várias soluções e configurações, assegurar uma boa cobertura nos casos de teste se tornou um processo complexo. Por exemplo, imagine que você tenha um stack de aplicações com várias implantações, e que os pods precisem trabalhar juntos para atender às solicitações do usuário. Para fazer a engenharia do caos nessa situação, você precisa entender os casos de teste da arquitetura e do design, dependendo da natureza do serviço. Isso inclui padrões de dependência de um microsserviço em um ou mais serviços ou operações de entrada/saída, memória, CPU/uso intensivo de recursos por segundo, padrões de tráfego ou rede e assim por diante.

Para isso, é necessário executar centenas de iterações de casos de teste, exigindo muitas horas de trabalho humano e pode gerar gastos com a nuvem. Mesmo com esse trabalho, você precisa realizar o monitoramento constante para identificar os casos extremos não percebidos e adaptar os casos de teste à medida que o stack de aplicações evolui (inclusão de funcionalidades, alterações na arquitetura e assim por diante). É difícil prever a combinação de cenários quando a execução acontece em vários pods. Isso pode levar ao não cumprimento dos objetivos de nível de serviço (SLOs) e à degradação do desempenho, afetando o serviço.

Imagine executar esse processo em uma grande quantidade de soluções e aplicações. A solução para isso é a integração da Chaos AI ao Krkn. Confira abaixo um exemplo tradicional de como a IA se adapta e ajuda a aumentar a capacidade e solucionar problemas complexos.

O objetivo é que o framework implantado da Chaos AI e Krkn descubra e execute automaticamente cenários que afetam o serviço, além de usar o machine learning (aprendizado de máquina) por reforço para se adaptar às mudanças no stack de soluções.

chaos-testing-with-ai-ptbr

Krkn

O Krkn é um mecanismo de engenharia do caos que tem como alvo as APIs do OpenShift, Kubernetes e nuvem. Ele injeta condições de falha e monitora a recuperação do componente afetado, a integridade geral do cluster e os SLOs de desempenho.

Chaos-recommender

Depois que instruções são dadas a um serviço, o chaos-recommender traça o perfil de cada pod usando o Prometheus para entender se eles usam a rede de maneira intensiva ou se estão relacionados à CPU, memória ou E/S. Em seguida, ele sugere ao Krkn cenários que tenham a maior probabilidade de causar interrupção.

Krkn-telemetry

Quando ativada, a krkn-telemetry coleta e armazena métricas, alertas, parâmetros do caos, aprovações/reprovações e logs de testes, além de detalhes do ambiente como escala (quantidade de nós, pods, rotas e assim por diante), arquitetura (AMD, ARM ou X86_64), plugin de rede (SDN ou OVN) e muito mais. Esses dados são usados no treinamento de um modelo de IA/ML para entender quais componentes falham com frequência. Assim, é possível testar mais esses componentes.

Fluxo de trabalho da Chaos AI

Este é um framework de ponta a ponta que usa os SLOs e cenários do Krkn como entrada. Além disso, com a ajuda do chaos-recommender e da krkn-telemetry, ele atribui um peso aos componentes que exigem teste e executa diferentes combinações de cenários no stack de aplicações.

Veja um exemplo de fluxo de trabalho do Etcd e ApiServer:

Etapa 1

Um usuário define os namespaces do Etcd e ApiServer como alvos e os SLOs para a IA verificar e recompense quando não atingidos. Alguns exemplos:

  • openshift-etcd e openshift-apiserver são as entradas de namespace
  • O servidor da API tem 99% de latência em menos de 1 segundo
  • O SLO é que o Etcd tem eleições de líder menores do que 0

Etapa 2

A Chaos AI aciona o chaos-recommender. Ele traça o perfil dos namespaces do Etcd e ApiServer para identificar os cenários de caos com alta probabilidade de interrupção conforme as métricas de uso de recursos no Prometheus.

Etapa 3

O modelo da Chaos AI é treinado usando o aprendizado por reforço. Os dados da krkn-telemetry sobre os componentes do Etcd e ApiServer são coletados para determinar quais pods e containers falham com frequência.

Etapa 4

A Chaos AI atribui um peso com base na Etapa 2 e 3, além de executar cenários do Krkn. O aprendizado por reforço é baseado em um sistema no qual o framework se recompensa pelos SLOs não atingidos. Nesse exemplo, isso acontece quando a latência da API é menor do que 1 segundo, e quando o Etcd é aprovado nas eleições de líder.

Ela também executa outras áreas que têm menos chances de serem interrompidas, mas com menos iterações. Digamos que sejam encontrados um novo componente ou combinação que falham com frequência. Isso é registrado na krkn-telemetry e usado para alimentar o modelo novamente, o que será considerado nas próximas iterações.

Etapa 5

São geradas falhas como saída para você abordar.

Esse é um processo contínuo que se adapta à medida que a soluções evolui e identifica áreas de melhoria sem intervenção humana quando há possíveis casos extremos não percebidos.

Casos de uso

Em vez de identificar e adicionar manualmente os casos de teste na CI do seu produto, use esse framework para determinar e executar casos de teste de maneira automática. É possível até mesmo ajustar automaticamente não só os componentes que serão os alvos, mas também os recém-implementados.

O melhor é que você pode adicionar, escalar e expandir com facilidade a cobertura dos testes no Red Hat OpenShift e em todo o portfólio, incluindo o Red Hat OpenShift Service on AWS, o Red Hat OpenShift AI e muito mais.

Próximas etapas

Com a integração do Krkn e da Chaos AI, você melhora a cobertura dos testes. Ela melhora a confiança nas soluções e ambiente, além de acelerar a escalabilidade dos usuários ao aumentar o volume de stacks de aplicações e produtos que podem ser testados.

Fique de olho nos resultados da integração e nas descobertas que mostraremos nos próximos posts. Como você pode notar, alguns componentes como o Krkn, chaos-recommender e krkn-telemetry já são open source e podem ser utilizados para testar e fortalecer seu ambiente. Estamos trabalhando ativamente para tornar open source todo o framework da Chaos AI com o Krkn.

As contribuições e os feedbacks são bem-vindos. O código está no Github e, claro, ficaremos felizes em conversar e colaborar com você nos seus casos de uso.


Sobre os autores

Naga Ravi Chaitanya Elluri leads the Chaos Engineering efforts at Red Hat with a focus on improving the resilience, performance and scalability of Kubernetes and making sure the platform and the applications running on it perform well under turbulent conditions. His interest lies in the cloud and distributed computing space and he has contributed to various open source projects.

Read full bio

Mudit Verma is a Senior Research Engineer at Cloud Operations Dept., IBM Research. He possesses over 8 years of research experience. His areas of expertise and interest encompass Distributed Systems and Cloud. In recent years, he has been active in the area of intelligence-driven Cloud Operations and enabling self-* properties including Closed-Loop Management and assurance, AI based Chaos and effective Observability. He has also been a co-inventor of more than 20 United States patents (at various stages of filing), and been a co-author of multiple research papers accepted at top-tier conferences. Additionally, he has actively mentored multiple students and collaborated with professors of various eminent academic institutions such as Boston University, IISc, IITs, IIITs, etc. He is also an ACM Eminent Speaker. He holds bachelors and masters degree from BITS-Pilani and KTH Sweden respectively.

Read full bio

Sandeep Hans is working as a Research Scientist at IBM Research Lab – India. He has extensive experience in Distributed Systems and Artificial Intelligence. He is a co-inventor of multiple patents and co-author of more than 15 research papers in top tier conferences. He received his Ph.D. in Computer Science from Technion - Israel Institute of Technology under the guidance of Prof. Hagit Attiya.  Prior to joining IBM Research, he was a post-doc at Virginia Tech in USA and has also worked with Mindtree Consulting Ltd. in Bangalore. He is currently working on building dependable systems using adversarial AI testing.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Navegue por canal

automation icon

Automação

Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes

AI icon

Inteligência artificial

Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente

open hybrid cloud icon

Nuvem híbrida aberta

Veja como construímos um futuro mais flexível com a nuvem híbrida

security icon

Segurança

Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias

edge icon

Edge computing

Saiba quais são as atualizações nas plataformas que simplificam as operações na borda

Infrastructure icon

Infraestrutura

Saiba o que há de mais recente na plataforma Linux empresarial líder mundial

application development icon

Aplicações

Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações

Original series icon

Programas originais

Veja as histórias divertidas de criadores e líderes em tecnologia empresarial