Ao adquirir um software ou implantar uma nova funcionalidade, as primeiras perguntas geralmente são: “Qual o requisito de hardware?” ou “O servidor vai suportar?”.
Outro cenário bastante comum no qual aparece a mesma dúvida é quando o gestor de TI começa a receber reclamações de usuários de seu sistema em relação ao desempenho da aplicação. Neste momento, surge o questionamento: “Será que o ambiente (servidor) ainda está adequado para a demanda atual?”.
Essas são dúvidas muito comuns, todavia, como diversos fatores estão envolvidos, encontrar as respostas não é algo tão simples assim. Para isso, é necessário entender sobre Dimensionamento de Hardware, também conhecido como Sizing.
Antes, temos que entender sobre Dimensionamento de Software
Para falarmos de Dimensionamento de Hardware, é importante abordarmos rapidamente o Dimensionamento de Software, o qual consiste em transformar em números o tamanho de um software (ou parte dele). Neste caso, estamos falando em determinar o tamanho do software, mas não o esforço que foi empregado para desenvolvê-lo.
Algumas maneiras de medir o tamanho de um software são analisando seus Pontos de Função ou FP’s (Function Points), ou LOC (Lines Of Code). O tamanho e complexidade do software são fatores muito importantes para o dimensionamento do hardware que irá executá-lo.
E o que é Dimensionamento de Hardware?
Uma definição simples de Dimensionamento de Hardware é: “Uma aproximação dos recursos de hardware necessários para suportar uma implementação de software”.
Como qualquer modelo teórico, vale frisar que este é uma aproximação da realidade, mas que costuma alcançar resultados muito mais sólidos do que um simples “chute”. Mais importante ainda: suportar a implementação de software determina que ele deve não só ser executado, mas executado com performance adequada e que atenda às necessidades dos usuários.
Dependendo do projeto ou do software a ser implantado, várias abordagens podem ser adotadas quando tratamos de Dimensionamento de Hardware, sempre envolvendo análise de fatores como:
- Complexidade das rotinas: é possível prever quais rotinas mais complexas irão demandar mais processamento (aqui se aplica muito o dimensionamento de software);
- Quantidade de usuários: quanto mais usuários (principalmente concorrentes) maior será o volume de processamento e armazenamento necessário;
- Volume de transações: sabendo que a função “X” tem determinada complexidade, qual será o volume de vezes que ela será utilizada?;
- Armazenamento: quanto espaço ocupará cada transação iniciada (falando de armazenamento de banco de dados e disco rígido);
- Crescimento: quanto se espera de crescimento no uso do software para os próximos anos? Qual a margem segura para termos sobras de hardware que façam o investimento durar mais?
Estes fatores podem ser estimados do zero ou baseados em fatos históricos de um ambiente já existente. A composição destes fatores permite estabelecer uma base de cálculo que vai determinar o hardware adequado, assim justificando e protegendo o eventual investimento em hardware.
Conforme mencionado, cada projeto de software pode exigir uma abordagem diferente para dimensionamento. Provedores de hardware e software têm diversos artigos do correto dimensionamento dos seus produtos (servidores dell, bancos de dados SQL Server e Oracle, por exemplo).
Existem também metodologias de mercado para este tipo de medição. Uma delas é a TPC-C (Transaction Processing Performance Council – Benchmark C), a qual inclusive utilizamos comumente nos projetos de Sizing de nossos clientes.
Metodologias para Dimensionamento de Hardware
A metodologia TPC-C é um benchmark de processamento de transações online (OLTP). Neste tipo de benchmark são medidas combinações de servidores e bancos de diversos fabricantes, determinando o índice de transações que os mesmos suportam.
Simplificando, na metodologia, em posse dos diversos fatores expostos acima, é possível calcular um índice necessário aproximado. Com isso é possível comparar este cálculo com equipamentos já medidos e determinar qual hardware será necessário, ou se o hardware atual está de acordo.
Outro método de Dimensionamento de Hardware é realizar testes sintéticos com a aplicação através de testes de carga. Pode-se usar uma ferramenta de testes automatizados (JMeter, por exemplo) para verificar quantas transações simultâneas um processador simples suporta.
Se a estação simples suporta 100 transações simultâneas, mas for determinado que teremos 1000 usuários concorrentes, sabemos que para atender 1000 transações simultâneas devemos ter um equipamento com 10 vezes o poder computacional do processador simples. Este tipo de estudo (prévio quando a aplicação ainda não foi implantada) pode ajudar bastante em um correto dimensionamento de hardware.
Concluindo
Como podemos ver, determinar a capacidade necessária de processamento para um software pode ser uma tarefa complexa, e somente respeitar os requisitos mínimos passados por um fornecedor pode não trazer os resultados desejados. Também é importante frisar que não existe uma fórmula mágica, mas felizmente contamos com uma série de instrumentos que podem ajudar.
Independentemente do método utilizado, deve-se realizar um Dimensionamento de Hardware adequado para que as soluções de software consigam ter o desempenho necessário e garantir uma maior produtividade da empresa.
Para nossos clientes, nossa equipe de consultoria oferece serviços de Sizing para ambientes Fusion. Caso necessite, ficaremos felizes em tirar todas as suas dúvidas.
Deixe seu e-mail e receba novos conteúdos da Neomind:
Referências:
TPC, KuscholarWorks, Wikipedia, Wikipedia
Lesle Santos
maio 8, 2021Muito obrigado por compartilhar este conteúdo Luiz.
Estou buscando conhecimentos sobre o tema, e acredito que este conteúdo para mim foi um bom começo!