Histórico da Página
...
Índice
01. Visão Geral
...
01. Visão Geral
02. Modelagem de Dados Protheus Insights
Estrutura Atual
A atual estrutura do protheus insights é constituida das seguintes tabelas:
- I14 - Controle de Msg Smartlink: Tabela de alertas de Insights (Permissão de Insight, Financeiros, Ruptura de Estoque, Demandas de Compras, Relatório de Previsão de Fluxo de Caixa);
- I16 - Insight Contabil: Tabela de matches de Insights Contábeis provenientes dos Alertas de Insights Contábeis;
Apesar desta estrutura estar funcional, ela foi criada como protótipo e apresenta diversas limitações no controle de recebimento e processamento de mensagens de insight provenientes do Smartlink e será descontinuada com a implementação da estrutura sugerida mais abaixo.
Algumas destas limitações são:
- Falta de visibilidade no recebimento de mensagens de insights por parte do cliente Protheus;
- Travamento da thread do consumer de mensagens devido ao processamento de regras de insights no recebimento;
- Limitação no desenvolvimento de novos insights tornando-os, aumentando os custos e requerimentos de recursos para o desenvolvimento dos mesmos;
- Pouco tolerante a falhas;
Estrutura Sugerida
Para a nova estrutura sugerida serão implementadas as seguintes tabelas:
- I19 - Controle Mensagens de Insights: Tabela utilizada para Controle de Recebimento e Status de Mensagens de Insights provenientes do Smartlink, para serem utilizadas em futuros processamentos de Regras de Negócios de Insight;
- I20 - Configurações de Insights: Tabela utilizada para armazenamento das configurações de Processamento de Insights;
- I21 - Insights Unificada: Tabela unificada utilizada para armazenamento do produto do processamento das regras de negócios de insights;
Nesta nova estrutura, existirá a possibilidade de monitorar o recebimento de mensagens e seu conteúdo real através da tabela I19, onde as mensagens serão armazenadas para análise e posterior processamento/re-processamento, liberando assim a thread do consumer do Smartlink para posteriores recebimentos, solicitando baixa quantidade de recurso e tempo de execução para o simples recebimento de mensagens de insights.
...
Este documento visa fornecer uma visão abrangente sobre a estrutura e funcionalidades do Protheus Insights, detalhando tanto a modelagem de dados quanto a infraestrutura backend, front-end, pipelines carol e data models carol. Seu propósito é esclarecer a arquitetura atual e sugerir melhorias para otimizar o processamento de mensagens de insights, aumentar a resiliência do sistema e facilitar o desenvolvimento de novas funcionalidades.
Estrutura e Componentes
A estrutura atual do Protheus Insights é composta por diversas tabelas que gerenciam alertas e insights. Embora funcional, essa estrutura foi inicialmente projetada como um protótipo e apresenta limitações significativas, como falta de visibilidade no recebimento de mensagens e travamentos no processamento. Este documento propõe uma nova estrutura mais eficiente, detalhando as novas tabelas (I19, I20, I21) e suas funções específicas para melhorar o controle, processamento e monitoramento de mensagens de insights. Além disso, descreve as atualizações necessárias no backend TOTVSApps e ADVPL, e sugere melhorias para o front-end, incluindo a implementação de uma nova biblioteca de serviços REST para suportar insights online de maneira mais eficiente.
02. Modelagem de Dados Protheus Insights
Estrutura Atual
A atual estrutura do Protheus Insights é constituída das seguintes tabelas:
- I14 - Controle de Msg Smartlink: Tabela de alertas de Insights (Permissão de Insight, Financeiros, Ruptura de Estoque, Demandas de Compras, Relatório de Previsão de Fluxo de Caixa);
- I16 - Insight Contabil: Tabela de matches de Insights Contábeis provenientes dos Alertas de Insights Contábeis;
Apesar desta estrutura estar funcional, ela foi criada como protótipo e apresenta diversas limitações no controle de recebimento e processamento de mensagens de insight provenientes do Smartlink e será descontinuada com a implementação da estrutura sugerida mais abaixo.
Algumas destas limitações são:
- Falta de visibilidade no recebimento de mensagens de insights por parte do cliente Protheus;
- Travamento da thread do consumer de mensagens devido ao processamento de regras de insights no recebimento;
- Limitação no desenvolvimento de novos insights tornando-os, aumentando os custos e requerimentos de recursos para o desenvolvimento dos mesmos;
- Pouco tolerante a falhas;
Estrutura Sugerida
Para a nova estrutura sugerida serão implementadas as seguintes tabelas:
- I19 - Controle Mensagens de Insights: Tabela utilizada para Controle de Recebimento e Status de Mensagens de Insights provenientes do Smartlink, para serem utilizadas em futuros processamentos de Regras de Negócios de Insight;
- I20 - Configurações de Insights: Tabela utilizada para armazenamento das configurações de Processamento de Insights;
- I21 - Insights Unificada: Tabela unificada utilizada para armazenamento do produto do processamento das regras de negócios de insights;
Deck of Cards | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
Vantagens da Estrutura Sugerida:
- Maior controle e monitoramento no recebimento de mensagens de Insights pelo cliente Protheus;
- Modelo configurável e flexível de Regras de Negócios aplicadas as mensagens de Insights;
- Maior visibilidade nos resultados dos processamentos das Regras de Negócios;
- Tabela unificada para armazenamento de resultado de processamento posteriormente utilização dos dados por parte do ERP;
- Melhor tolerância a falhas;
- Baixa requisição de recursos (financeiros e temporais) para o desenvolvimento de Insights;
03. Backend TOTVSApps
Estrutura Atual
A atual infra-estrutura do Protheus Insights Totvs Apps pode ser apresentada pelo seguinte diagrama:
A atual estrutura do Protheus Insights Totvs Apps provou ser uma estrutura resiliente porém, com algumas limitações, as quais serão minimizadas na estrutura proposta mais abaixo.
Algumas destas limitações são listadas a seguir:
- Esquema de autenticação fraco utilizando-se de chaves de API;
- Armazenamento de dados de diversos Tenants em mesmas tabelas, facilitando o vazamento de informações entre Tenants se muita precaução não for tomada na descida de mensagens para a fila do SmartLink;
- Não possui suporte 100% a Insights Online;
- Difícil enumeração de custo de recurso por Tenant;
Estrutura Proposta
A estrutura proposta para o Totvs Apps Protheus Insights visa melhorar a atual estrutura, adicionando novos recursos para aumentar sua resiliência a falhas de disponibilidade e segurança. Esta estrutura contará com a implementação de um banco de dados com a separação de schemas por Tenants, novos meios de autenticação de clientes e novas APIs que suportarão também o uso de Insights Online.
As vantagens apresentadas a seguir estarão efetivamente em funcionamento no momento de sua implementação:
- Esquema de autenticação integrado com o Fluig Identity para Tenants e usuários da API de administração (utilizando JWT);
- Base de dados Multi-Tenant para armazenamento de mensagens de Insights provenientes do Big-Query Carol;
- Tabela unificada de armazenamento de Modelos de Insights;
- Provisionamento em real-time de novos schemas para recém adicionados Tenants;
- APIs seguras de gerenciamento de Provisionamento e controle de Mensagens de Insights;
- Novo sistema de mensageria capaz de processar requisições de Insights Online;
- Melhor visibilidade nos recursos utilizados por cada Tenant, devido ao banco de dados multi-esquema;
04. Backend ADVPL
Estrutura Atual
Esta atual estrutura de Insights desenvolvida para o cliente Protheus, tem se provado pouco eficiente no tratamento de mensagens on-line e pouco resiliente no tratamento de exceções quando o processamento de mensagens de Insights.
Um outro ponto de atenção é o desempenho no recebimento de mensagens e a execução do processamento da Regra de Negócio do Insight na mesma Thread de recebimento da mensagem, o que impossibilita o Smartlink de processar novas mensagens enquanto as Regras para a atual ainda estiver processando, causando um congestionamento na liberação da fila em momentos de muita demanda.
A seguir serão apresentados alguns pontos que fez parte do aprendizado com a implementação desta estrutura:
- Congestionamento de Fila: Como mencionado anteriormente, a execução de Regras de Negócio de Insights na mesma thread de recebimento da mensagem causa atraso no recebimento de novas mensagens o que torna inviável a utilização desta estrutura em ambientes de alta demanda/disponibilidade;
- Flexibilidade de Dados: Quando utilizada a definição de "criação de uma tabela por Insight", o processo de desenvolvimento de novos Insights torna-se lento e dependente de janelas específicas de release que estão fora do controle da equipe;
- Complexidade do Desenvolvimento: Novos insights tornam-se cada vez mais complexos de serem desenvolvidos devido a certas limitações apresentadas pela inflexibilidade de dados;
- Desempenho Insatisfatório para Insights Online: O congestionamento de Fila torna o custo de tempo para uma resposta de insights online praticamente inviável e pouco performático (como por exemplo o Insight Financeiro de Relaótio de Fluxo de Caixa);
- Limitação de Front-End (Angular App): Os atuais aplicativos utilizando Angular/PO-UI estão utilizando o mecanismo de websocket WebChannel para comunicação com a thread protheus, isto inviabiliza certas funcionalidades como por exemplo paginação de payload de resposta do endpoint;
Estrutura Proposta
A estrutura proposta visa implementar um sistema mais eficiente no recebimento de mensagens de Insights, mais resiliente a falhas e transparente durante o processo desde o início até sua conclusão.
A seguir será apresentado um resumo do funcionamento desta estrutura:
Deck of Cards | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||
|
05. Front-End
A estrutura de execução de um aplicativo de Front-End do Protheus Insights será remodelada e terá a adição de uma biblioteca de serviços REST que farão parte da biblioteca de Insights (ADVPL) disponiblizada pela equipe de BA.
Estas alterações visam remover a limitação imposta pela utilização do WebChannel como meio de comunicação e bem como habilitando a utilização de Insights On-Line de uma forma simples.
Uma biblioteca desenvolvida para o framework Angular será implementada para intermediar a comunicação com os serviços disponibilizados pelo back-end Protheus de uma forma modular e simples.
06. Pipelines Carol
|
05. Front-End
A estrutura de execução de um aplicativo de Front-End do Protheus Insights será remodelada e terá a adição de uma biblioteca de serviços REST que farão parte da biblioteca de Insights (ADVPL) disponibilizada pela equipe de BA.
Estas alterações visam remover a limitação imposta pela utilização do WebChannel como meio de comunicação e bem como habilitando a utilização de Insights On-Line de uma forma simples.
Uma biblioteca desenvolvida para o framework Angular será implementada para intermediar a comunicação com os serviços disponibilizados pelo back-end Protheus de uma forma modular e simples.
06. Arquitetura Carol
Glossário
Customer Organization: Ambiente de administração geral que agrupa as várias Tenants de clientes.
Unified Tenant: Ambiente Unificado que recebe os dados de todos os clientes e faz o processamento dos insights.
Staging Area: Área de preparação, ou zona de aterrissagem, é uma área de armazenamento intermediária usada para armazenamento dos dados brutos, antes do processamento.
ERP Connectors: Conjunto de conectores responsáveis por receber os dados dos ERPs.
Insights Connector: Conjunto de conectores responsáveis por receber os dados de insights. Cada insight possui o seu conector.
Data Transformation Pipelines: Conjunto de pipelines responsáveis pela transformação dos dados dos ERPs em modelos de dados genéricos que serão consumidos pelos modelos de Machine Learning.
AI Process: Conjunto de Carol Apps (Batch e Online) responsáveis pelo processamento dos insights.
Batch Apps: Aplicativos responsáveis pelo processamento dos insights com execução agendada.
Service Account: Conta de serviço utilizada para comunicação com os serviços do GCP.
Data Validation: Batch App responsável pela validação dos dados.
BQ ML: Tecnologia utilizada para criar e executar modelos de machine learning (ML) usando consultas do GoogleSQL.
Vertex AI: Plataforma de desenvolvimento de IA unificada e totalmente gerenciada.
Workflow: Aplicativo utilizado para orquestração dos serviços de machine learning.
Terraform: Ferramenta de infraestrutura como código usada para provisionar recursos e permissões para vários serviços do Google Cloud, incluindo a Vertex AI.
Cloud Functions: Solução de computação sem servidor do Google para criar aplicativos baseados em eventos.
Alerts Management: Módulo de alertas da plataforma Carol que possibilita a monitorização de eventos na esteira de dados da plataforma.
Pipelines: Pipelines SQL utilizados para processamento dos dados e geração dos golden records.
Data Models: Estrutura e regras de dados que transformam staging tables em Golden Records;
Data Sync: Solução que tem como principal objetivo enviar registros armazenados em Data Models para bancos de dados de baixa latência e alta disponibilidade (como por exemplo o PostgreSQL).
Looker Studio: Ferramenta on-line para criação de relatórios e painéis informativos personalizáveis a partir de banco de dados, possui integração com o Big Query.
Totvs Apps: Plataforma de software para as aplicações cloud native da TOTVS.
07. Data Model (Unified Insights)
Tabela única responsável por armazenar os dados de todos os insights.
Campo | Tipo | Título | Descrição |
---|---|---|---|
branch | String | Branch | Empresa | Unidade de Negócio | Filial dos dados de origem do insight |
company_group | String | Company Group | Company Group dos dados de origem do insight |
insight | String | Insight | Identificador do Insight |
tenantid | String | Tenant Id | Tenant Id dos dados de origem do insight |
key | String | Key | Chave de negócio do insight |
jsoncontent | String | Json Content | Json contendo os dados do insight |
...