[Carol: BL] Como tenant admin ao criar ou atualizar uma entidade para baixa latência na carol deve ser provisionado na plataforma ideia (BE) Part 3
Description
01 - STAKEHOLDER (quem valida e esclarece):
02 - PROBLEMA (cenário e/ou dor):
Atualmente o processo de provisionamento de tenants de cliente na Carol ocorre apenas em camada BigQuery, porém em cenários críticos onde a latência de dados é fundamental para o negócio como é o caso de painéis que mostram informações em tempo real, o BigQuery não é a melhor solução. Uma camada de baixa latência se fez necessária para atender tais projetos, e temos isto implementado na Refinaria e nova plataforma IDeIA.
Porém, carece que o provisionamento de recursos com baixa latência exista de forma integrada entre Carol e Plataforma Ideia.
Na Carol, após provisionada a camada BQ, podem ocorrer a instalação de Carol Apps e este processo promove a materialização e/ou atualização das entidades (staging tables e data models) dentro da tenant cliente.
Com a nova plataforma IDeIA, precisamos integrar e migrar este processo de materialização/atualização que ocorre hoje na Carol atendendo a baixa latência.
03 - OBJETIVO (solução proposta):
Diretrizes e diagrama atualizado --> https://docs.google.com/document/d/19ewcsaeaHZlrNfhsdOr-S-qZGX4O0mEukwCbOhlFMkM/edit?tab=t.0
Criar e atualizar entidades (staging / data model) com baixa latência no AlloyDB dentro do projeto GCP da Carol.
-
Adicionar flag
lowLatencybooleano (true/false) - padrão =FALSEà nível de entidade. -
Compatibilizar endpoint atual da Carol (criação e mudança de staging / data model), para receber a flag como parâmetro:
-
lowLatency: booleano (true/false) - padrão =FALSE. -
Atender aos métodos
POST/PUTpara criar e atualizar staging e data model.-
Exemplos:
/api/v4/staging/tables/{table}/schema,/api/v4/entities/templates
-
-
-
Criar nova API (ou versionar caso já exista) na Plataforma IDeIA (Refinaria) para recebimento de pedidos de criação ou mudança de esquema da Carol.
-
lowLatency: booleano (true/false) - padrão =FALSE.
-
-
Adicionar na UI ao configurar uma staging, dentro de configuração do esquema a opção para ativar/desativar a baixa latência como storage type.
-
Adicionar informações contextuais sobre a finalidade do armazenamento em baixa latência.
-
Limitar o armazenamento a 100 GB informando o usuário, caso a STG ultrapasse o limite a opção permanece desativada e um aviso informa o motivo.
-
-
Adicionar na UI ao configurar um data model, dentro de
Data Managementa opção para ativar/desativar a baixa latência como storage type adicional.-
Adicionar informações contextuais sobre a finalidade do armazenamento em baixa latência.
-
Limitar o armazenamento a 100 GB informando o usuário, caso o DM ultrapasse o limite a opção permanece desativada e um aviso informa o motivo.
-
-
Ao ativar baixa latência na UI em entidade existente (staging / data model) na Carol:
-
Permitir criar / alterar índices para otimização da baixa latência.
-
Setar flag
lowLatency= TRUE à nível de entidade.
-
-
Ao publicar a entidade com a baixa latência habilitada, então será realizada a chamada na API (criação / mudança staging ou data model) onde devemos:
-
Criar task de provisionamento IDEIA que deve:
-
Checar a flag de baixa latência à nível de tenant.
-
Caso resultado seja POSITIVO:
-
Checar flag da camada baixa latência (
lowLatency) à nível de entidade (staging e data model). -
Caso resultado seja POSITIVO:
-
Apenas na criação de entidades:
-
Ativar o storage type na entidade (staging e data model) e o intake de baixa latência na Carol.
-
-
Efetuar chamada ao endpoint equivalente (criação ou mudança de esquema) da plataforma IDeIA (Refinaria).
-
Os fluxos entre as plataformas devem ocorrer de forma síncrona.
-
-
Caso retorno seja NEGATIVO, então:
-
Efetuar chamada ao endpoint equivalente (criação ou mudança de esquema BL) da plataforma IDeIA (Refinaria).
-
-
-
Caso resultado seja NEGATIVO:
-
Setar flag
lowLatency= FALSE à nível de entidade. -
Logar mensagem na task alertando para a mudança, solicitando ao usuário que proceda posteriormente ao término do provisionamento com a ativação da flag na Tenant para posteriormente ativar a flag na entidade.
-
-
-
-
A Plataforma IDeIA (Refinaria) após ser chamada pela plataforma Carol, deverá:
-
Provisionar as entidades dentro do projeto Carol na GCP para a workspace informada, conforme estado da flag de baixa latência:
-
lowLatencyTRUE: Criar/Atualizar dataset no AlloyDB.
-
-
Materializar os conectores (chave/valor) de entidades (staging tables) da Carol na UI da plataforma IDeIA como tags para agrupamento.
-
-
Os fluxos entre as plataformas devem ocorrer de forma síncrona com tasks independentes. Caso ocorra um erro no processo a task correspondente deve falhar.
-
Visualizar as falhas de sincronismo na UI dentro da listagem de entidades na Carol (STG/DM).
-
-
Atender aos fluxos de provisionamento manual em tenants DEV.
-
Atender aos fluxos de provisionamento automático em tenants CLIENTE/UNIFICADA por meio da instalação de Carol Apps.
-
Ao ativar baixa latência na UI em entidade existente (staging / data model) na Carol:
-
Permitir criar índices para otimização da baixa latência.
-
Setar flag
lowLatency= TRUE à nível de entidade.
-
-
Ao publicar as alterações na entidade com a baixa latência habilitada, devemos:
-
Criar task de provisionamento IDEIA registrando todos os steps.
-
Checar flag
lowLatency= TRUE à nível de tenant. -
Caso retorno seja POSITIVO, então:
-
Ativar o storage type na entidade (staging e data model) e o intake de baixa latência na Carol.
-
Efetuar chamada na API de criação de schema baixa latência da plataforma IDeIA (Refinaria).
-
-
A API da plataforma IDeIA (Refinaria) após ser chamada pela plataforma Carol, deverá:
-
Provisionar as entidades de baixa latência criando/atualizando o dataset no AlloyDB dentro do projeto Carol na GCP para a workspace informada.
-
Materializar os conectores (chave/valor) de entidades (staging tables) da Carol na UI da plataforma IDeIA como tags para agrupamento.
-
Efetuar a carga dos dados existentes nas entidades na camada BQ (
copy data) para a camada de baixa latência no AlloyDB.
-
-
-
Os fluxos entre as plataformas devem ocorrer de forma síncrona com tasks independentes. Caso ocorra um erro no processo a task correspondente deve falhar.
-
Visualizar as falhas de sincronismo na UI dentro da listagem de entidades na Carol (STG/DM).
-
-
Respeitar os limites de armazenamento definidos para BL conforme descrito no fluxo de criação
-
Limitar o armazenamento a 100 GB informando o usuário, caso a STG ultrapasse o limite a opção permanece desativada e um aviso informa o motivo.
-
-
Atender aos fluxos de provisionamento manual em tenants DEV.
-
Atender aos fluxos de provisionamento automático em tenants CLIENTE/UNIFICADA por meio da instalação de Carol Apps.
04 - QUEM PODE USAR (perfis de usuários):
05 - ASSETS (links e arquivos relevantes):
Staging Table → https://www.figma.com/design/FiL1iRG6RPjuNCgVzgGqvaZ3/%F0%9F%9F%A3-Carol-3.0?node-id=37891-83383&t=WD3ufg0Zx9yb9FnF-4
Data Model → https://www.figma.com/design/FiL1iRG6RPjuNCgVzgGqvaZ3/%F0%9F%9F%A3-Carol-3.0?node-id=37891-80473&t=WD3ufg0Zx9yb9FnF-4
06 - CRITÉRIOS DE ACEITE:
-
Carol (tenants de desenvolvimento, cliente e unificada)
-
Endpoint de habilitação de baixa latência criado e versionado.
-
Staging Tables e Data Models criados/atualizados na UI.
-
Ativação / Desativação através de camada storage type para Staging e Data Model.
-
Visualização da baixa latência dentro da listagem de Stagings e Data Models.
-
-
Storage Type com camada de baixa latência habilitado para Staging e Data Model.
-
Intake de baixa latência habilitado, somente se ambos status (Carol e IDeIA) da entidade (Staging ou Data Model) estiverem READY.
-
STEPS registrados no logs da task.
-
-
Plataforma IDeIA
-
Endpoint de criação de esquema (AlloyDB e BQ) criado ou versionado caso já exista.
-
Endpoint de mudança de esquema (AlloyDB e BQ) criado ou versionado caso já exista.
-
Esquema das entidades (staging e data model) criado/atualizado dentro do projeto Carol na GCP para baixa latência no AlloyDB.
-
Dados da camada BQ copiados para as entidades (staging e data model) de baixa latência no AlloyDB..
-
Conectores de entidades (staging) materializados na UI na forma de tags.
-
Entidades (staging e data model) materializados na UI para AlloyDB e BigQuery.
-
Entidades criadas pela integração são marcadas como READ ONLY na UI, impedindo ações de exclusão e gravação pela IDeIA (Refinaria).
-