Data de elaboração |
01/04/2021 |
Responsável pelo estudo |
Gustavo Felix Gomes
Rafael Passos dos Santos
Lucas de Souza e Sousa (Estagiario) |
Equipe do estudo |
Gustavo Felix Gomes (Assessor)
Rafael Passos dos Santos (Assessor)
Alexsandro Rocha Fernandes (Assessor)
André Honório de Andrade Silva (Tecnico)
Emanuel Rufino Alcantara de Lima (Analista)
Lucas de Souza e Sousa (Estagiario)
Euriane Nogueira (Product Owner)
Maico Moreira (Coordenador) |
Alvo |
SID |
Origem |
Avaliar as alterações necessárias para resolver a problemática de lentidão no SID |
Objetivo |
O presente Estudo tem como objetivo verificar o que está deixando o sistema SID lento, e também avaliar as alterações necessárias para deixar o sistema SID mais rápido. |
Documentação correlata |
-/- |
Observações |
Diante do que foi apresentado, concluisse que tal requisições via Ajax e refatorações no codigo. ira diminuir a lentidão no sid, e com isso ele irar carregar mais rapido, em vista que tera menos dados carregados em uma requisição só. |
O presente Estudo tem como objetivo verificar o que está deixando o sistema SID lento, e também avaliar as alterações necessárias para deixar o sistema SID mais rápido.
Como se sabe o sistema SID esta com lentidão, diante disso, este documento visa apresentar possíveis soluções para resolver tal problemática.
Foi encontrado que a maior lentidão se encontra nas seguites telas:
- 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
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:
1. 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)
2. Criar filtro por ano aquisitivo (3 pontos)
- Método: BuscarSolicitacoesDeRemarcacaoPorUnidadeOrcamentaria
1. Criar filtro por ano aquisitivo (3 pontos)
2. **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
É 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)
Diante do que foi apresentado, concluisse que tal requisições via Ajax e refatorações no codigo. ira diminuir a lentidão no sid, e com isso ele irar carregar mais rapido, em vista que tera menos dados carregados em uma requisição só.