Je suis pas du tout expert là dedans mais je dirais que c'est en grande partie dépendant de l'appli en elle-même, de la structure des données aux requêtes effectuées par le client, en passant par la fréquence ces accès BDD.
Et il me semble qu'il y a des questions à se poser comme:
Est-ce que tu peux te permettre que la qualité de service soit dégradée dans de rares cas (e.g. maximum d'utilisateur × maximum d'activité)
Est-ce que tu veux un truc capable de supporter strictement le fonctionnement maximum établi, ou bien est-ce que tu veux prendre de la marge en cas d'évolution future (plus d'utilisateur, nouvelle version du logiciel, … ?)
Par exemple, pour la partie réseau tu dois pouvoir faire une assez bonne estimation en mesurant le traffic réseau (maximum ?) avec un seul utilisateur. Si un utilisateur peut bouffer 16Mbit/s de bande passante et que tu peux avoir 100 utilisateurs, il va te valoir au moins de quoi assurer 2Gbit/s de traffic réseau…
Et pour la RAM il semble logique qu'une bdd de 2 Go tienne à l'aise dans 16 Go, donc ça peut sembler énorme. Donc en tenant compte des structures du système d'exploitation + du SGBD, ça pourrait peut-êre bien marcher avec juste 4 Go de RAM… Mais quelle est la taille moyenne du résultat d'une requête utilisateur ? 10 Ko / 1 Mo / 100 Mo ? Si tu as 100 résultats de 100 Mo en mémoire au même moment, ben ça fait 10 Go… (Ça me semble un peu extrême mais on sait jamais)
Bref, il me semble que tu dois faire un profiling "un peu poussé" de ton application pour pouvoir déterminer, mais je suis pas spécialiste là dedans donc…
