pedrofgd / api-rest-broker

Projeto TCC Mack para avaliação de uma proposta de Broker para garantir alta disponibilidade no consumo de recursos externos via API REST
1 stars 0 forks source link

Diagrama de sequência para a validação da resposta do Provedor #9

Closed pedrofgd closed 1 year ago

pedrofgd commented 1 year ago

Critérios que pensamos em considerar:

Diagrama:

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant Cliente
    participant Broker
    participant Validador
    participant Provedor

    autonumber
    Cliente->>Broker: Requisição para um recurso
    Broker->>Broker: Processa a requisição
    Broker->>Provedor: Envia a requisição para o provedor
    Provedor->>Broker: Resposta
    Broker->>Validador: Validar resposta
    alt Provedor não retornou todos os campos obrigatórios configurados no recurso
        Validador->>Broker: Não atendeu aos critérios
    else Contagem de erros do provedor atingiu o limite
        Validador->>Broker: Não atendeu aos critérios
    else Tempo de resposta foi acima do ideal e atingiu a contagem de tempo excedido
        Validador->>Broker: Não atendeu aos critérios
    end
    opt Os critérios foram atendidos
        Validador->>Broker: Atendeu aos critérios
    end

Pendente de definir onde o "Validador" vai ficar.

lucas-ye commented 1 year ago

Antes de processar a requisição(processo 2) não teria que obter a configuração com Configurações ? se for seguir o Princípio da Responsabilidade Única, no meu entendimento o "validador" seria um componente separado que faz comunicação com outros componentes.

pedrofgd commented 1 year ago

A ideia que tive no passo 2 é de só resumir o que acontece. O processamento em detalhes está em #3 , para não ficar muito extenso. Esse diagrama seria focado na validação.

pedrofgd commented 1 year ago

O Validador ficará no ApiBroker (aplicação .NET Core). O diagrama a seguir não foi alterado comparado a última versão. Copiando só para destacar.

sequenceDiagram
    participant Cliente
    participant Broker
    participant Validador
    participant Provedor

    autonumber
    Cliente->>Broker: Requisição para um recurso
    Broker->>Broker: Processa a requisição
    Broker->>Provedor: Envia a requisição para o provedor
    Provedor->>Broker: Resposta
    Broker->>Validador: Validar resposta
    alt Provedor não retornou todos os campos obrigatórios configurados no recurso
        Validador->>Broker: Não atendeu aos critérios
    else Contagem de erros do provedor atingiu o limite
        Validador->>Broker: Não atendeu aos critérios
    else Tempo de resposta foi acima do ideal e atingiu a contagem de tempo excedido
        Validador->>Broker: Não atendeu aos critérios
    end
    opt Os critérios foram atendidos
        Validador->>Broker: Atendeu aos critérios
    end
pedrofgd commented 1 year ago

A validação de tempo de resposta talvez não caiba aqui... podemos colocar um timeout no HttpClient (componente Requisitor). O validador seria responsável por determinar se o Broker deve chamar o próximo provedor da lista ou não (se a validação falhar, o próximo será chamado). A latência não parece um atributo importante o suficiente para chamar outro provedor, mas é importante para considerar no ranqueamento, que é outro componente. Avaliar remover o ponto 8

O que acham @ClaudioSiqueira @lucas-ye @An-225 ?

lucas-ye commented 1 year ago

concordo com a ideia de se a validação falhar, o próximo será chamado.

" A latência não parece um atributo importante o suficiente para chamar outro provedor, mas é importante para considerar no ranqueamento, que é outro componente. " significa que mesmo está tendo latência, o broker vai aceitar a resposta, mas essa latência vai ser refletido na proxima requisição(quando o broker pega uma lista mais atualizado gerado pelo ranqueador)? entendi certo?

pedrofgd commented 1 year ago

Sim, é isso. Poderá recusar caso exceda o tempo de timeout (exemplo 5 segundos), mas não temos isso implementado por enquanto, nem está no diagrama. Mas pode ser interessante incluir.

pedrofgd commented 1 year ago

Retirei o "Cliente" desse diagrama para ficar mais compacto:

%%{init: {'theme': 'neutral'}}%%

sequenceDiagram
    participant Provedor
    participant Broker
    participant Validador

    autonumber
    Provedor->>Broker: Resposta de uma requisição
    Broker->>Validador: Validar resposta
    alt Os critérios foram atendidos
        Validador->>Broker: Atendeu aos critérios
    end
    alt Provedor não retornou todos os campos obrigatórios configurados no recurso
        Validador->>Broker: Não atendeu aos critérios
    else Contagem de erros do provedor atingiu o limite
        Validador->>Broker: Não atendeu aos critérios
    else Tempo de resposta foi acima do ideal e atingiu a contagem de tempo excedido
        Validador->>Broker: Não atendeu aos critérios
    end
pedrofgd commented 1 year ago

Como já apresentamos para a professora ontem, vou fechar essa issue. As atualizações necessárias serão feitas em outras