Scénario:
- Vous poussez vers la production
- La poussée a cassé plusieurs choses
- Cette même version n'a pas cassé qa ou dev
- En tant que développeur, vous n'avez pas accès à prod.
- Il y a beaucoup de pression d'en haut pour que les choses fonctionnent bien.
Détails:
- Application PHP / MVC pilotée par API dans Zend.
- Déployé sur quelques serveurs.
Ma question:
Pendant l'enquête, disons que j'ai l'impression que quelque chose ne va pas. Mais je n'en suis pas sûr. Et, bien sûr, je ne peux pas tester les choses en production. Si j'ai un correctif suggéré basé sur cette intuition, serait-il sage d'essayer de l'appliquer et de voir si cela fonctionne, avant de comprendre quel est le problème?
bug
production
bitcycle
la source
la source
Réponses:
Saisissez autant d'informations que possible sur le problème (fichiers journaux, etc.), puis ramenez les serveurs de production à un état de fonctionnement. C'est une douleur du point de vue du développeur, bien sûr, mais c'est très probablement une donnée.
Ensuite, essayez de voir si vous pouvez reproduire le problème dans un environnement de développement. Si vous le pouvez, corrigez-le et essayez à nouveau de le publier.
Si vous ne pouvez pas le reproduire, vérifiez si vous pouvez ajouter plus de diagnostics et publier sur un serveur pendant une courte période pour obtenir plus d'informations sur le problème.
Si cela n'est pas possible, examinez de plus près les différences entre la production et les environnements de développement / qa et essayez de rapprocher un environnement de développement de la production.
la source
Comment bien vous comprenez le problème? Quel est le risque que votre intuition aggrave les choses? Est-il possible de revenir en arrière et de reproduire le problème dans les régions DEV / QA? Que pouvez-vous faire pour synchroniser votre région DEV / QA pour la rapprocher de PROD? Vous devez peut-être modifier certains paramètres environnementaux ou de base de données, vous devez peut-être importer les données PROD vers DEV, vous devez peut-être modifier certains paramètres de débogage.
En général, je ne recommanderais pas de pousser votre intuition d'une solution vers PROD à moins que vous ne puissiez confirmer qu'elle est en effet correcte dans une autre région. Je comprends le type de problèmes qui surviennent lorsqu'un bogue se produit dans PROD et ne peut être reproduit nulle part ailleurs. C'est à ce moment-là qu'il faut voir ce qui diffère entre DEV / QA et PROD et se concentrer sur ceux-ci. D'après mon expérience, il s'agit généralement d'un paramètre environnemental ou d'une configuration différente, en particulier pour PROD. Et je sais qu'il y a probablement beaucoup de pression d'en haut pour résoudre ce problème, il est donc possible de revenir à l' état de travail précédent , puis d'essayer de reproduire le problème dans DEV, de trouver un correctif dans DEV, puis d' essayer à nouveau dans PROD? C'est ce que je suggérerais.
la source
Dépend du type de correction. Le plus souvent, les problèmes de production qui n'apparaissent pas dans dev sont liés à des conflits dans la base de données. Donc, appliquer un bogue qui modifie le contenu de la base de données sans être sûr de ce qui est exactement "là-bas" peut être une première étape dans une grande catastrophe. Si vous pouvez facilement reprendre le changement, vous pourrez peut-être essayer. Mais en général, si vous n'avez pas d'accès direct, il devrait y avoir au moins une copie de la base de données ou de l'ensemble du serveur pour les tests. Les personnes disposant des privilèges appropriés devraient toujours exécuter le nouveau code, mais au moins sans risque de perte de données. (Mais parfois la taille de la base de données ou la complexité de l'infrastructure interdit une telle configuration)
C'est vraiment difficile, car il existe de nombreuses possibilités comme différents paramètres, bibliothèques et versions de logiciels.
Peut-être que vous pouvez d'abord écrire un morceau de code qui évalue avec une sortie de débogage si votre supposition pour la source du bogue était correcte et ensuite seulement appliquer le correctif de bogue réel.
la source
Il s'agit généralement de problèmes de configuration ou de données, en supposant que le code et la base de données sont identiques entre Prod, QA et dev.
Je voudrais d'abord regarder ce qui suit:
Une fois que vous comprenez ce qui se passe, vous devez restaurer la production à un état de fonctionnement et travailler à résoudre le problème dans un environnement inférieur, jusqu'à ce qu'il soit résolu et redéployé en production.
la source
Alors que votre environnement est PHP, j'ai fait une présentation sur la façon d'y penser pour Java: http://www.infoq.com/presentations/maintaining-production-java-apps
Les problèmes principaux sont les mêmes - pour comprendre les éventuels points d'étranglement pour dépanner la situation: réseau, accès au système de fichiers, fichiers journaux, blocages, etc. signifie: la page Web est-elle lente, y a-t-il un message d'erreur spécifique, y a-t-il un délai d'attente?, etc.
De plus, il existe des outils pour faciliter le dépannage: Wireshark pour le dépannage du réseau est un meilleur absolu et mérite d'être appris. D'autres dépendent de l'O / S que vous utilisez. Pour Windows, tout ce qui provient de SysInternal (qui fait maintenant partie de Microsoft) est génial. Pour Unix / Linux, regardez truss / strace.
Concernant l'accès à la production, le groupe des opérations doit savoir comment utiliser ces outils / techniques ou vous avez une analyse de rentabilisation pour eux (avec vous) pour apprendre à les utiliser. Après cela, ils ont besoin d'un ensemble spécifique de protocoles de dépannage pour s'exécuter en cas de problème, afin que vous puissiez faire votre analyse hors ligne.
la source
Réponse courte: Pas si vous avez le choix.
Réponse longue: Si vous ne comprenez pas le problème, un tel patch comporte plusieurs risques:
D'un autre côté, je ne vois aucun inconvénient à vérifier d'abord si votre solution hypothétique fonctionne, et si c'est le cas - puis à creuser plus profondément et à découvrir la vraie raison ou d'autres moyens éventuellement meilleurs pour résoudre le problème.
la source