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 de uma requisição passando pelo nosso broker #3

Closed pedrofgd closed 1 year ago

pedrofgd commented 1 year ago

Versão inicial (aprimorar após discussão):

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

sequenceDiagram
    participant Cliente

    box Broker para API REST
    participant Broker
    participant Ranqueador
    participant Monitoramento
    participant Mapeador
    participant Requisitor
    participant Validador
    participant Configurações
    participant Provedor
    end

    autonumber
    Cliente->>Broker: Enviar request para o provedor
    Broker->>Configurações: Identificar recurso que o cliente quer acessar
    Configurações->>Broker: Configurações do recurso
    loop Enquanto os critérios não forem atingidos
        Broker->>Ranqueador: Obter provedor ativo para o recurso
        Ranqueador->>Monitoramento: Obter lista ordenada dos provedores para o recurso
        Monitoramento->>Ranqueador: Lista de provedores para o recurso
        Ranqueador->>Broker: Primeiro provedor da lista
        Broker->>Mapeador: Mapear objeto da requisição para o provedor
        Mapeador->>Configurações: Obter configurações da requisição do provedor ativo
        Configurações->>Mapeador: Configurações do provedor
        Mapeador->>Broker: Requisição mapeada para o provedor
        Broker->>Requisitor: Envia a requisição
        Requisitor->>Provedor: Envia a requisição
        Provedor->>Requisitor: Resposta
        Requisitor->>Broker: Resposta
        Broker->>Validador: Verificar se a resposta do provedor atende os critérios
        Validador->>Configurações: Obter critérios do recurso solicitado
        Configurações->>Validador: Critérios
        Validador->>Broker: Resultado da validação
        Broker->>Monitoramento: Registra os resultados da validação
        alt Provedor atendeu aos critérios
            Broker->>Mapeador: Mapear objeto de resposta
            Mapeador->>Configurações: Obter configurações da resposta do recurso solicitado
            Mapeador->>Broker: Resposta mapeada para o cliente
            Broker->>Cliente: Resposta
        else Provedor não atendeu aos critérios
            Broker->>Monitoramento: Invalida o provedor
        end
        opt Nenhum dos provedores atingiu aos critérios
            Broker->>Cliente: Erro
        end
    end
pedrofgd commented 1 year ago

O diagrama foi feito com Mermaid Para editar o diagrama é só editar o conteúdo da descrição da issue

An-225 commented 1 year ago

Talvez o passo um não faça a parte desse sequência de requisição, já que o broker já deve estar configurado antes de receber requisições.

pedrofgd commented 1 year ago

Concordo. O diagrama #7 foi criado depois desse e deve conter os detalhes da inicialização. Também acho que o passo 1 pode ser removido

An-225 commented 1 year ago

Adicionei os steps de utilização do requisitor, o código do dessa modificação tá nesse PR #13

pedrofgd commented 1 year ago

Atualizar ponto 25 para não mais "Invalidar provedor". Como a ideia agora é obter a lista ordenada dos provedores a cada requisição, o provedor não precisa ser invalidado, porque o registro dos resultados da validação (ponto 20) já é o suficiente para o Ranqueador ter a informação mais atualizada sobre o estado dos provedores quando uma outra requisição chegar para o mesmo recurso. O ponto 25 agora parte para enviar a requisição ao próximo provedor.

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

sequenceDiagram
    participant Cliente

    box Broker para API REST
    participant Broker
    participant Ranqueador
    participant Monitoramento
    participant Mapeador
    participant Requisitor
    participant Validador
    participant Configurações
    participant Provedor
    end

    autonumber
    Cliente->>Broker: Enviar request para o provedor
    Broker->>Configurações: Identificar recurso que o cliente quer acessar
    Configurações->>Broker: Configurações do recurso
    loop Enquanto os critérios não forem atingidos
        Broker->>Ranqueador: Obter provedor ativo para o recurso
        Ranqueador->>Monitoramento: Obter lista ordenada dos provedores para o recurso com base nos critérios configurados
        Monitoramento->>Ranqueador: Lista de provedores para o recurso
        Ranqueador->>Broker: Primeiro provedor da lista
        Broker->>Mapeador: Mapear objeto da requisição para o provedor
        Mapeador->>Configurações: Obter configurações da requisição do provedor ativo
        Configurações->>Mapeador: Configurações do provedor
        Mapeador->>Broker: Requisição mapeada para o provedor
        Broker->>Requisitor: Envia a requisição
        Requisitor->>Provedor: Envia a requisição
        Provedor->>Requisitor: Resposta
        Requisitor->>Broker: Resposta
        Broker->>Validador: Verificar se a resposta do provedor atende os critérios
        Validador->>Configurações: Obter critérios do recurso solicitado
        Configurações->>Validador: Critérios
        Validador->>Broker: Resultado da validação
        Broker->>Monitoramento: Registra os resultados da validação
        alt Provedor atendeu aos critérios
            Broker->>Mapeador: Mapear objeto de resposta
            Mapeador->>Configurações: Obter configurações da resposta do recurso solicitado
            Mapeador->>Broker: Resposta mapeada para o cliente
            Broker->>Cliente: Resposta
        else Provedor não atendeu aos critérios
            Broker->>Broker: Tenta próximo provedor da lista 
        end
        opt Nenhum dos provedores atingiu aos critérios
            Broker->>Cliente: Erro
        end
    end
An-225 commented 1 year ago

Tentativa de compactar o diagrama:

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

sequenceDiagram
    actor Cliente

    box Broker para API REST
    participant Broker
    participant Configurações
    participant Ranqueador
    participant Monitoramento
    participant Mapeador
    participant Requisitor
    participant Validador
    participant Provedor
    end

    autonumber
    Cliente->>Broker: Enviar request para o provedor
    Broker->>Configurações: Identificar recurso que o cliente quer acessar
    Configurações->>Broker: Configurações do recurso
    loop Enquanto os critérios não forem atingidos
        Broker->>Ranqueador: Obter provedor ativo para o recurso
        Ranqueador->>Monitoramento: Obter lista ordenada dos provedores para<br> o recurso com base nos critérios configurados
        Monitoramento->>Ranqueador: Lista de provedores para o recurso
        Ranqueador->>Broker: Primeiro provedor da lista
        Broker->>Mapeador: Mapear objeto da requisição para o provedor
        Mapeador->>Configurações: Obter configurações da requisição do provedor ativo
        Configurações->>Mapeador: Configurações do provedor
        Mapeador->>Broker: Requisição mapeada para o provedor
        Broker->>Requisitor: Envia a requisição
        Requisitor->>Provedor: Envia a requisição
        Provedor->>Requisitor: Resposta
        Requisitor->>Broker: Resposta
        Broker->>Validador: Verificar se a resposta do provedor atende os critérios
        Validador->>Configurações: Obter critérios do recurso solicitado
        Configurações->>Validador: Critérios
        Validador->>Broker: Resultado da validação
        Broker->>Monitoramento: Registra os resultados da validação
        alt Provedor atendeu aos critérios
            Broker->>Mapeador: Mapear objeto de resposta
            Mapeador->>Configurações: Obter configurações da resposta do recurso solicitado
            Mapeador->>Broker: Resposta mapeada para o cliente
            Broker->>Cliente: Resposta
        else Provedor não atendeu aos critérios
            Broker->>Broker: Tenta próximo provedor da lista 
        end
        opt Nenhum dos provedores atingiu aos critérios
            Broker->>Cliente: Erro
        end
    end
pedrofgd commented 1 year ago

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