Descrição • Serviços • Infraestrutura • Guia
Este é um exemplo de aplicação desenvolvida utilizando a arquitetura de microsserviços com os serviços api-gateway e ms-users, implementados em NestJS (Typescript). O objetivo dessa aplicação é demonstrar a comunicação entre os serviços, o uso de um barramento de mensagens Kafka e a integração com diferentes tipos de armazenamento de dados.
O serviço api-gateway é responsável por receber as requisições externas e encaminhá-las para o serviço adequado. Neste exemplo, ele fornece um endpoint para receber um objeto JSON e publica esse objeto para um tópico no Kafka.
O serviço ms-users é responsável pelo gerenciamento de usuários. Ele consome e processa objetos a partir do tópico do Kafka e os insere em um banco de dados NoSQL. Na solução proposta foi utilizado mongoDB
A infraestrutura deste projeto foi cuidadosamente desenvolvida e orquestrada utilizando Docker Compose, com base nas especificações definidas no arquivo YAML fornecido. Essa abordagem permite uma implantação simplificada e consistente de todos os componentes necessários para o funcionamento da aplicação de gerenciamento de usuários.
A infraestrutura consiste em diversos serviços interconectados que trabalham em conjunto para garantir o fluxo de dados, processamento e armazenamento seguro. Abaixo estão os principais componentes que compõem a infraestrutura:
api-gateway: Este serviço atua como o ponto de entrada para as solicitações externas. Ele recebe requisições e encaminha para o serviço adequado. Isso é feito através do mapeamento das portas e volumes definidos no arquivo YAML.
ms-users: Este é um microsserviço responsável pelo gerenciamento de usuários. Ele se comunica com o serviço api-gateway e consome mensagens do tópico do Kafka para processar e inserir dados de usuários em um banco de dados NoSQL (MongoDB).
db: Um banco de dados NoSQL MongoDB é provisionado para armazenar os dados dos usuários. Ele é configurado com um nome de usuário e senha, permitindo acesso seguro.
zookeeper: O ZooKeeper é um serviço centralizado para gerenciar a configuração e coordenação do cluster Kafka. Ele é usado para garantir a confiabilidade e consistência na comunicação entre os nós do Kafka.
kafka: O Kafka é uma plataforma de streaming distribuída, usada aqui como um barramento de mensagens. Ele é configurado com um tópico para transmitir os objetos JSON entre os serviços api-gateway e ms-users. O serviço ms-users consome essas mensagens e as processa para posterior inserção no banco de dados.
- Faça o clone do repositório.
git clone https://github.com/elvesbd/desafio-ms.git
- Acesse o projeto api-gateway.
cd desafio-ms/api-gateway
- Execute o comando.
npm install
- Acesse o projeto ms-users.
cd desafio-ms/ms-users
- Execute o comando.
npm install
- No projeto ms-users crie o arquivo .env com as informações contidas no arquivo .env.example
MONGO_URI=mongodb://root:ebd123@db:27017
- Suba a infraestrutura com o comando.
docker compose up
- Agora você só precisa realizar uma requisição para o serviço api-gateway com os dados da requisição.
