Sobre • Notifications Service • Instalação • Tecnologias • Autor
Projeto desenvolvido durante o Ignite Lab de NodeJS, evento criado pela Rocketseat. Um evento 100% online e GRATUITO, com conteúdo exclusivo e INÉDITO.
Ocorreu do dia 12 ao dia 14 de Dezembro de 2022 e teve como intuito mostrar como construir um microsserviço moderno com NodeJS, NestJS, Prisma, TypeScript, Redis e diversas outras tecnologias.
O Notifications Service é um microsserviço responsável por lidar com notificações de diversas fontes. A ideia do projeto é entender como arquitetar um microsserviço de melhor maneira afim de tê-lo desacoplado de qualquer tecnologia do meio externo e que seja altamente escalável, seguindo as melhores praticas de programação com esse tipo de arquitetura e as tecnologias mais modernas do momento no mundo do NodeJS.
Esse projeto é um consumer do Kafka que irá consumir mensagens de um tópico chamado notifications.send-notification
e irá realizar registros das notificações em uma tabela no banco de dados.
O cluster Kafka pode ser criado de diversas formas e integrado ao projeto, a maneira realizada aqui foi utilizando o serviço Upstash. Ao acessa-lo, basta criar uma conta, criar o cluster e tópico e conectar a aplicação a ele. Deixo abaixo um exemplo do dashboard de uso do serviço aonde realizei os testes da aplicação:
Como podemos ver acima, no momento do print-screen, havia produzido 30 mensagens, das quais 27 foram consumidas por esse microsserviço e registradas em nosso banco de dados.
Ao executar a aplicação, ela se conecta ao nosso cluster e consome as mensagens que estão no tópico:
Caso existam mensagens a serem consumidas, a aplicação as consome e gera os registros em nosso BD, nesse caso, um banco SQLite. Vamos ver os registros no exemplo abaixo:
A aplicação utiliza o Prisma e executando o comando prisma studio
conseguimos subir uma interface web para visualizar nosso banco de dados, aonde podemos ver as notificações sendo registradas.
Para manipular nossos registros a aplicação conta com uma API REST contendo endpoints para criar e cancelar notificações, marca-las como lidas e não lidas, além de rotas para obter o total de notificações ou as próprias notificações de um usuário.
Deixarei abaixo a coleção das requisições para serem importadas no Insomnia:
Como esse microsserviço é apenas um consumer, deixarei nesse repositório a pasta notifications-kafka-producer
, a qual contem o código de um simples producer kafka para gerar as mensagens a serem consumidas pelo notifications-service.
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disso é bom ter um editor para trabalhar com o código como VSCode.
# Clone este repositório
$ git clone git@github.com:MrRioja/notifications-service.git
# Acesse a pasta do projeto no terminal/cmd
$ cd notifications-service
# Instale as dependências
$ npm install
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn
# Execute a aplicação em modo de desenvolvimento
$ npm run start:dev
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn start:dev
# Execute os testes da aplicação
$ npm run start:test
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn start:test
# O servidor inciará na porta 3000 - acesse <http://localhost:3333>