Descrição: O frontend é desenvolvido em React, um framework JavaScript para a criação de interfaces de usuário altamente interativas e responsivas.
Fluxo: Os usuários interagem com o sistema por meio do React, que envia solicitações ao Nginx Reverse Proxy.
Descrição: Atua como intermediário, distribuindo requisições do cliente para os serviços backend adequados.
Fluxo: Recebe requisições GET/POST do frontend e redireciona para o Web Service apropriado.
Descrição: Implementado como um conjunto de APIs RESTful (possivelmente com Django ou Flask), processa as requisições do cliente.
Fluxo: Responde às solicitações do frontend via Nginx e publica mensagens em sistemas de mensageria ou armazena dados conforme necessário.
RabbitMQ: Gerencia filas de mensagens para serviços críticos e tarefas de baixa latência, como envio de notificações ou processamento simples.
Kafka: Utilizado para processamento de dados em tempo real e sincronização com serviços externos, como MinIO e AWS.
Fluxo: O Web Service interage com ambos para processar e distribuir mensagens e eventos.
PostgreSQL: Banco de dados relacional para armazenamento estruturado, usado para dados críticos ou transacionais.
MinIO: Solução de armazenamento compatível com S3, usada para arquivos, backups ou grandes volumes de dados não estruturados.
Fluxo: Dados do Kafka ou Web Service são persistidos em PostgreSQL ou MinIO conforme o caso.
Descrição: Processa as mensagens do RabbitMQ e Kafka, integra dados entre sistemas e interage com os casos de uso definidos.
Fluxo: Consome mensagens, aplica lógica de negócios e direciona para os casos de uso (Use Case 1, 2 e 3).
Descrição: Representam funcionalidades específicas da aplicação, cada uma ligada a um objetivo de negócio.
Exemplos:
◦ Use Case 1: Processamento de relatórios.
◦ Use Case 2: Integração com serviços externos.
◦ Use Case 3: Processamento de grandes volumes de dados analíticos.
Descrição: Implementa controle de acesso, autenticação e proteção contra vulnerabilidades.
Fluxo: Atua como camada final de validação antes de liberar qualquer dado ou funcionalidade sensível.
Modularidade: Cada componente tem responsabilidades bem definidas, permitindo evolução e manutenção independentes.
Escalabilidade: Componentes como Kafka e RabbitMQ permitem alta disponibilidade e capacidade de lidar com grandes volumes de dados.
Interoperabilidade: Integração entre sistemas heterogêneos (MinIO, PostgreSQL, AWS) é facilitada pela mensageria.
Resiliência: RabbitMQ e Kafka garantem processamento assíncrono, reduzindo riscos de falhas em cascata.
Desempenho: O Nginx otimiza o roteamento de requisições e melhora o desempenho do sistema.
Este documento descreve o modelo de dados utilizado para gerenciamento de permissões e acesso a módulos (Bioativos). Ele organiza usuários, grupos, permissões e relaciona tudo isso ao controle de endpoints (recurso e ação). Abaixo, explicamos cada tabela e sua função no sistema.
context
: Nome do módulo ou funcionalidade.description
: Descrição detalhada do módulo.queue
: Identifica a fila de processamento associada ao módulo.task_type
: Define o tipo de tarefa relacionada ao módulo.descricao
: Uma breve descrição da permissão.recurso
: O endpoint ou recurso da aplicação ao qual a permissão se aplica.acao
: Define o método HTTP permitido (ex.: GET
, POST
, PUT
, DELETE
).job
, company
, country
, entre outros.area_interesse
: Indica as áreas de interesse do usuário.uso_dos_dados
: Define os usos autorizados dos dados do usuário.user
: Referência a um usuário.role
: Referência a uma permissão.user
: Referência a um usuário.bioativos
: Referência a um módulo.nome
: Nome do grupo.sigla
: Sigla identificadora do grupo.bioativos
: Relacionamento com os módulos pertencentes ao grupo.user
: Referência a um usuário.grupo
: Referência a um grupo de módulos.grupo
: Referência a um grupo de módulos.role
: Referência a uma permissão.recurso="/relatorios"
e acao="GET"
.Com este modelo, o acesso aos módulos e recursos é totalmente controlado e rastreável.