How can I figure out what hardware specifications I need to adequately support a given number of users and virtual machines? Are there any guidelines on minimum resources per user, etc?
Vamos analisar os vários casos para o software que você deseja executar:
- Servidor de banco de dados
Se você tiver um servidor de banco de dados compartilhado entre todos os desenvolvedores, deverá executar seu servidor de banco de dados com acesso a muitos núcleos de CPU e à maior quantidade de RAM possível. Um disco rápido (mas não necessariamente grande) é importante. O tamanho do disco dependerá se você planeja armazenar dados completos em escala de produção para desenvolvimento ou se pode obter alguns gigabytes. Ter o gargalo do banco de dados seria uma Coisa Ruim, mas lembre-se de que uma carga de trabalho do banco de dados de desenvolvimento pode ser muito diferente de uma carga de trabalho do banco de dados de produção. É provável que o primeiro seja menor em escala e envolva consultas mais ineficientes (enquanto as consultas ainda estão sendo desenvolvidas e os dados estão sendo explorados por consultas ad-hoc), enquanto um banco de dados de produção provavelmente terá consultas otimizadas executadas e operadas em grandes conjuntos de dados que são (esperançosamente) amplamente armazenados em cache na RAM.
- servidor de aplicativos JBoss
O JBoss vai usar principalmente o tempo de CPU (durante a execução de servlets), muita memória RAM (porque é Java) e largura de banda de rede. Como um banco de dados, um servidor de aplicativos avançado pode se beneficiar de vários núcleos. A melhor maneira de descobrir o número correto de núcleos virtuais a serem atribuídos é testá-lo em diferentes números de núcleos. Mas, como regra geral, nunca atribua mais núcleos virtuais do que núcleos físicos.
- Ambientes de desktop de desenvolvimento Eclipse
Isso é complicado. O próprio Eclipse consumirá centenas de megas de RAM, mas esse número deverá permanecer relativamente estático e nivelado assim que todos os seus plugins forem carregados. Então você pode querer verificar quanto de RAM é necessário com base em quantos plugins você executa. Os aplicativos Eclipse RCP mais simples podem usar apenas 10 ou 20 MB de RAM, mas um ambiente JavaEE completo com ferramentas GEF, ferramentas de controle de versão e ferramentas de banco de dados pode consumir mais de um gigabyte de memória. A compilação de arquivos de origem Java não depende da CPU como código nativo, mas ainda pode se beneficiar de vários núcleos. Em geral, no entanto, suas instâncias do Eclipse provavelmente usarão relativamente menos recursos (CPU, RAM, disco) do que o banco de dados ou instâncias do JBoss.
No geral, com cinco usuários e alguns aplicativos do lado do servidor que são conhecidos por serem gananciosos em recursos, você deve parecer de alto nível. Sem nomear marcas, algo como: quad core, 24 GB de RAM ou mais, talvez um SSD ou uma matriz RAID de hardware rápida de HDDs.
Assuming the developers are physically located in the vicinity of the server, would it be feasible to set up a multi-seat box with multiple display/keyboard/mouse sets and assign a guest, keyboard, mouse and display head to each user? How would the software and hardware of this setup be architected?
Primeiro, um assunto de primeira linha: aqui e aqui .
O que você aprenderá rapidamente é que existem muitas opções e não há um líder strong nesse espaço. Não há uma maneira óbvia que 99,9% das pessoas usam. Alguns não usam virtualização. Alguns usam várias instâncias do Xorg. Alguns usam o Windows Multipoint Server. Alguns usam ... você entendeu. É definitivamente uma configuração viável, especialmente para apenas cinco usuários ... a vantagem é que você não precisa ter PCs de mesa para cada pessoa, apenas um monitor / teclado / mouse. A desvantagem é que você tem que ter um servidor central mais robusto para suportar todos os usuários, e a configuração do software é mais complexa.
Para uma configuração multiterminal, você precisará de placas gráficas suficientes para ter portas suficientes para todos os monitores necessários. Você também precisará de um hub USB para todos os teclados e mouses.
Esteja ciente de que uma vez que você se comprometa com uma configuração de múltiplas cadeias, você estará fazendo um investimento em placas gráficas (e possivelmente em software multi-sede) que o prenderá para que os desenvolvedores fiquem fisicamente localizados no servidor. Então, se você decidir mais tarde trazer outro desenvolvedor que trabalhe em outra parte do mundo, eles não poderão (facilmente) unir-se à sua configuração existente apenas puxando uma cadeira e trazendo um teclado / mouse / monitor. Também pode ser difícil expandir sua configuração para mais desenvolvedores quando você atingir o limite da porta da placa de vídeo.