BLOG

Mania de microsserviços convencionais: Desafios Aumentando com a Adoção

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 02 de julho de 2018

Há poucos anos, os microsserviços eram uma curiosidade discutida pelos desenvolvedores com uma espécie de entusiasmo vertiginoso pelas possibilidades e oportunidades que a arquitetura incipiente dos aplicativos apresentava.

Hoje em dia, até nós, pessoas ligadas em rede, estamos falando sobre elas porque elas se tornaram praticamente — como declara a pesquisa mais recente da Lightstep — comuns nas empresas. Seriamente. Em nosso relatório State of Application Delivery de 2018, até mesmo funções relacionadas à rede indicaram que desejavam que os serviços de aplicativos fossem fornecidos em contêineres. Portanto, não deveria ser uma surpresa descobrir que a pesquisa Lightstep mencionada anteriormente revelou que não apenas 91% dos entrevistados usam ou planejam usar microsserviços, mas 86% também esperam que eles se tornem o padrão dentro de cinco anos.

Isso não quer dizer que não haja desafios. Na verdade, 99% dos entrevistados na pesquisa da Lightstep relataram desafios ao usar microsserviços. Pelas respostas, pode-se dizer que praticamente tudo é mais difícil (e às vezes mais caro) com microsserviços.

A pesquisa observou desafios comerciais e operacionais, desde o aumento do custo de agregação de logs (21%) até a falta de conhecimento do que fazer com o aumento de dados (17%) e dificuldades na solução de problemas (73%).

Mais preocupante, no entanto, foi a descoberta de que “98% daqueles que enfrentam problemas para identificar a causa raiz dos problemas em ambientes de microsserviços relatam que isso tem um impacto direto nos negócios”.  

Este é um dos principais desafios ecoados em outros lugares, geralmente usando os termos “visibilidade” ou “observabilidade”, dependendo se você está do lado da rede ou se está envolvido com DevOps.

Ambos descrevem essencialmente as mesmas capacidades – ser capaz de ver o que está acontecendo enquanto as mensagens atravessam a rede do cliente para o serviço e vice-versa. Dentro do ambiente de contêiner, isso é particularmente desafiador devido ao escopo e à escala dos serviços envolvidos.

Com um aplicativo web tradicional de três camadas, você tem três conjuntos de logs e três sistemas que precisa rastrear. Com uma arquitetura de microsserviços – provavelmente liderada por uma API que é potencialmente usada por clientes da web e móveis – você pode ter dezenas ou centenas de serviços diferentes que precisa monitorar.

O modelo de escala ainda é o mesmo – estamos escalando horizontalmente (para fora) com clones – mas a magnitude dentro de um ambiente de contêiner é significativamente maior. É como jogar whack-a-mole com cem buracos em vez de dez. Descobrir o caminho que qualquer transação tomou será desafiador, para dizer o mínimo. Principalmente quando o caminho pode ter desaparecido. Afinal, a premissa da maioria dos ambientes de contêiner é falhar rapidamente e substituir instâncias em vez de esperar por intervenção manual.

Há algumas maneiras de enfrentar esse desafio. Em primeiro lugar, temos a instrumentação que auxilia no rastreamento e na solução de problemas. Essa abordagem não é nova, mas se torna mais desafiadora devido à natureza volátil dos ambientes de contêineres. Ainda assim, a inserção de elementos de rastreamento (como cabeçalhos HTTP personalizados com identificadores exclusivos) pode ser uma grande vantagem para as operações ao tentar rastrear erros ou problemas de desempenho. Embora normalmente não seja um recurso das opções de dimensionamento de contêineres nativos, é um recurso que as malhas de serviço estão abordando como parte de suas ofertas.

A segunda é a capacidade de colocar em quarentena microsserviços com problemas para permitir que operações e desenvolvimento examinem o sistema no estado que causou a falha. A quarentena basicamente remove o contêiner com problemas do ambiente ativo para que chamadas não sejam mais enviadas a ele, mas o mantém ativo para análise e inspeção. 

Não existe uma solução mágica, mas conseguir rastrear e colocar contêineres em quarentena em implantações baseadas em microsserviços pode ajudar muito a reduzir o tempo médio de resolução (MTTR) e reduzir o impacto nos negócios.