# Webhook MultiDB
Webhook MultiDB é um sistema escalável de gerenciamento de webhooks com suporte a múltiplos bancos de dados.
Ele permite gerenciar, criar e executar webhooks de forma eficiente, com suporte a filas de processamento usando RabbitMQ,
integração com Redis ou MongoDB para armazenamento dinâmico, e autenticação JWT para garantir a segurança.
## Funcionalidades
- Criação e gerenciamento de webhooks.
- Suporte a múltiplos bancos de dados, como PostgreSQL e MySQL, para clientes diferentes.
- Execução assíncrona de webhooks com RabbitMQ.
- Monitoramento de mudanças em bancos de dados PostgreSQL (usando `LISTEN/NOTIFY`) e MySQL (usando polling).
- Armazenamento flexível utilizando Redis ou MongoDB, configurável via variáveis de ambiente.
- Autenticação JWT para proteger a API.
- Logs estruturados com Winston.
- Monitoramento com Prometheus.
- Documentação da API com Swagger.
## Tecnologias Utilizadas
- **Node.js**: Plataforma para execução do JavaScript no lado do servidor.
- **Express.js**: Framework web para Node.js.
- **MongoDB**: Banco de dados NoSQL usado para armazenar as informações dos webhooks.
- **Redis**: Armazenamento opcional para configurações de monitoramento e execução de webhooks.
- **RabbitMQ**: Fila de mensagens usada para processar webhooks de forma assíncrona.
- **JWT**: Autenticação segura para a API.
- **Docker**: Containerização da aplicação para fácil deploy.
- **Docker Compose**: Orquestração dos containers da aplicação, banco de dados e fila de mensagens.
- **Winston**: Ferramenta de logging.
- **Prometheus**: Ferramenta de monitoramento.
## Requisitos
- **Node.js** (v16 ou superior)
- **Docker** e **Docker Compose**
- **MongoDB** ou **Redis** (localmente ou usando Docker)
- **RabbitMQ** (localmente ou usando Docker)
## Configuração Local
### Clonando o Repositório
```bash
git clone https://github.com/wkarts/webhookmultidb.git
cd webhookmultidb
npm install
Crie um arquivo .env na raiz do projeto e adicione as seguintes variáveis:
JWT_SECRET=mysecret
STORAGE_TYPE=mongodb # ou 'redis' para usar Redis como armazenamento
MONGODB_URI=mongodb://root:example@mongodb:27017
AMQP_URL=amqp://guest:guest@rabbitmq:5672
REDIS_URL=redis://:example@redis:6379
node app.js
A aplicação estará disponível em http://localhost:3000.
Você pode usar o Docker Compose para orquestrar a aplicação com MongoDB, Redis e RabbitMQ.
docker-compose up --build
Acesse a documentação da API gerada automaticamente em http://localhost:3000/api-docs.
docker build -t webhookmultidb .
docker run -p 3000:3000 webhookmultidb
O arquivo docker-compose.yml já está configurado para rodar a aplicação com MongoDB, Redis e RabbitMQ. Para iniciar os serviços:
docker-compose up --build
Isso irá iniciar a aplicação junto com MongoDB, RabbitMQ e Redis (se configurado).
Este projeto está configurado com GitHub Actions para:
main.Para configurar o fluxo de CI/CD:
DOCKER_USERNAME e DOCKER_PASSWORD no GitHub..github/workflows/docker-image.yml para realizar o build e o push da imagem Docker.A aplicação expõe métricas Prometheus para monitoramento. Para acessar as métricas:
http://localhost:3000/metrics
Os logs são gerenciados pelo Winston e registrados tanto no console quanto em um arquivo chamado combined.log.
O sistema suporta Redis ou MongoDB como armazenamento para configurações e execução de webhooks.
A escolha é feita por meio da variável de ambiente STORAGE_TYPE. Se STORAGE_TYPE=redis, o Redis será utilizado; caso contrário, MongoDB será o padrão.
STORAGE_TYPE=mongodb # ou 'redis'
O sistema é capaz de monitorar mudanças em bancos de dados PostgreSQL e MySQL:
LISTEN/NOTIFY para detecção de mudanças.Se desejar contribuir com o projeto:
git checkout -b feature/nova-funcionalidade).git commit -m 'Adiciona nova funcionalidade').git push origin feature/nova-funcionalidade).Este projeto está licenciado sob a MIT License.
### Explicações das Alterações:
1. **Suporte a Redis ou MongoDB**:
- Adicionei informações sobre a variável `STORAGE_TYPE`, que permite escolher entre Redis ou MongoDB para o armazenamento das configurações de monitoramento e execução de webhooks.
2. **Monitoramento de Mudanças em Bancos de Dados**:
- Incluí detalhes sobre o monitoramento de bancos de dados, como PostgreSQL (com `LISTEN/NOTIFY`) e MySQL (usando polling), que foi implementado na aplicação.
3. **Configuração do Docker Compose**:
- A documentação foi atualizada para refletir a capacidade de executar a aplicação com Docker Compose, incluindo Redis, RabbitMQ e MongoDB.
4. **CI/CD com GitHub Actions**:
- Informações sobre o fluxo de CI/CD com GitHub Actions foram mantidas e explicadas.
5. **Prometheus**:
- Adicionei a seção de monitoramento com Prometheus para expor as métricas da aplicação.
Este `README.md` agora cobre todos os novos recursos e tecnologias utilizadas no projeto **Webhook MultiDB**, oferecendo uma visão abrangente da configuração, uso e contribuição para o projeto. Se precisar de mais ajustes, estou à disposição!
Content type
Image
Digest
sha256:4ab4929b9…
Size
367.8 MB
Last updated
almost 2 years ago
docker pull wkarts/webhookmultidb:main