Como definir os requisitos mínimos de Hardware de uma aplicação?

4 respostas
D

Como especificar a arquitetura de computadores para uma aplicação que vamos desenvolver?

Fiz a especificação de um software e fui questionado sobre a necessidade de atualização das máquinas existentes. Gostaria de fornecer uma resposta com maior embasamento sobre os critérios de que máquinas serão suficientes, do que um simples “achismo”.

Quais são os métodos e técnicas existentes para garantir que o software vai funcionar sem se amarrar?

Que processador, memórias e HD para o servidor e para as estações? Qual o link com a internet? Quais são os critérios?

É algo do tipo ao encontrado nos requisitos mínimos para os grandes softwares comerciais:

Equipamento mínimo necessário:

Processador XYZ
A Megas de memória
B Megas de HD
Monitor ZZZ

4 Respostas

T

Uma vez vi um demo (em um curso da Sun) de uma ferramenta que eles tinham de apoio aos engenheiros de vendas (ou sei lá qual o nome correto para isso).
Basicamente você entrava com uma série de especificações (do tipo: quero tratar N transações por segundo usando Oracle 9 em Solaris) e a resposta era do tipo “que tipo de máquina devo comprar, com que tipo de disco e que velocidade de processador” e outras coisas mais.
Obviamente essa ferramenta não era perfeita, e servia só como base para o engenheiro de vendas pôr mais uns 20% de margem para o hardware - sabe como é que é, o seu site pode crescer, portanto é melhor comprar uma máquina melhor que a especificação da ferramenta, mas era melhor que nada.
Outros vendedores de hardware (como a IBM) costumam ter ferramentas de apoio semelhantes, que costumam ser baseadas em um “knowledge base” com muitos dos projetos que a IBM, ou a Sun, já se envolveu.
Portanto os grandes “players” costumam ter bastante respaldo para especificarem suas soluções, já que provavelmente já especificaram uma solução que resolve um problema semelhante ao seu.

mcampelo

Este é um problema recorrente para mim.

Infelizmente, o que tenho visto grandes empresas fazendo é simplesmente chutando! :frowning:

Acredito que é o tipo de pergunta que apenas a experiência e principalmente ter passado por problemas com uma infra estrutura inadequada podem te ajudar a responder.

Geralmente o que vejo é simplesmente darem chutes com margem bem grande de segurança. O problema é que a margem de lucro grande é em cima de serviço e não em cima de hardware, porque qualquer cliente seu pode ligar para Sun e perguntar quanto custa uma E10K, por exemplo.

Com isso, o preço final da solução vai muito para o alto. A margem de lucro não é melhor por comprar mais poder computacional que o necessário. Conclusão: muitas vezes você acaba perdendo o projeto! :frowning:

Se vocês conhecerem alguma ferramenta milagrosa, por favor, me indiquem. Mas eu continuo achando que a melhor ferramenta é a experiência aliada a boas métricas.

Abraços,
Marco Campêlo

mcampelo

Complementando, tem um outro fator que eu considero tão importante quanto definir o hardware para sua solução:

Desenhar uma arquitetura que seja escalável.

Ou seja, comprei o hardware X e o número de requests esperados simplesmente dobrou, dobro o número de servers do meu cluster e consigo atender a nova demanda.

[]'s
Marco Campêlo

Ironlynx

Bom, eu vejo alguns itens que devem ser levados em conta.
Thingol, o problema das ferramentas de apoio é que elas tendem a ser tendenciosas com os benchs(muitas vezes otimizados para uma dada Plataforma).Marco, o problema as vezes nem é uma questão de “dar um chute alto”.Muitas vezes o desenvolvedor quer se livrar da responsabilidade de pensar nisso e empurra logo uma Dell da vida, sem maiores cerimônias achando que estará tudo bem.(Tem sempre um desavisado-AKA IDIOTA-para pagar mais por menos…).Eu destacaria alguns fatores:

1-Natureza de destino da aplicação-Se ela será para uma grande massa de dados, um cadastro de padaria do seu Manoel…
2-Escalabilidade-Aí entra o que o Campelo falou:O crescimento previsto será de tantos usuáriosAnoX num de solicitações crescente.
Num sistema web esse é um dado crítico(pois pode oscilar demais!!!)
3-Suporte-Se for uma aplicação que é um mero banco de consultas,inserções,sem concorrência e basicamente monousuária, vc não se preocupará em indicar um Sun Blade como para um sistema bancário, ou um Dell com serviço de atendimento 365X24.
4-Disponibilidade-Um “hortifruti” funciona de seg a sáb, umas 14 horas por dia(claro, há exceções…) e apenas para registrar vendas(na maioria das vezes, claro).Um home banking tem que estar sempre On.Não pode haver economia nesse quesito.
5- Componentes(incluo linguagem + ferramentas aí) da aplicação: Não adianta usar Prevayler, ter servidor 64bits, Sistema Operacional 64 bits, se a VM não conseguir suportar isso.Confira todos os requisitos antes(e as máquinas virtuais apropriadas, se necessário).

Há outros fatores que podem pesar na decisão, como restrições financeiras , ou transitoriedade da aplicação(como uma “pré-migração” para sistemas maiores), mas essas são fundamentais. :wink:

Minha dica é: conheça sobre várias tecnologias, antes de dar uma opnião final, pois poderá sair caro.

Criado 5 de maio de 2005
Ultima resposta 10 de mai. de 2005
Respostas 4
Participantes 4