Dans le passé, j'ai travaillé dans une variété d'environnements. Applications de bureau, jeux, éléments intégrés, services Web, travaux en ligne de commande, sites Web, rapports de base de données, etc. Tous ces environnements partageaient le même trait: quelle que soit leur complexité, quelle que soit leur taille, je pouvais toujours avoir un sous-ensemble ou une tranche de l'application sur ma machine ou dans un environnement de développement à tester.
Aujourd'hui non. Aujourd'hui, je me retrouve dans un environnement dont l'objectif principal est l'évolutivité. La reproduction de l'environnement est d'un coût prohibitif. Prendre une tranche de l'environnement, bien que plausible (certaines pièces devraient être simulées ou utilisées dans un mode à instance unique qu'elles ne sont pas faites pour faire), va un peu à l'encontre du but car il obscurcit la concurrence et le chargement qui le vrai système rencontre. Même un petit système de "test" a ses défauts. Les choses se comporteront différemment lorsque vous aurez 2 nœuds et que vous en aurez 64.
Mon approche habituelle de l'optimisation (mesurer, essayer quelque chose, vérifier l'exactitude, mesurer les différences, répéter) ne fonctionne pas vraiment ici car je ne peux pas faire efficacement les étapes 2 et 3 pour les parties du problème qui importent (robustesse de la concurrence et performances sous charge). Ce scénario ne semble cependant pas unique. Quelle est l'approche commune pour effectuer ce genre de tâche dans ce type d'environnement?
Il y a quelques questions connexes:
Reproducing the environment is prohibitively costly.
- Combien coûte un bug de production à l'arrêt? Et 2 bugs? À des moments imprévisibles (très probablement lorsque la majorité de vos utilisateurs mettent la charge sur le système en même temps). Pesez cela par rapport au coût de la mise en place d'un environnement de reproduction minimal - vous pourriez trouver que ce n'est pas si prohibitif après tout.
prohibitively costly
.