Histórico da Página
...
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.
Com a criação da tabela I20, poderão ser armazenados os tipos de Insights que serão processados pelo cliente Protheus e suas respectivas classes de processamento das Regras de Negócio, as quais deverão ser desenvolvidas em ADVPL/TLPP e adicionadas ao repositório, facilitando assim o desenvolvimento de novos insights. Estas configurações podem ser controladas também por um versionamento, o que facilita o rastreio de alterações no decorrer do tempo para cada tipo de Insight.
A tabela I21 é uma implementação de tabela unificada de Processamento de Insights, ela poderá ser adotada pelas classes de Regras de Negócio para armazenamento do produto resultante do processamento aplicado a uma mensagem de Insight. Esta tabela suporta o armazenamento de dados diversos formatos através de um campo MEMO (inclusive JSON) e possui campos facilitadores de busca e filtro bem como campos para data inicial e final (todos usados de forma opcional na utilização da classe de regra de negócio).
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.
05. Front-End
06. Pipelines Carol
...