
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.