Quel genre de garanties que vous utilisez pour éviter de faire accidentellement des changements involontaires de votre environnement de production?

StackOverflow https://stackoverflow.com/questions/956428

Question

Parce que nous n'avons pas un bon environnement de mise en scène, nous avons souvent des problèmes de débogage sur nos systèmes de production. Nous avons Web, des applications et des serveurs de base de données.

Quel type de garanties que vous utilisez pour éviter de faire accidentellement des changements involontaires de votre environnement de production quand vous le faites?


EDIT:

L'application est une application web verticale B2B très complexe. Il y a beaucoup de données impliquées. Certaines tables ont près de 100 millions de disques.


EDIT:

L'environnement de la mise en scène que nous avons mis en place n'a pas la capacité de refléter la production. Il y a aussi des centaines de giga-octets de fichiers de données intervenant outre les données de base de données réelle.


EDIT:

Nous utilisons le contrôle de source pour le code, mais pas pour les procédures stockées. Il y a des anciennes procédures stockées dans le contrôle de la source, mais personne ne conserve que plus mis à jour.

Les principales préoccupations sont la base de données et des données sur le système de fichiers.

BTW, je suis un consultant dans cette entreprise, pas un employé réel.

Était-ce utile?

La solution

La réponse la plus directe est: « Ne fais pas ça. »

Autres conseils

contrôle de code source. rien comme un retour en arrière quand les choses à tort irréparable. En outre, un diff peut vous aider à reproduire les modifications apportées à d'autres systèmes de production.

Nouveautés de production passent par nos systèmes gars, les programmeurs et les développeurs ne peuvent demander de faire leur nouveau système entrera en service, l'approbation est nécessaire aussi bien, et nous montrons que chaque changement qui a été fait a été testé (en incluant un aperçu de tout ce qui a été testé dans le présent communiqué dans la demande de production).

Nous gardons les versions de production antérieures pour fallback en cas de problèmes.

Si les choses ne se cassent (ce qu'ils ne devraient pas faire souvent une procédure de tests appropriés et des lâchers) alors nous pouvons soit faire reculer, ou correctif. Souvent, quand les choses sont rompus dans et le correctif est petit, nous pouvons correctif, puis déplacez le correctif à tester pour faire un test approprié.

Peu importe, parfois les choses deviennent par ...

ne permettent certains comptes d'accès en écriture, vous devez être connecté différemment pour faire un changement

sur le serveur web, ont deux structures de répertoires, ce miroir de l'autre, celui où un seul ID peut écrire, l'autre mise en scène dir, tout le monde peut écrire.

sur le serveur de base de données, ont une production db, où un seul ID peut écrire, une mise en scène db où tout le monde peut écrire. DB mise en scène peut avoir la sauvegarde de nuit restauré à.

Cependant, si vous avez une mauvaise requête ou d'un gros mangeur de ressources dans vos ressources système de mise en scène sera tiré de la production, et la machine pourrait se bloquer.

Pour le Web et les serveurs d'applications, je voudrais essayer de copier l'environnement vers un nouvel emplacement (mais sur le même environnement) et ont les personnes affectées reproduire le problème sur la copie. Cela permettra au moins vous donner un niveau de séparation de vissage accidentellement avec 100% de vos clients.

Pour les serveurs de base de données, je serais configurer des comptes d'utilisateurs sur le système de production pour leur donner lecture des droits seulement.

Lecture seule / comptes des clients. Sérieusement. C'est la même raison que vous ne vous connectez pas toujours en tant que root ou Administrateur.

Ceci est une chose difficile, et il va avec le territoire de « non environnement de mise en scène ».

Pour de nombreuses raisons, il est préférable d'avoir un dédié (double) de PROD vous pouvez utiliser à l'étape ... et se déploie pour déboguer, mais je sais que, parfois, quand vous commencez cela ne fonctionne pas aussi rapidement ou bien que nous voudrions.

Une chose que j'ai vu le travail est l'utilisation de machines virtuelles: en dehors de l'environnement de débogage, vous pouvez créer un mini-PROD dans une machine virtuelle et l'utiliser pour le débogage. Cela peut ne pas être pratique étant donné le type d'application que vous développez, détail si supplémentaire dans ce domaine serait utile.

En ce qui concerne les modifications à éviter PROD pendant le débogage: est-il une raison que vous auriez besoin de changer quoi que ce soit pour faciliter le débogage? Si oui, cela pourrait être intéressant de regarder dans la résolution d'une autre manière.

Le contrôle de version est extrêmement utile pour contrôler les changements dans les environnements de production - tout simplement rendre votre environnement de production d'une copie de travail du répertoire approprié ou des répertoires du référentiel. Lorsque vous lancez une mise à jour, votre système de contrôle de code source veille à ce que tous les fichiers modifiés sont copiés. Lorsqu'une mise à jour casse quelque chose, vous pouvez lancer la copie de travail de production à la dernière révision qui n'a pas été cassé. En outre, vous pouvez vérifier votre production WC à partir d'une étiquette au lieu de partir du tronc; De cette façon vous pouvez décider des révisions du dépôt d'appliquer à l'environnement de production en ajustant la balise.

Si vous n'êtes pas familier avec les concepts de systèmes de contrôle de version, je vous conseille de faire quelques recherches. Ils sont sur le plan conceptuel complexe, mais incroyablement utile et puissant. L'article de Wikipedia est un bon endroit pour commencer: http://en.wikipedia.org/wiki/Revision_control

Je suis désolé, vous devez avoir un environnement de mise en scène. Il n'y a pas contourner ce. Si cela signifie que vous devez abattre la taille de vos ensembles de données, alors c'est ce que vous avez à faire. Utilisez le convertisseur VMware et VMware pour importer les systèmes de production au cours vers le bas périodes, si vous les avez (ce processus est beaucoup heures, alors peut-être pas pratique).

Il y a une certaine classe de problèmes que vous ne pouvez pas résoudre sans avoir accès à la production BDs (ou une copie), la performance est l'un de ceux-ci. Mais vous devriez vraiment construire un environnement de mise en scène, même si elle est sur la machine de bureau de quelqu'un avec un ensemble de données dépouillée.

A part ça, j'ai dû vivre ma vie avec un peu d'entre eux dans le passé, et vraiment, il n'y a rien que vous pouvez faire, sauf beaucoup de sauvegardes. Chaque changement que vous faites doit être précédée par des sauvegardes incrémentielles. De cette façon, si vous fubar'd quelque chose, le montant que vous avez perdu n'est pas importante. SQL Server peut effectuer des sauvegardes différentielles qui limitent quantité d'espace disque utilisé pour les sauvegardes. Oracle peut aussi bien.

Si vous avez vraiment pas d'autre choix, et il est susceptible d'être une situation chronique ... envisager d'ajouter une certaine façon aux données d'application (fichiers ou base de données) pour marquer un ensemble de données comme « s'il vous plaît ne pas Dieu réellement changer activement l'état de la production avec ces données », combinées avec des données décharges à des positions critiques dans un processus lorsque ce drapeau est activé, vous pouvez être en mesure d'exercer plus de la logique de la production sans que les données réellement suivies.

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