ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 8

Renato Groffe
5 min readApr 27, 2020

--

Neste post dou continuidade à série de dicas úteis para o dia a dia de Desenvolvedores ASP.NET Core. Até o momento foram publicados 8 artigos com dezenas de dicas. Caso ainda não tenha consultado os 7 posts anteriores ou, até mesmo, gostaria de revê-los acesse os links a seguir:

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 1

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 2

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 3

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 4

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 5

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 6

ASP.NET Core: dicas úteis para o dia a dia de um Desenvolvedor - Parte 7

Construindo um dashboard de monitoramento com Health Checks

A partir da versão 2.2 o ASP.NET Core passou a contar também com um mecanismo nativo para implementação de Health Checks em aplicações. O projeto open source conhecido como Xabaril/AspNetCore.Diagnostics.HealthChecks estende essas capacidades, contando com opções para o monitoramento de diversos tipos de dependências (bancos de dados, serviços na nuvem, recursos de infraestrutura).

Outra possibilidade bastante interessante do projeto Xabaril/AspNetCore.Diagnostics.HealthChecks é a capacidade de renderizar um dashboard de monitoramento em uma aplicação Web. Tudo isto com um mínimo esforço de codificação, dispensando inclusive qualquer necessidade de implementação baseada em HTML + CSS + JavaScript.

Já descrevi este tipo de solução (dashboard de monitoramento) no seguinte artigo:

ASP.NET Core + Health Checks: monitorando a saúde de uma aplicação via dashboard

Na imagem a seguir temos um exemplo de uso deste recurso:

Disponibilizei o projeto em questão no GitHub:

ASP.NET Core 3.1 + Health Checks + Dashboard + Monitoramento de Recursos

E detalhei como o mesmo foi implementado recentemente, em uma apresentação online que pode ser assistida gratuitamente no YouTube:

Mensageria com Apache Kafka

A execução de tarefas de longa duração pode ser evitada em Web Apps através do uso de soluções de mensageria, com o envio de dados para uma fila/tópico e seu processamento posterior por uma aplicação à parte. Trata-se de uma prática bastante fácil de ser implementada e que contribui assim para uma maior performance.

Uma alternativa para mensageria cada vez mais popular entre Desenvolvedores das mais variadas plataformas é o Apache Kafka. No caso específico de uma aplicação ASP.NET Core, podemos fazer uso desta tecnologia através do package Confluent.Kafka.

Na listagem a seguir temos um exemplo de uso da classe ProducerBuilder (namespace Confluent.Kafka), com envio de mensagens a um tópico chamado teste-kafka-aspnetcore:

Esse projeto está disponível para download no GitHub:

ASP.NET Core 3.1 + API REST + Apache Kafka + Producer

A seguir temos um exemplo de envio de dados a esta API via Postman:

O consumo/processamento da mensagem gerada aconteceu em outra aplicação, como indicado na próxima imagem:

Este projeto para consumo de mensagens de um tópico do Apache Kafka também está no GitHub:

.NET Core 3.1 + Console Application + Apache Kafka + Docker Compose + Helm + Kubernetes + Confluent.Kafka + Consumer

Maiores detalhes sobre o consumo de mensagens de um tópico Kafka podem ser encontrados no artigo:

.NET Core 3.1 + Apache Kafka: exemplos utilizando mensageria

Artillery.io: uma alternativa para Testes de Carga (Load Testing)

Uma ótima alternativa para a execução de testes de carga em projetos Web é a ferramenta Artillery.io. Com a capacidade de simular diversos usuários simultâneos e execução de testes rápidos via linha de comando, o Artillery.io oferece ainda a possibilidade de escrita de testes para execução por meio de scripts YAML.

Outro ponto a ser destacado está no caráter multiplataforma desta solução. Escrito em Node.js, o Artillery.io pode ser facilmente instalado via npm e empregado para testes em ambientes Windows, Linux e Mac através do comando:

npm install -g artillery

Já o próximo comando permite verificar se a instalação ocorreu com sucesso:

artillery -V

Na imagem a seguir temos o resultado da instalação do Artillery.io em Windows 10 (a partir do PowerShell):

O comando a seguir simulará 20 usuários (parâmetro --count) simultâneos enviando 50 requisições cada(parâmetro -n) a uma API REST baseada no ASP.NET Core 3.1 (no caso do parâmetro -k, esta opção evitará problemas com o certificado de testes empregado na execução local da aplicação):

artillery quick --count 20 -n 50 -k https://localhost:5001/contador

Como resultado teremos o envio de mil requisições, com o retorno 200 (OK) para todas estas solicitações HTTP (além de estatísticas como tempo médio de resposta):

O projeto que utilizei neste teste já foi disponibilizado no GitHub:

ASP.NET Core 3.1 + API REST + Contagem de Acessos

Maiores detalhes sobre o uso do Artillery.io podem ser encontrados nos seguintes links:

Getting Started With Artillery - Artillery.io Docs

Testing HTTP - Artillery.io Docs

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet