Share via


Dores Constantes

Nestes últimos anos visitei muitos fabricantes de software tentando ajudá-los com revisões informais da arquitetura. Tenho agora uma lista de erros mais comuns que encontrei e que atrapalham o desempenho na produção:

  • Excesso de comunicação entre camadas;
  • Excesso de dados passando entre camadas (ex.: ViewState);
  • Excesso de dados em variáveis de sessão (onde o mais comum é trazer para a memória todo o resultado de uma query, mesmo que de milhões de linhas, para então fazer a paginação a fim de apresentar em um grid);
  • Locks, muitos locks no banco de dados. Os principais motivos costumam ser:
    • Erros em queries;
    • Falta de uso de hints, quando adequados, como o de ReadOnly;
    • Iniciar e prender cedo demais os recursos, ou liberá-los tarde demais;
  • Excesso de loops com queries, ao invés de fazer uma única query mais complexa (sei que é um tipo de excesso de comunicação entre camadas, mas vale a pena sublinhar);
  • Excesso de passagem de parâmetros por valor. Exemplo: passar por valor um string xml para métodos que extraem certos valores de tags, como conta corrente ou outro;
  • Falta de análise do custo dos algoritmos utilizados;
  • Design ruim do modelo do Banco de Dados (falta de índices, e erros graves no modelo de entidades e relacionamentos);

Para estas dores, sempre recomendo a leitura do livro do Patterns&Practices: Improving .NET Application Performance and Scalability. Mesmo antigo, ainda funciona.

Por outro lado, do lado da governança, eu tenho encontrado muita preocupação com processos de controle e pouco com o de melhoria da produção. É espantoso ver empresas com CMMI alto que não têm como costume hábitos simples e baratos como revisão de código e design, fazer um capacity planning, build e teste diário, teste de stress e análise de risco. Pior: muitas não investem na automação da burocracia destes processos, tornando-os muito caros. Parecem preferir o gasto maior ao longo do tempo do que um investimento inicial alto mais de retorno certo.

Deixei a universidade em 92 e neste tempo pouco se falava sobre estes temas. Minha impressão é que a dor continua.

PS.: Para quem quiser saber mais o como comparar o Retorno de Investimento de um CMMI contra um mero processo de revisão, recomendo o site do David Rico.