[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 lowLatency booleano (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/PUT para 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 Management a 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:

      • lowLatency TRUE: 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).