Gerenciamento do caos de microsserviços e contêineres

Por Outubro 11, 2018

Efeito Borboleta

Imagine um ambiente em que a falha de um componente de aplicativo prejudica um serviço todo. Podemos dizer que este não é um grande problema; isso acontece sempre ao gerenciar aplicativos monolíticos, além dos problemas de “falha um, falham todos”, característicos de apenas um código executável lógico.

Mas imagine um ambiente em que a falha de um componente que nem conhecíamos e que talvez nem exista provoque a queda do sistema todo. Agora sim, estamos lidando com o complexo e o caótico.

Bem-vindo ao mundo do monitoramento de contêineres e microsserviços.

O desafio da complexidade

Os microsserviços e contêineres são ótimos para os desenvolvedores porque eles eliminam o problema de fragilidade, escala e implementação associado a arquiteturas de aplicativos bem acoplados. Ao desmembrar os aplicativos em serviços independentes menores com suporte na nuvem e entrega contínua, as arquiteturas de microsserviços permitem que os desenvolvedores criem códigos com mais rapidez; sem ter que esperar por reconstrução, reimplementação e testes de integração demorados do sistema, nem se preocupar se uma mudança em uma linha do código pode causar um vazamento de memória e derrubar o sistema.

Então, como desenvolvedor, você não gostaria de trabalhar com algo que acaba com a sua preocupação? Claro que sim, mas há um problema – essa preocupação nunca desaparece, ela só muda de lugar. Com o avanço de aplicativos monolíticos para microsserviços, outros grupos agora têm que encarar o “desafio da complexidade” e todo o novo conjunto de questões associadas, além dos novos profissionais mantenedores da tecnologia, quer dizer, os engenheiros de confiabilidade do site, os profissionais de DevOps e operações de TI.

Novos níveis de complexidade

Do ponto de vista do monitoramento de aplicativos, a arquitetura de microsserviços, que estrutura um aplicativo como uma coleção de serviços distintos ou superficialmente acoplados, envolve um nível de complexidade totalmente novo. Em primeiro lugar, essas arquiteturas aumentam naturalmente a proliferação de instâncias de software devido à decomposição de aplicativos monolíticos – e isso é só o começo. Acrescente aí os contêineres, onde serviços individuais podem ser orquestrados de forma dinâmica para que iniciem, parem e reiniciem em qualquer parte do ambiente, dificultando a descoberta e o rastreamento dos problemas. Como um dos meus colegas colocou de forma tão acertada, monitorar microsserviços é como tentar rastrear um beija-flor em um bando enorme de beija-flores. Uma tarefa difícil, que piora ainda mais devido ao aumento do número de dependências, e possíveis identificadores do contêiner, como endereço de IP, são obscurecidos pelo sistema host em que são executados.

Impacto no gerenciamento de desempenho de aplicativos

A natureza momentânea dos aplicativos em contêineres apresenta muitos desafios para as equipes de gerenciamento de desempenho de aplicativos, pois elas precisam entender como está o desempenho dos contêineres e a sua contribuição para o desempenho geral do aplicativo. Além disso, as equipes precisam obter uma visibilidade precisa, que não é obtida facilmente usando ferramentas tradicionais, onde a densidade dos padrões de microsserviços torna os mapas de topologia incompreensíveis. Ademais, há um aumento exponencial nos dados devido às interações dos microsserviços que potencialmente geram centenas de transações e o processo de definição manual das linhas de base de desempenho se torna quase impossível. Por fim, e não menos importante, os microsserviços em contêineres geralmente exibem comportamentos desconhecidos, que não permitem determinar o desempenho por meio da análise de componentes individuais.

Esses problemas determinam a necessidade de um novo modelo para o gerenciamento de desempenho de aplicativos (APM – Application Performance Management), exigindo que as equipes avaliem a eficácia das soluções atuais para resolver os desafios de monitoramento de microsserviços e contêineres. As áreas abaixo devem ter prioridade:

  • Implementações leves – as soluções tradicionais baseadas em agentes podem ser inadequadas para determinados estilos e aumentar as despesas. Porém, outras situações terão os benefícios das métricas de desempenho avançadas fornecidas por agentes. Procure métodos de soluções que possam incorporar os dois estilos.
  • Rastreamento de transações ‘em todos os pontos’ – com microsserviços em contêineres, a complexidade muda para a comunicação entre os microsserviços; é aqui que muitos problemas provavelmente ocorrerão. As transações se tornam menos limitadas, como no caso de sistemas monolíticos e seus componentes (front-end, middleware e banco de dados); em vez disso, estendem-se para muitos serviços por meio das APIs. Portanto, o rastreamento de transações ganha maior importância, principalmente se tiver suporte ao rastreamento de ponta a ponta do desempenho da API referente às transações específicas de microsserviços.
  • Métodos e análises estatísticos – mesmo com taxas maiores de frequência de coleta de dados, é difícil definir o desempenho real quando os serviços em contêineres oscilam dinamicamente. É por isso que as soluções modernas de monitoramento de aplicativos incorporam métodos estatísticos comprovados para estabelecer intensidades de variação a partir de comportamentos padronizados de desempenho. No CA APM, isso é chamado de Análise Diferencial, que, ao contrário da linha de base estática tradicional, foi criada para os ambientes dinâmicos dos microsserviços.
  • Fluxos de trabalho da triagem assistida – na triagem de problemas em ambientes em contêineres, velocidade e clareza são elementos essenciais, que envolvem a verificação de quais, quando, quem (é impactado), quando e por que os eventos ocorrem. A triagem assistida do CA APM possibilita isso, identificando os eventos mais significativos que ocorrem nos ambientes de microsserviços e fornecendo informações contextualizadas (histórias). Em vez de procurar manualmente informações em mapas de topologia complexos após o fato, as ações de triagem assistida de eventos (como condições e variações anômalas detectadas pela análise diferencial) automaticamente reúnem e apresentam as evidências em um “caderno” de análises, acelerando a análise de causa raiz e reduzindo a fadiga de alertas.

Monitoramento de aplicativos da CA

Sem dúvida alguma, os microsserviços e os contêineres aumentam o nível de monitoramento de aplicativos. Na CA Technologies, reconhecemos isso e, por isso, continuamos investindo no fornecimento das capacidades necessárias para que as organizações aproveitem os benefícios dessas arquiteturas dinâmicas. Embora esses recursos estejam incluídos em nossa solução CA APM, também reconhecemos a importância de debates e discussões contínuos, pois essas plataformas amadurecem e evoluem. Por isso, temos a satisfação de patrocinar um novo eBook sobre monitoramento de contêineres, que descreve em detalhes os desafios mencionados acima, além de novas abordagens e técnicas de monitoramento necessárias para futuras expansões dessas tecnologias.

Este eBook e outros recursos estão em nossa página de monitoramento de contêineres.

Escrito por Peter Waterhouse
Senior Strategist at CA Technologies
LinkedIn: @peterwaterhouse