Executando verificação de segurança...
9

⚡Cache = endpoint 257% mais performático

Adicionei 𝐜𝐚𝐜𝐡𝐞 no projeto open-source que estou desenvolvendo!

O 𝐒𝐲𝐤𝐢 (https://github.com/ZaqueuCavalcante/syki) é um sistema de gerenciamento de instituições de ensino que pode ser usado por gestores, professores e alunos.

Ele possui alguns dados que mudam pouco, como cadastros de campus, cursos e disciplinas. Logo, faz muito sentido guardá-los em cache para economizar recursos e aumentar a performance da aplicação como um todo.

Pensando nisso, implementei uma camada de cache em memória utilizando a lib 𝐇𝐲𝐛𝐫𝐢𝐝𝐂𝐚𝐜𝐡𝐞, desenvolvida pelo próprio time da Microsoft. Ela é bem simples de configurar e utilizar, bastando informar um par chave-valor para salvar os items em cache. A expiração pode ser automática (após certo tempo) ou manual (quando os dados mudam e precisam ser atualizados).

Essa biblioteca ainda resolve o problema crítico de 𝐜𝐚𝐜𝐡𝐞 𝐬𝐭𝐚𝐦𝐩𝐞𝐝𝐞: quando o cache expira, se várias requisições tentarem buscar os mesmos dados em paralelo, apenas uma delas vai de fato no banco de dados e insere os registros no cache. As demais leem direto do cache, evitando consultas desnecessárias ao banco de dados.

Abaixo temos o endpoint que retorna todos os cursos de uma instituição de ensino: primeiro sempre pegando os dados do banco e depois pegando do cache. Utilizei o 𝐊𝟔 para realizar testes de carga nos dois cenários, onde o primeiro conseguiu processar até 𝟑.𝟑𝐤 req/s e o segundo 𝟖.𝟓𝐤 req/s (𝟐.𝟓𝟕𝐱 mais performático).

Carregando publicação patrocinada...
1

Sensacional, a simplicidade dele é realmente diferenciada!
Não precisa de uma conf absurda e você simplesmente mudou o escopo do seu mesmo código, agora só passou para dentro de factory e pronto.

Cara que incrível, não conhecia. Pelo que estou vendo isso é em C#, certo?
Acho que vou identificar alguns pontos que mudam pouco para implementar isso, faz sentido hoje pra mim.

1

Exatamente, eles fizeram uma API muito simples e direta, tanto pra configurar quanto pra utilizar o cache.
É C# sim mano, obrigado pelo comentário!