Question

C’est une question délicate qui m’a été posée l’autre jour ... Nous travaillons sur une application de téléphonie assez complexe (SIP) avec du code C ++ et PHP mixte avec des bases de données MySQL et plusieurs composants open source.

Un ingénieur en télécommunications nous a demandé d’estimer les performances de l’application (qui n’est pas encore prête). Il a répondu: "Vous savez combien de paquets peuvent passer par le noyau Linux par seconde. Vous savez peut-être aussi la rapidité de votre application. Dites-moi donc combien d'appels passeront dans vos données par seconde".

Cela me semble insensé, car un million de scénarios pourraient se produire (enfin, littéralement ...)

Cependant ... existe-t-il un moyen d'estimer les performances des applications (connaître le matériel sur lequel il va s'exécuter, être en mesure d'exécuter des tests de performances standard, etc.) avant de tester réellement?

Était-ce utile?

La solution

Vous pouvez certainement résoudre le problème avec des limites supérieures (débit maximal). Il n'y a rien de stupide à ce sujet. En fait, le fait de ne pas connaître ces informations indique une approche assez aléatoire du problème, en particulier dans le monde de la téléphonie.

Vous pouvez résoudre le problème vous-même. Quel est le minimum "travail"? vous devez accomplir pour une transaction ou une unité de tâche que vous avez dans votre application?

Certains messages en provenance et à destination, certains traitements et une base de données touchée, par exemple? Obtenir des informations sur les pièces individuelles vous donnera une idée du débit le plus rapide possible. Si vous chargez le système et constatez des performances nettement inférieures, vous pouvez prendre le temps de comprendre où vous risquez de perdre du débit avec des algorithmes inefficaces, etc.

MODIFIER

Pour faire cet exercice, vous devez connaître toutes les étapes que votre application effectue pour chaque cas d'utilisation. Vous pouvez ensuite identifier le débit maximal pour chaque cas d'utilisation. Vous devez absolument connaître ces informations avant leur sortie et leur mise en production.

J'ignore la pire des analyses car, comme vous l'avez fait remarquer, c'est un peu plus difficile.

Autres conseils

Voir Planification de la capacité pour les performances Web: métriques, modèles et méthodes . . Certains outils peuvent également effectuer ce type de simulation d’événements discrets:

Ce n'est pas facile, et les outils commerciaux vont vous coûter cher. Le manuel de planification des capacités est fourni avec un CD contenant de nombreux modèles de classeurs Excel et des exemples de modèles pouvant vous aider à démarrer.

Bonne chance:)

Si vous devez vraiment répondre à cette question, vous pouvez dire quelque chose comme ceci:

"Je ne sais pas par coeur. Je suis prêt à estimer cela pour vous, mais cela prendra du temps. Évidemment, l’exactitude de ma réponse dépend de l’effort (temps I.E.) que j’ai consacré au calcul de mon estimation. Combien de temps dois-je consacrer au calcul de mon estimation?

Remettez le fardeau sur eux. S'ils veulent vraiment une réponse précise, ils devront vous laisser créer au moins certaines applications de test capables de simuler l'environnement réel.

Vous pouvez utiliser des pics pour mesurer les performances. Tout votre système ne fonctionne peut-être pas encore, mais vous savez comment les pièces sont conçues pour s'emboîter. Vous pouvez créer quelque chose en quelques heures qui effectue le même type de travail que l'application finale, sur toutes les couches, et l'utiliser pour mesurer les performances de votre conception.

N'oubliez pas: les prototypes sont larges et les pointes profondes.

Vous devriez faire l’estimation. Une estimation ne vous donnera pas la bonne réponse. Cela vous incitera toutefois à réfléchir au problème. En ce moment, cela ressemble à votre codage et à l’espoir que tout ira bien. Ou vous êtes en mode panique et vous n’avez pas le temps de faire des estimations.

Passez du temps à y penser. Analysez les cas d'utilisation importants. Pensez à la mémoire dont vous pourriez avoir besoin. penser à l'accès à la base de données; Pensez à l'accès réseau (local et distant). Cela affectera les performances de votre système. Rassemblez toute l'équipe pour le faire.

Mesurez régulièrement les performances de votre système au cours du développement pour ces cas d'utilisation importants. Maquette composants / autres systèmes si vous devez. Analyser les résultats. Comment se comparent-ils à votre estimation? Peut-être que les composants sont liés à la mémoire / à la base de données / au réseau. Peut-être avez-vous besoin de plus de mémoire; moins d'accès à la base de données; requêtes plus simples; la mise en cache. Vous n'êtes pas obligé de faire ces changements tout de suite. Cependant, vous savez comment votre système fonctionne et ce que vous devez faire.

Résultat: Moins de mauvaises surprises lors du test du système. Moins de panique à l'approche de la date de sortie.

Vous pouvez certainement planifier à l'avance vos capacités, mais la qualité de l'estimation dépendra de la qualité des données disponibles.

La meilleure estimation consiste à mettre le système à l'essai, à exécuter des charges de travail simulées, puis à prévoir la capacité en fonction des exigences de performance et de la charge de travail. Ces 3 forment un espace de prédiction - 2 des 3, vous pouvez prédire le troisième:

  1. En fonction des exigences de performances et de la capacité (matériel), vous pouvez calculer la charge de travail que vous pouvez gérer.

  2. En fonction des exigences de performances et de la charge de travail, vous pouvez calculer la capacité (matériel) dont vous avez besoin.

  3. Étant donné la charge de travail et la capacité, vous pouvez prédire les performances que vous attendez.

Cela est vrai dans certains domaines, mais à moins que vous ne soyez un expert dans ce domaine, vous n’avez aucune idée. Par exemple, j'écris du code pour contrôler des robots industriels. La vitesse est limitée par le mouvement du robot et non par la vitesse d'exécution du code. Sachant à quelle vitesse le robot se trouve et jusqu'où il doit aller, nous pouvons faire une assez bonne estimation de la "vitesse". Je ne sais pas comment estimer le temps dont vous disposez pour votre candidature.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top