Please enable JavaScript.
Coggle requires JavaScript to display documents.
S-Works - Coggle Diagram
S-Works
Arquitetura e Designs
-
-
-
Arquitetura de Metadados
Arquitetura de modelo de dados largamento usado por sistemas que possuem características de configurações de entidades, no-code ou low-code.
As tabelas mais usadas para esses recursos são PARAMETRODEF_PDEF e PARAMETRO_PARAM, representam respectivamente, os tipos de dados propriedades e seus valores.
Essa arquitetura têm seus trade-offs, ex: performance ruim na recuperação de objetos filtrando por metadados; excesso de registros na tabela e alto volume impede operações críticas no BD devido à locks excessivos.
Licenciamento
Serviço recorrente que invoca API Gateway na AWS afim de enviar o faturamento e descobrir o status da licença. Em caso de problemas ou licenciamento desativado, o sistema interrompe o processamento.
Arquitetura na AWS envolve API Gateway, DynamoDb e Lambda Functions.
Existe um console app que registra novos clientes no DynamoDB, gerando um arquivo de chave privada. Esta chave deve estar em pasta específica chamada "LicenseKeys" no Producer.
Priorização da Fila
-
Enfileiramento Parcial
Para obedecer as priorizações, nunca enfileiramos todos os processos candidatos para execução. Recuperamos
Inanição de Processos
Para evitar inanição de processos, reservamos um % da fila para cada priorização, mas sempre enfileiramos ao menos 1 processo de cada prioridade
Design Patterns
Abstract Factory
Largamento utilizado, geralmente usando IIocKeyedFactory, retornando um tipo de instância baseado em um discriminador (geralmente Enum)
Strategy
Normalmente usado em conjunto com Abstract Factory para implementar estratégias diferentes para o mesmo recurso / funcionalidade
-
-
-
-
Singleton
Muito usado para armazenamento de caches ou classes que precisam ter um ciclo de vida parelho com a aplicação
-
-
Domain Events Publisher
Usado principalmente para permitir desacoplamento entre serviços. Muito usado para registro de métricas
-
-
-
Auditoria e Segurança
Trilhas de Transação
Percorre o "ChangeTracker" do Entity Framework em busca de entidades auditáveis para identificar suas alterações, ou novos registros.
-
-
-
Módulos e Infraestrutura
Core Domain
-
-
Orquestrador
-
Consumer
Módulo que criar N threads que ficam, de forma recorrente, tentando fazer "Dequeue" no RabbitMQ, invocando o Orquestrador para processamento.
Consumer In-Memory
Módulo que realiza o processamento a partir de fila RabbitMQ específica, realizando processamento em memória e apenas uma transação em banco para persistência.
Ações em Lote
-
-
Módulo que realiza processamento de "FilaIntegracao", recuperando dados e documentos para criar ou estimular processos existentes.
Support Domain
Activity Dispatcher
Módulo de distribuição de atividades manuais, fazendo gestão de cache de todas atividades manuais e atualizando de forma recorrente. Existem muitos mecanismos de thread-safety aqui para resolver problemas de race-conditions
-
Sentinela
Módulo de "salva-guarda" que recorrentemente investiga processos estagnados por estado inconsistente, fazendo com que nunca sejam novamente enfileirados mesmo não estando finalizados
-
-
-