28/04/2023
Por Gustavo Mainchein
O X-Ray da AWS
é um serviço de análise e depuração de aplicações que ajuda desenvolvedores a
entender o comportamento de suas aplicações distribuídas, identificando
problemas de performance e solucionando erros mais rapidamente.
Com ele, é
possível visualizar e analisar o fluxo de uma requisição desde o início até o
fim, incluindo chamadas a serviços externos e microsserviços. O serviço captura
informações como tempo de resposta, erros e exceções, além de permitir a
criação de mapas de serviços que ajudam a identificar gargalos e possíveis
pontos de falha na arquitetura.
Ao utilizar o
serviço, os desenvolvedores podem facilmente identificar problemas de
performance em suas aplicações e melhorar a experiência do usuário final. Além
disso, a ferramenta permite a identificação rápida de erros em ambientes de
produção, o que ajuda a reduzir o tempo de inatividade e minimizar o impacto
nos usuários.
O X-Ray é fácil
de integrar com outras ferramentas da AWS, como o Amazon CloudWatch e o AWS
Lambda, bem como pode ser usado em conjunto com diversas linguagens de
programação, como Java, Node.js, Python e Ruby.
Em resumo, esse
serviço da AWS se consolida como uma
ferramenta poderosa para analisar e depurar aplicações distribuídas, que ajuda
desenvolvedores a identificar problemas de performance e erros de forma mais
rápida e eficiente, melhorando a experiência do usuário final.
Funcionamento do X-Ray
O funcionamento do X-Ray envolve a
instrumentação da aplicação, onde o desenvolvedor adiciona código aos
componentes da aplicação para gerar dados de rastreamento. Esses dados são
enviados para o serviço, para serem agregados e apresentados em uma interface
web.
A seguir, descrevo com mais detalhes as etapas envolvidas no funcionamento do X-Ray:
1. Instrumentação da aplicação: para que a aplicação possa ser rastreada pelo serviço, é necessário que ela seja instrumentada, ou seja, que o código seja modificado para gerar dados de rastreamento. A AWS oferece uma série de bibliotecas e SDKs para as principais linguagens de programação, facilitando a instrumentação da aplicação;
2. Geração de dados de rastreamento: após a instrumentação, a aplicação gera dados de rastreamento que incluem informações como o tempo de execução, o nome da operação e a identificação do serviço. Esses dados são enviados para o X-Ray em intervalos regulares, geralmente a cada 1 segundo;
3. Armazenamento e agregação de dados: a ferramenta armazena os dados de rastreamento em um banco de dados distribuído, que permite a agregação e análise dos dados em tempo real. O serviço usa algoritmos de análise para identificar gargalos e pontos de falha na aplicação;
4. Visualização dos dados: a interface web do X-Ray permite que os desenvolvedores visualizem os dados de rastreamento em vários formatos, incluindo gráficos de fluxo e listagens de serviços. Os dados podem ser filtrados e organizados para facilitar a análise;
5. Integração com outros serviços: o serviço pode ser integrado com outros serviços da AWS, como o Amazon CloudWatch e o AWS Lambda, permitindo que os desenvolvedores monitorem e depurem a aplicação de forma mais eficiente;
6. O X-Ray permite que os desenvolvedores definam políticas de retenção de dados personalizadas para seus dados de rastreamento, para garantir que apenas os dados relevantes sejam armazenados e analisados, ajudando a reduzir custos e melhorar o desempenho.
7. A ferramenta pode ser integrado com várias outras ferramentas e serviços de terceiros, como o Datadog, para oferecer ainda mais recursos de análise e depuração para aplicativos em nuvem.
Precificação da ferramenta
O modelo de
precificação do X-Ray é baseado no número de solicitações de rastreamento que
sua aplicação gera. A AWS cobra uma taxa por solicitação de rastreamento, que
inclui a coleta, armazenamento e análise dos dados de rastreamento. O preço
varia de acordo com a região da AWS em que sua aplicação está sendo executada e
do volume de solicitações de rastreamento.
A primeira
camada de solicitações de rastreamento é gratuita (100.000). Cada camada
adicional de solicitações de rastreamento é cobrada em incrementos de 100.000
solicitações por mês. Por exemplo, se sua aplicação gera 250.000 solicitações
de rastreamento em um mês, você será cobrado pela camada de 200.000 a 300.000
solicitações de rastreamento.
Além disso, a
AWS oferece um desconto de volume para clientes que geram mais de 1 bilhão de
solicitações de rastreamento por mês. Os clientes também podem economizar
dinheiro usando o recurso de amostragem do X-Ray para reduzir o número de
solicitações de rastreamento que são coletadas.
É importante
notar que o X-Ray também cobra uma taxa para armazenamento de dados de
rastreamento. O armazenamento é cobrado em incrementos de GB por mês e varia
dependendo da região da AWS em que a aplicação está sendo executada.
Vantagens do X-Ray
O AWS X-Ray
traz diversos benefícios para os desenvolvedores e operadores de aplicações
distribuídas, entre eles:
– Visualização
de ponta a ponta;
– Identificação
ágil de problemas;
– Melhoria da
performance da aplicação;
– Redução de
custos;
– Integração com outras ferramentas AWS;
Configurando o X-Ray localmente
Para configurar
o ambiente local, utilizaremos o container do daemon do X-Ray, para fins de
padronização das configurações.
Pensando nisso, é fundamental que você já possua o Docker instalado em sua máquina e, após sua devida configuração, execute os passos abaixo:
1. Inicie o Docker em sua máquina abrindo o aplicativo
2. Abra seu terminal de comando
3. Execute o comando: “docker pull amazon/aws-xray-daemon”
4. Crie o arquivo “xray.env” contendo as seguintes variáveis preenchidas:
a. AWS_ACCESS_KEY_ID={access_key_var}
b. AWS_SECRET_ACCESS_KEY={secret_key_var}
c. AWS_REGION={region_var}
5.
Execute o container por meio do comando “docker
run –env-file xray.env -p 2000:2000/udp amazon/aws-xray-daemon”
Após executar os passos acima, seu ambiente local está
pronto para enviar logs ao X-Ray da sua conta AWS, sendo exibidos todos os logs
e traces processadas na aplicação local.
Para certificar-se de que está tudo certo, você deve
visualizar ter um resultado semelhante à este:
Criando uma aplicação e integrando-a com X-Ray
Para fins de demonstração, iremos trabalhar com uma aplicação Node.js, na estrutura Express.js. Portanto é de suma importância que você realize a instalação das ferramentas por meio do tutorial abaixo:
1. Acesse: https://nodejs.org/en
2. Faça o download da versão estável do Node.js (LTS)
1.
Siga todos
os passos seguintes que forem indicados no terminal ou box de instalação
2.
Crie uma
pasta com o nome personalizado do seu projeto, como por exemplo “x-ray-labs”
3.
Entre na
pasta e abra o terminal de comando
4.
Execute o
comando de criação de projetos Node.js “npm init -y”
5.
Realize a
instalação de pacotes fundamentais para o projeto “npm i –save @aws-sdk/client-dynamodb
express http aws-xray-sdk @aws-sdk/core uuid”
6.
Crie o
arquivo “index.js” para iniciar a configuração de sua aplicação
7.
Insira o
seguinte código, substituindo o nome da sua aplicação “x-ray-lab”
8.
Execute a
aplicação por meio do comando “node index.js” e abra o navegador na URL http://localhost:8080
9.
Abra o
painel do X-Ray, recarregue os gráficos e as Traces, pois já será possível
visualizar a integração funcionando normalmente, assim como os detalhes dos
logs processados localmente
gustavo.mainchein@darede.com.br
Gustavo possui larga experiência em desenvolvimento de software e cloud computing. Ele possui diversas certificações da Hashicorp e da AWS, sendo a última AWS DevOps Engineer – Professional.