+55 11 3995-6919 / +55 11 3900-1010

Estruturando um sistema de rastreamento distribuído com AWS X-Ray

Nos últimos anos, as empresas de tecnologia têm pensado cada vez mais em como construir ou transformar suas aplicações utilizando a arquitetura de microsserviços. De forma geral, essa arquitetura tem como principal aspecto a divisão da carga de trabalho em pequenas partes de controle. Logo, quando pensamos em como fazer toda a rastreabilidade de uma estrutura, que com o passar do tempo, torna a ser mais complexa e distribuída. Precisamos levar em conta de que agora em diante teremos partes cada vez menores.
Abordando o monitoramento dessas arquiteturas, possuímos diversas soluções que podem atender os requisitos necessários de acompanhamento e rastreabilidade. Mas ao se tratar do ambiente de nuvem pública, utilizando Amazon Web Services (AWS) por exemplo, há o X-Ray. Esses serviços, tem como principal objetivo obter a visibilidade de desempenho dos aplicativos que estão sendo utilizados. Assim é possível entender a performance da arquitetura.

Fonte: https://d1.awsstatic.com/Products/product-name/Images/product-page-diagram_AWS-X-Ray_how-it-works.2922edd4bfe011e997dbf32fdf8bd520bcbc85fb.png

O X-Ray pode disponibilizar uma visualização sobre solicitações, conforme elas percorrem na workload. Assim criando um mapa dos elementos que pertencem ao aplicativo. Além de abranger simples serviços a aplicações complexas, sendo possível utilizar o X-Ray para analisar as aplicações de vários níveis, como podemos ver na imagem abaixo:

Fonte: https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html

Esse serviço implementa o rastreamento, adicionando um cabeçalho HTTP (com um ID exclusivo) para as requisições que ainda não possui e permanece encaminhando para as demais camadas do gerenciador de requisições.
Uma amostra significativa dos segmentos é conduzida ao X-Ray para então ser agrupado (grupos de segmentos que compartilham um ID em comum). Após processado, o console do X-Ray disponibiliza um mapa de serviços que representa visualmente a relação das aplicações entre si em sistemas simples de distribuição:

Fonte: https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html

Assim como em estruturas mais complexas, a estrutura possui mais camadas e pontos distribuídos com diversos micros serviços acoplados:

Fonte: https://docs.aws.amazon.com/xray/latest/devguide/xray-console.html

Exemplo

Para a implementação em linguagens, atualmente são discutidas as bibliotecas de auto instrumentação, não sendo necessárias alterações no uso dessas linguagens. Podemos encontrar diversos modelos de aplicações no github. Assim como fontes da documentações AWS que auxiliam na implementação da auto instrumentação em linguagens como .NET (IIS) e JAVA.
Ao configurar a instrumentação automática para rastreamento de um aplicativo .NET Framework simples em execução no IIS, usamos o novo instalador da aplicação. Depois de baixar, executar o instalador e redefinir o IIS, podemos usar a visualização de módulos a fim de verificar se um novo módulo de rastreamento foi adicionado. Como podemos visualizar na imagem abaixo:

Fonte:https://aws.amazon.com/pt/blogs/developer/a-new-more-simplified-setup-for-x-ray-tracing-of-net-applications/

Com essas configurações, já é possível iniciar o rastreamento deste aplicativo – sem alterações de código ou projeto.

Conclusão

Portanto, quando falamos em sistemas distribuídos, é preciso entender a dificuldade de rastrear dados e performance. Pensando nisso, é importante investir em soluções de rastreamento, e compreender que o X-Ray possibilita essa visualização. O que permite também apresentar um mapeamento macro da solução, facilitando a descoberta da causa do problema, além de possíveis gargalos.

Leia mais artigos técnicos em nosso blog!