![RAG: ainda relevante na era dos modelos de contexto longo](https://optimuscloud.com.br/wp-content/uploads/2024/05/1716229323_RAG-ainda-relevante-na-era-dos-modelos-de-contexto-longo-150x150.jpg)
RAG: ainda relevante na era dos modelos de contexto longo
20 de maio de 2024![Instalação do oVirt com nó único hiperconvergente GlusterFS - mais ou menos](https://optimuscloud.com.br/wp-content/uploads/2024/05/1716240129_Instalacao-do-oVirt-com-no-unico-hiperconvergente-GlusterFS-mais-150x150.png)
Instalação do oVirt com nó único hiperconvergente GlusterFS – mais ou menos
20 de maio de 2024A configuração e as estratégias de monitoramento de desempenho de aplicativos (APM) variam de acordo com o design da infraestrutura do aplicativo. Os contêineres gerenciados por ferramentas de orquestração como Docker Swarm ou Kubernetes são dinâmicos e efêmeros, afetando significativamente as estratégias de monitoramento. O desenvolvimento de contêineres acelera a capacidade de uma organização de criar, implantar e dimensionar novos recursos. Embora não seja necessário que os microsserviços sejam implantados em um contêiner, é uma prática comum ajudar a evitar complicações que surgem ao mover o software para a produção.
Vejamos estratégias para integrar a orquestração de contêineres com ferramentas de monitoramento de desempenho de aplicativos. Também discutiremos a detecção de anomalias e a necessidade de automatizar fluxos de trabalho ao usar infraestrutura em contêineres.
Integre ferramentas de orquestração de contêineres
As ferramentas de orquestração de contêineres automatizam a implantação, o dimensionamento, o gerenciamento e a rede de aplicativos em contêineres. Essas ferramentas centralizam o gerenciamento de cargas de trabalho em clusters de máquinas. Exemplos dessas ferramentas incluem Kubernetes, Docker Swarm e AWS Elastic Container Service. Cada um requer uma estratégia consistente para integrar o monitoramento de desempenho de aplicativos.
Gestão de Ambientes Efêmeros
As ferramentas de gerenciamento de contêineres permitem que o sistema se adapte automaticamente à carga ou às mudanças no ambiente. Esses ambientes são altamente dinâmicos e efêmeros, com pods sendo ativados ou encerrados frequentemente conforme as demandas mudam. Quando os pods são desligados, todos os dados armazenados neles são apagados, dificultando o monitoramento. Monitorar cada pod manualmente é impraticável e sujeito a erros, pois eles são dimensionados automaticamente e podem alternar entre hosts. A descoberta automática permite que os sistemas de monitoramento se adaptem a essas mudanças em ambientes em contêineres.
O Kubernetes oferece vários métodos para descoberta automática de contêineres, incluindo descoberta de endpoint de serviço por meio de DNS e busca de informações de cluster usando a API do Kubernetes. O Kubernetes também permite que os usuários anexem rótulos aos seus recursos para que as ferramentas de monitoramento possam reconhecer quais contêineres devem ser monitorados e como.
Métricas granulares em nível de contêiner
Rastrear métricas em nível de contêiner, como uso de CPU, é fundamental para manutenção de software. Esses dados permitem que as equipes monitorem o desempenho, otimizem recursos e gerenciem custos de contêineres e dos aplicativos executados neles.
O monitoramento do uso da CPU ajuda a garantir que recursos suficientes sejam alocados para atender aos requisitos de desempenho. As organizações podem detectar instâncias de contenção de recursos e ajustar adequadamente para evitar a degradação do desempenho. Esse monitoramento também pode identificar oportunidades de otimização de desempenho ao compreender quais componentes e processos estão consumindo mais recursos. Uma vez compreendido, os desenvolvedores podem otimizar o código, melhorar a eficiência do algoritmo ou ampliar recursos.
As métricas em nível de contêiner também são úteis na detecção de vizinhos barulhentos. Vizinhos barulhentos ocorrem quando os recursos compartilhados tornam-se limitados devido ao uso excessivo de um sistema vizinho. Um aplicativo pode apresentar desempenho reduzido ou até travar se os recursos forem reduzidos o suficiente. Esse desempenho degradado pode ser difícil de rastrear sem métricas em nível de contêiner em uso.
Mapeamento de Dependências
O mapeamento de dependências fornece insights sobre os relacionamentos entre vários componentes em um sistema conteinerizado. Nas arquiteturas conteinerizadas, as aplicações são compostas por múltiplos serviços que interagem entre si. Os mapeamentos de dependências ajudam as ferramentas APM a compreender as dependências entre esses serviços, incluindo padrões de comunicação, fluxo de dados e dependências externas.
As ferramentas APM usam mapeamento de dependências para identificar gargalos de desempenho ou pontos de falha. Esses mapeamentos auxiliam ainda mais na análise da causa raiz, rastreando o impacto dos problemas de desempenho em serviços interconectados para identificar a origem das equipes de DevOps ou SRE.
Rastreamento Distribuído
As ferramentas APM devem oferecer suporte ao rastreamento e criação de perfil distribuídos para acompanhar as solicitações à medida que elas fluem por vários contêineres. O rastreamento dinâmico permite que as equipes observem implicitamente como os serviços interagem entre si, exigindo que cada serviço emita algum sinal de identificação. À medida que os dados fluem pelos contêineres, as ferramentas de monitoramento podem rastreá-los para ver para onde eles fluem e quanto tempo levam para chegar até lá. Esses dados permitem que as ferramentas de APM identifiquem gargalos e infraestruturas de baixo desempenho.
Integrar malha de serviço
A comunicação entre contêineres é fundamental no gerenciamento do desempenho do aplicativo. Mesmo os contêineres gerenciados são isolados uns dos outros, exceto quando um sistema de comunicação serviço a serviço é implementado. Tal sistema poderia ser construído manualmente, mas não é escalável ou sustentável à medida que o sistema cresce. Uma malha de serviço pode substituir esse sistema manual, permitindo que microsserviços em contêineres se comuniquem diretamente.
Uma malha de serviço como o Istio fornece recursos de observabilidade e segurança. Ele injetará dados pertinentes nas mensagens à medida que elas fluem pelos microsserviços. Esses dados podem ser rastreados pelas equipes de DevOps para identificar problemas no sistema e entender melhor como os dados fluem.
Monitore a segurança do contêiner
As ferramentas APM fornecem visibilidade sobre vulnerabilidades de segurança em sistemas conteinerizados. Vazamentos de abstração, como variáveis de ambiente expostas, acesso ao sistema de arquivos e análise de tráfego de rede, devem ser monitorados. As ferramentas APM também podem monitorar vulnerabilidades de escalonamento de permissões. Tentativas de escalonamento de privilégios, como acesso não autorizado a recursos privilegiados ou modificação de configurações do sistema, devem ser detectadas pela sua ferramenta APM.
Automatize fluxos de trabalho
A automação de fluxos de trabalho em ambientes conteinerizados ajuda a garantir eficiência e escalabilidade e reduz a probabilidade de erro humano. Vários fluxos de trabalho, incluindo implantação, dimensionamento e recuperação de desastres, devem ser automatizados. O monitoramento e o registro em log também podem ser automatizados para dar suporte a esses contêineres dinâmicos.
Ao automatizar o registro e o monitoramento, os alertas podem ser configurados automaticamente para agir mais rapidamente do que um ser humano faria. Por exemplo, se um contêiner deixar de responder ou ficar lento, o monitoramento poderá detectar o problema antes que a causa seja conhecida. Quando os alertas são combinados com respostas automáticas, como o dimensionamento de contêineres, esses problemas podem ser corrigidos automaticamente e sua causa raiz determinada posteriormente.
Monitorar métricas em nível de VM
Em um ambiente conteinerizado executado em máquinas virtuais, o APM no nível da VM garante a integridade e o desempenho gerais do sistema. As plataformas de orquestração de contêineres fornecem insights sobre a integridade da infraestrutura de contêineres e de orquestração, mas o monitoramento no nível da VM oferece uma compreensão mais profunda da infraestrutura subjacente que dá suporte aos aplicativos em contêineres. O monitoramento deve incluir utilização de recursos, desempenho do hipervisor, segurança e otimização de desempenho.
Use CI/CD moderno
Os pipelines tradicionais de integração contínua/implantação contínua (CI/CD) podem ter dificuldades para acompanhar o ritmo crescente de mudanças possibilitadas pela conteinerização e pelos microsserviços. Esses ambientes também são altamente dinâmicos, com contêineres aumentando, aumentando e terminando dinamicamente em resposta à demanda. Os pipelines de CI/CD devem se adaptar a essas mudanças para garantir implantações tranquilas e confiáveis.
Os pipelines modernos de CI/CD são projetados para ambientes em contêineres. Eles oferecem suporte a recursos como configuração declarativa, infraestrutura como código, testes automatizados e implantações canário para facilitar implantações rápidas de aplicativos.
A postagem O impacto da conteinerização nas estratégias de APM apareceu pela primeira vez no The New Stack.