Vingadores – Avaliar as alterações necessárias para resolver a problemática de lentidão no SID
01/04/2021
SPIKE
Avaliar as alterações necessárias para resolver a problemática de lentidão no SID
Data: 01/04/2021
Objetivo
- Verificar o que está deixando o sistema SID lento
- Avaliar as alterações necessárias para deixar o sistema SID mais rápido
Visão Geral
Este documento visa apresentar possíveis soluções para resolver a problemática de lentidão no SID
- Na tela de Solicitações de férias para aprovação do chefe imediato
- Na tela de Férias de servidores
- Na tela de Home/index
Resultado da pesquisa:
Na tela de solicitações/index, estão sendo utilizados os seguintes métodos:
- Método: Busca de interrupções de férias (sid/interrupção/ BuscarSolicitacoesAguardandoHomologacao)
Esse método busca as interrupções de férias do servidor no sid-api, e realiza o seguinte fluxo:
- Busca de todas as interrupções do banco do sid.
- Para cada interrupção é feita uma consulta à outra api (e-estado) para buscar os dados do servidor por cpf.
- É realizado um filtro para retirar somente as interrupções da unidade orçamentária selecionada
No exemplo da SEDAM, é buscada 182 interrupções do banco do sid, após isso é feita uma consulta a api do e-estado dos 182 servidores que tiveram a interrupção, para depois retirar todos que não eram da SEDAM, no caso 1 servidor somente.
Problema: Esse método consome muito tempo devido o número de vezes que o sistema consome a api do e-estado.
Possíveis soluções:
- Utilizar o método BuscarServidoresDaUnidadeOrcamentaria e realizar uma busca dos servidores por essa lista, retirando a necessidade de fazer várias requisições a API do e-estado servidor(utilizar como exemplo o método: sid-api/solicitacao/ GetSolicitacoesDaUnidadeOrcamentaria) (3 pontos)
- Criar filtro por ano aquisitivo (3 pontos)
- Método: Busca de suspensões de férias (sid/suspensao/ BuscarSolicitacoesAguardandoHomologacao)
Mesmo problema do item anterior
Possíveis soluções:
- Utilizar o método BuscarServidoresDaUnidadeOrcamentaria e realizar uma busca dos servidores por essa lista, retirando a necessidade de fazer várias requisições a API do e-estado servidor(utilizar como exemplo o método: sid-api/solicitacao/ GetSolicitacoesDaUnidadeOrcamentaria) (3 pontos)
- Criar filtro por ano aquisitivo (3 pontos)
- Método: BuscarSolicitacoesDeRemarcacaoPorUnidadeOrcamentaria
- Criar filtro por ano aquisitivo (3 pontos)
- Método: AdicionarUsuarioQueHomologou
Problema: Esta é uma outra consulta que está demorando bastante devido ao número de solicitações, é feita 2 consultas ao e-estado.
Possíveis soluções: Criar uma nova consulta no e-estado para buscar o que se pede.
- Método: SolicitacoesPorDepartamento
- Criar filtro por ano aquisitivo (3 pontos)
- Método: BuscarSolicitacoesAguardandoCiencia
- Criar filtro por ano aquisitivo (3 pontos)
É possível também criar requisições ajax para cada tela abaixo:
Da forma que está hoje, todas as solicitações são buscadas. Por ajax daria pra trazer cada tipo de solicitação somente quando fosse selecionado
Possíveis soluções:
- Requisição ajax para solicitações aguardando homologação (5 pontos)
- Requisição ajax para solicitações deferidas (5 pontos)
- Requisição ajax para solicitações indeferidas (5 pontos)
- Requisição ajax para solicitações remarcadas (5 pontos)
Na tela de solicitações/feriasdosservidores, estão sendo utilizados os seguintes métodos:
- Método: Férias dos servidores (sid/controller/FeriasDosServidores)
Melhoria: Ao invés de percorrer o foreach realizando o filtro, o mesmo poderia ser filtrado antes em feriasDosServidores.PlanejamentoDeFeriasDoServidores.Where(x => x.Status == “Deferida” && !string.IsNullOrEmpty(x.UsuarioQueHomologou) (2 pontos)
Na tela de home/index, estão sendo utilizados os seguintes métodos:
- Método: Férias dos servidores (servidorrepository/BuscarQuantidadeDeRemarcacaoPorUnidadeOrcamentaria)
Melhoria: Analisar por que essa consulta está demorando tanto (5 pontos)
Time Vingadores:
- André Honório de Andrade da Silva (DEV Team)
- Gustavo Felix Gomes (DEV Team)
- Rafael Passos dos Santos (DEV Team)
- Emanuel Rufino Alcantara de Lima (Dev Team)
- Euriane Nogueira Frota (Product Owner)
- Moisés Santos Rodrigues (Scrum Master)