Welche Schutzmaßnahmen verwenden Sie versehentlich machen unbeabsichtigte Änderungen in der Produktionsumgebung zu vermeiden?

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

Frage

Da haben wir keine gute Staging-Umgebung wir oft zu debuggen Probleme auf unserer Produktionssysteme haben. Wir haben Web-, Applikations- und Datenbankserver.

Welche Art von Schutzmaßnahmen verwenden Sie versehentlich macht unbeabsichtigte Änderungen in der Produktionsumgebung zu vermeiden, wenn dies zu tun?


EDIT:

Die Anwendung ist eine sehr komplexe B2B vertikale Web-Anwendung. Es gibt eine Menge von Daten beteiligt. Einige Tabellen haben fast 100 Millionen Datensätze.


EDIT:

Die Staging-Umgebung haben wir im Ort hat nicht die Kapazität der Produktion zu spiegeln. Darüber hinaus gibt es Hunderte von Gigabyte an Datendateien neben der eigentlichen Datenbankdaten beteiligt.


EDIT:

Wir tun Quellcodeverwaltung für den Code verwenden, aber nicht für die gespeicherten Prozeduren. Es gibt einige alte gespeicherte Prozeduren in der Quellcodeverwaltung, aber niemand hält, dass mehr aktualisiert.

Die wichtigsten Anliegen sind die Datenbank und die Daten auf dem Dateisystem.

übrigens, ich bin ein Berater bei dieser Gesellschaft, nicht um einen tatsächlichen Mitarbeiter.

War es hilfreich?

Lösung

Die direkte Antwort lautet: „Tu das nicht.“

Andere Tipps

Quellcodeverwaltung. nichts, wie ein Rollback, wenn die Dinge zu irreparablen falsch. Auch kann ein diff helfen, die Änderungen an anderen Produktionssystemen zu replizieren.

Neue Produktionsmitteilungen über unsere Systeme Jungs gehen, können die Programmierer und Entwickler nur verlangen, ihr neues System machen live geschaltet, die Genehmigung wird auch benötigt, und wir zeigen, dass jede Änderung, die vorgenommen wurde, wurde getestet (durch eine inklusive Schnappschuss von allen, die in dieser Pressemitteilung in der Produktionsanforderung getestet wurde).

Wir halten den bisherigen Produktions-Releases für Rückfall bei Fragen.

Wenn die Dinge brechen tun (was sie nicht oft mit einem geeigneten Testverfahren und verwaltet Versionen tun sollte), dann können wir entweder beim Rollback oder Hotfix. Oft, wenn Dinge im Leben sind gebrochen und das Update ist klein, können wir Hotfix, dann das Update bewegen zu testen, einen richtigen Test zu tun.

Unabhängig davon, manchmal die Dinge durch ...

erlauben nur bestimmte Konten Zugriff zu schreiben, so dass Sie anders einloggen müssen, um eine Änderung vornehmen

auf dem Webserver, haben zwei Verzeichnisstrukturen, die einander spiegeln, ein, wo nur eine ID schreiben kann, die andere Inszenierung dir, jeder kann schreiben.

auf Datenbankserver, hat eine Produktion db, in denen nur eine ID schreiben kann, hat eine Inszenierung db wo jeder schreiben kann. die Inszenierung DB kann nächtliches Backup es wiederhergestellt haben.

Wenn Sie jedoch eine schlechte Abfrage oder eine Ressource Schwein in der Staging Systemressourcen haben wird von der Produktion gezogen werden, und die Maschine konnte hängen.

Für Web- und Anwendungsserver, würde ich versuchen, die Umwelt an einen neuen Speicherort zu kopieren (aber auf der gleichen Umgebung) und haben die betroffenen Menschen Verhalten auf der Kopie zu reproduzieren. Dies wird zumindest gibt Ihnen eine Stufe der Trennung von versehentlich mit 100% Ihrer Kunden zu schrauben.

Für Datenbankserver, würde ich Benutzerkonten auf dem Produktionssystem konfiguriert, dass sie nur Rechte zu geben, lesen.

Read-Only / Gastkonten. Ernsthaft. Es ist der gleiche Grund, warum Sie nicht immer als root oder Administrator melden.

Das ist eine schwierige Sache, und es geht mit dem Gebiet „keine Staging-Umgebung.“

Aus vielen Gründen ist es am besten ein spezielles (duplicate) von ART haben Sie Bühne verwenden können entsendet zu ... und debuggen, aber ich weiß, dass manchmal, wenn Sie beginnen, dass nicht funktioniert so schnell oder gründlich wie wir wollen würden.

Eine Sache, die ich Arbeit gesehen habe, ist die Verwendung von VMs: abgesehen von der Debug-Umgebung, können Sie ein Mini-ART in einer VM erstellen und verwenden, die zu debuggen. Dies ist nicht praktisch sein kann, die Art der App angegeben Sie entwickeln, so ein zusätzliches Detail in diesem Bereich wäre hilfreich.

Wie bei Änderungen ART während der Fehlersuche zu vermeiden: Gibt es einen Grund, warum Sie benötigen würden, etwas zu ändern Debuggen zu erleichtern? Wenn ja, das könnte lohnt einen Blick in einer anderen Art und Weise zu lösen.

Die Versionsverwaltung ist äußerst hilfreich für Änderungen in Produktionsumgebungen zu steuern - einfach Ihre Produktionsumgebung einer Arbeitskopie des entsprechenden Verzeichnisses oder Verzeichnisse aus dem Repository machen. Wenn Sie ein Update ausrollen, Ihre Source-Control-System sorgt dafür, dass alle geänderten Dateien kopiert werden. Wenn ein Update etwas kaputt geht, können Sie die Produktion Arbeitskopie zurück zur letzten Revision rollen, die nicht gebrochen waren. Auch können Sie Ihre Produktion WC heraus von einem Tag statt aus dem Stamm überprüfen; auf diese Weise können Sie die Repository-Revisionen entscheiden in der Produktionsumgebung anzuwenden, indem das Tag eingestellt werden.

Wenn Sie nicht vertraut mit den Konzepten der Versionskontrollsysteme sind, würde ich Ihnen raten, etwas Forschung zu tun. Sie sind vom Konzept her komplex, aber unglaublich nützlich und leistungsstark. Der Wikipedia-Artikel ist ein guter Anfang: http://en.wikipedia.org/wiki/Revision_control

Es tut mir leid, müssen Sie eine Staging-Umgebung haben. Es gibt keinen, dies zu umgehen. Wenn es bedeutet, müssen Sie die Größe Ihrer Datensätze keulen, dann ist das, was Sie zu tun haben. Verwenden Sie VMware und VMware Converter die Produktionssysteme während des Herunter Perioden zu importieren, wenn Sie sie haben (dies ist ein viel Stunde Prozess, also vielleicht nicht praktikabel).

Es gibt eine bestimmte Klasse von Problemen, ohne vollen Zugang zu Produktion DBs nicht lösen können (oder eine Kopie), die Leistung einer von diesen ist. Aber Sie sollten wirklich eine Staging-Umgebung aufbauen, auch wenn es mit einem abgespeckten Datensatzes auf jemandes Desktop-Rechner ist.

Abgesehen davon, ich habe mein Leben leben mit ein paar von diesen in der Vergangenheit, und wirklich, es gibt nichts, was man außer viele Backups tun. Jede Änderung, die Sie durch inkrementelle Sicherungen vorgeschaltet sein lassen sollte. Auf diese Weise, wenn Sie etwas fubar'd, die Menge, die Sie verloren haben, ist nicht erheblich. SQL Server kann differenzielle Sicherungen übernehmen, die für Backups verwendete Menge an Speicherplatz begrenzen. Oracle kann als gut.

Falls Sie wirklich keine andere Wahl, und es ist wahrscheinlich eine chronische Situation sein ... gedacht eine Art und Weise zu den Anwendungsdaten hinzugefügt (Dateien oder Datenbank) Flagge eine Reihe von Daten als ‚Gott will nicht tatsächlich aktiv Produktion Zustand mit diesen Daten ändern‘, mit Daten kombiniert Dumps an kritischen Stellen in einem Prozess, wenn dieser Flag aktiviert ist, können Sie in der Lage sein, die meisten der Produktionslogik zu üben, ohne dass die Daten tatsächlich eingewirkt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top