encurtador
encurtador copied to clipboard
Encurtador de URL, com patterns de cache e write behind usando Redis e MongoDB
Sobre o encurtador de URL
Um encurtador de URL eficiente que utiliza MongoDB, Redis e implementa padrões como cache pattern e write behind.
Tecnologias Utilizadas
- MongoDB: Banco de dados NoSQL para armazenamento persistente.
- Redis: Sistema de armazenamento em memória para caching rápido.
- NodeJS: Ambiente de execução JavaScript do lado do servidor, utilizado para construir a logica da aplicação.*
- Nginx: Servidor web utilizado para gerenciar as solicitações, assim fazendo o Load Balancer.
Instalação
-
Baixe o Docker em https://www.docker.com/
-
Clone o repositório:
git clone https://github.com/e-rapha/encurtador
Como Usar
- Inicie os containers e o servidor:
docker compose up
- Acesse o encurtador de URL através do navegador:
http://localhost
Padrões Implementados
-
Cache Pattern: O cache pattern foi implementado da forma que o quando acessado o link, ele fica 60 segundos em memoria, isso significa que acessos subsequentes dentro desse periodo serão direcionados rapidamente do cache, melhorando significativamente o desempenho.
-
Write Behind: Foi optada a abordagem de Write Behind para a gravação assíncrona de dados. Quando uma URL é encurtada, os dados são inicialmente gravados no Redis, proporcionando uma resposta rapida ao cliente. Em segundo plano, um processo assincrono grava os dados para o MongoDB para garantir persistencia dos dados.
mapa do padrão
(Você pode olhar o cache do Redis em localhost:8001)
Contribuição
- Fique à vontade para contribuir! entre em contato pra me falar sua ideia!👀
Licença
Este projeto é licenciado sob a [MIT]. Veja o arquivo LICENSE.md
para mais detalhes.
Contato
- Se tiver dúvidas ou sugestões, entre em contato pelo [email protected]
- Caso você tenha gostado coloque uma ⭐ no projeto!
https://github.com/E-RAPHA/encurtador/assets/83914531/95623aba-79b8-4bc8-99b6-2eba5245bdc6
https://github.com/E-RAPHA/encurtador/assets/83914531/60f8e13e-fa63-461f-bf77-bca25a8895cd
( foi apenas um projeto aí pra sair do tedio kkkkkkk :) )