Bom dia,
Na minha experiência ao longo dos anos, tenho feito aplicações de todo o tipo, com qze todas as linguagem do mercado, como PHP, .net e Java que é meu melhor skill.
No que tange a performance e quantidade de usuários, as coisas que podem mais impactar o uso de um sistema, seja ele qual for é a quantidade de conexões de DB, mips de Mainframe, Webservices e outras coisas além da fronteira da aplicação que requerer algum tipo de pool.
O front-end é a parte que terá uma complexidade alta, dependendo do quanto de perfumaria que o cliente pode querer, contudo, temos aí muita coisa em Ajax que pode auxiliar nessas horas pra vc ter seus controles visuais de forma limpa, mas que tb requer muita atenção. Haja vista o exemplo de combos aninhados, que, dependendo de onde vem as tais informações e de como estão as consultas que as compõem, podem acarretar em lentidão.
O envolvimento de um DBA é sempre importante para te ajudar a fazer as consultas da melhor forma no banco e a se conectar tb com a melhor performance para manter os recursos sempre “frios”.
Testes de stress seriam procedimentos que eu iria utilizar com certeza, independentemente da minha arquitetura, pois, isso me mostraria o que mais eu teria que fazer para melhorar a disponibilidade do sistema que eu estiver trabalhando.
Outra coisa bem importante e, eu, na minha opinião, tb creio que é um risco é saber quanto de infraestrutura se servidores vc terá disponível para esse trabalho, já pensando na possibilidade de aumentar processadores, disco e outros features, como já foi comentado aqui. Servidor físico é osso mesmo, pq, geralmente, vai atrapalhar quando vc perceber que tal servidor pode não estar compliance com a sua solução como um todo.
Eu concordo tb com o que já foi dito aqui que, a equipe é quem tem que ficar a vontade com qual a linguagem ou o framework que será utilizado e, tb concordo que a solução tem que ser analisada e entendida como um todo para evitar entregar uma solução que não vai atender as necessidades de seu cliente.
Tente gastar um tempo analisando tudo junto com a equipe para vc ir extraindo o “feeling” deles e depois, monte uma proposta que seja viável para a equipe e para o cliente, utilizando o melhor que vc tiver nas mãos, sem se matar ou matar os demais…(a parte de se matar foi uma piada…rsrs)