BLOG

Malhas de serviço e modernização de aplicações

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 10 de dezembro de 2018

A mania dos contêineres continua inabalável. Mas isso pode não significar o que você pensa em termos de aplicativos e arquiteturas.

Ainda há uma tendência de equiparar contêineres a microsserviços. E por igualar quero dizer "usar de forma intercambiável". 

Essa é uma suposição ruim.

Veja, uma porcentagem significativa de contêineres hoje está sendo usada para implantar... aplicativos existentes. Conforme observado no Container Journal, uma pesquisa da IDC descobriu que menos da metade (46%) dos contêineres foram usados para novas aplicações. O restante estava executando aplicativos existentes. (Fonte: Pesquisa da IDC descobre que contêineres impulsionam aplicativos de missão crítica ) A explicação frequentemente citada para essa estranha combinação? Modernização.

Há vários estudos e pesquisas que apontam que o número de "novos" aplicativos criados como nativos da nuvem ainda é relativamente pequeno — menos de 1 em cada 5, segundo a pesquisa da Cap Gemini. Uma pesquisa recente da Diamanti descobriu que 31% dos líderes de TI estavam buscando contêineres especificamente com o propósito de modernizar aplicativos legados. Isso não é nenhuma surpresa. Estamos em uma era de TI multigeracional, dando suporte a cinco gerações diferentes de arquiteturas de aplicativos. 

Então, há todos esses aplicativos tradicionais por aí — e ainda há mais por vir — que podem acabar sendo implantados em contêineres.

Vou dizer que isso é algo bom, porque contêineres e tecnologias relacionadas, como malhas de serviço, podem realmente ajudar nos esforços de modernização.

 

Modernizando o monitoramento com uma malha de serviço

Observabilidade, se você não estiver familiarizado, compreende três pilares geralmente aceitos, conforme detalhado por Cindy Sridharan em " Observabilidade de Sistemas Distribuídos ":

  1. Registros de eventos
  2. Métricas
  3. Rastreamentos

Não faltam conteúdos sobre esse tópico — incluindo os desafios inerentes aos grandes dados operacionais gerados por logs e a emissão de telemetria — então não vou abordá-los aqui. Basta dizer que você precisa de todos os três para perceber todo o potencial da observabilidade.

Basta dizer também que, neste último ponto — rastros —, os aplicativos existentes e legados estão em desvantagem. Veja, a maioria não foi instrumentada para emitir a telemetria necessária para rastrear uma transação em sua jornada desde a origem até a realização. Logs de eventos e métricas são muito mais fáceis de gerar e obter, independentemente da arquitetura e do ambiente do aplicativo. Essas são opções padrão em quase todas as plataformas web e de aplicativos. Mas instrumentação? Isso geralmente implica código incorporado ou agentes com visibilidade do tráfego em tempo real.

Que é uma das coisas que uma malha de serviço pode fornecer.

Se você se lembra, uma malha de serviço é composta principalmente de proxies sidecar dentro de um ambiente de orquestração de contêineres. Esses proxies basicamente representam toda a comunicação - de entrada e saída - para um contêiner. Ao fazer isso, esses proxies dimensionam os serviços, mas também fornecem um local perfeito para instrumentar o tráfego com o objetivo de permitir a observabilidade total. Eles podem enriquecer mensagens que trafegam pelo ambiente do contêiner para incluir tags detalhadas e outros metadados que permitem que os sistemas rastreiem e correlacionem o tráfego entre vários sistemas e serviços.

O melhor de tudo é que eles podem conseguir isso com muito pouca modificação no aplicativo . Em alguns casos, como o de aplicativos Java, há opções baseadas em configuração para injetar os recursos apropriados sem modificar o código.

A capacidade de emitir rastros de aplicativos existentes é uma capacidade fundamental na busca pela verdadeira observabilidade. Se os aplicativos existentes forem implantados em contêineres, considere como uma malha de serviço pode ajudar a modernizá-los.