2010-01-13 5 views
15

On me demande souvent d'effectuer une planification de la capacité et de la capacité pour nos clients. Lorsque nos clients achètent nos produits (essentiellement des applications Web J2EE), ils se demandent souvent de quel matériel ils auront besoin pour exécuter ces produits. Nos recommandations entraînent souvent des acquisitions de matériel à coût élevé. Jusqu'ici, la meilleure heuristique que j'ai développée est de comparer les projections d'utilisation (nombre d'utilisateurs enregistrés et simultanés auxquels l'application doit participer) avec les données collectées sur nos installations existantes. Quelque chose comme: Si l'installation A assiste à 100 utilisateurs simultanés avec du matériel X, alors l'installation B aura besoin d'un matériel 2 * X pour assister à 200 utilisateurs simultanés. Cependant, cette approche présente un certain nombre de problèmes. Les clients utilisent souvent différentes plates-formes matérielles et logicielles. L'ensemble des produits qu'ils achètent chez nous n'est généralement jamais le même et généralement des parties d'application sont construites sur commande pour un client spécifique. Tenez compte du fait que les versions du logiciel changent, etc. et qu'il y a tellement de paramètres qui peuvent rendre la tâche de dimensionnement très difficile. J'ai étudié quelques livres sur le sujet et certains proposent d'utiliser des modèles mathématiques complexes. Le nombre de paramètres requis par ces approches en entrée (par exemple, la classification détaillée des fonctionnalités de l'application) me fait penser qu'ils ne sont guère utiles. Le matériel est généralement commandé avant même que les exigences de base ne soient définies, sans compter que celles-ci varieront tout au long du développement de l'application et du cycle de vie. Alors, comment allez-vous le dimensionnement et la planification de la capacité? Tous les conseils et astuces appréciés.Conseils et procédures pour le dimensionnement et la planification de la capacité

Répondre

3

Si le matériel doit être commandé avant que les exigences de base ne soient définies, le mieux que vous puissiez faire est d'augmenter la capacité en consultant votre base installée pour un ensemble de projets similaires (comme vous le faites actuellement). Gardez une trace de l'expérience de vos clients existants en termes d'évolutivité et de capacité à mesure qu'ils grandissent leurs installations, et si vous avez une base suffisante, vous pouvez probablement faire une courbe approximative en regroupant des projets similaires avec du matériel similaire et en recherchant des capacités. Regardez comment les besoins de capacité des clients existants changent pendant la croissance ainsi que des points de données supplémentaires.

Idéalement, l'achat HW/SW initial est pour une installation pilote, et vous comparez la configuration du pilote une fois qu'il est en place et conforme aux spécifications. Utilisez ces résultats pour projeter les besoins de capacité pour le passage du pilote à la production. Bien sûr, cela nécessite du temps dans le programme pilote de production pour comparer l'application, puis commander et prendre livraison de l'équipement. Mais cela donnera une estimation de capacité plus précise que de faire tout cela d'avance.

0

Si l'application s'échelonne horizontalement de manière gracieuse, une estimation initiale approximative est correcte comme point de départ. L'ajout ou la suppression de boîtes supplémentaires, au besoin, devrait être facile une fois l'application lancée en production.

+0

Le problème est commercial, pas technique. Les clients doivent avoir une idée de l'initiale et du coût total de possession au préalable. En outre, négocier avec les fournisseurs de matériel est plus facile si vous connaissez le produit exact dont vous avez besoin. Estimation trop grande et le client est coincé avec HW dont il n'a pas besoin; estimer trop peu et vous dérangez son budget, n'avez pas un effet de levier avec le vendeur etc. – Dan

4

Il n'y a pas de formule facile ou mathématique pour prédire l'échelle dans la description que vous avez donné, si vous (ou votre entreprise) êtes sérieux à ce sujet alors la meilleure façon est de construire un environnement de test d'évolutivité des performances & où vous pouvez facilement configurer & démolir diverses configurations de client et envoyer la charge à eux pour voir comment ils vont faire. Parce que vous construisez des composants personnalisés, un composant mal écrit ou un index manquant peut tout gâcher, donc avoir un environnement comme celui-ci est l'endroit où vous pouvez repasser ces choses avant de donner au client. Une fois que vous avez ce type d'environnement, vous pouvez ajouter la mémoire & cpu aux bases de données des serveurs d'applications & pour voir comment votre application évolue. Je suggère un environnement VM où ils peuvent facilement ajouter de la mémoire cpu & en fonction des besoins de l'application, couplé avec des tests de charge/échelle externe réaliste en utilisant un service comme watchmouse ou navigermob.

Questions connexes