Ist es schlecht, sich gegen Produktionsdaten zu entwickeln?

10

Ich habe immer gehört, dass es eine schlechte Praxis ist, sich anhand von Produktionsdaten zu entwickeln, und bin derzeit dabei, auf ein Dev> Stage> Production- Modell umzusteigen , hauptsächlich weil ich einen neuen Mitarbeiter mit minimalen Fähigkeiten habe und ihn lieber nicht haben möchte arbeiten noch direkt mit Produktionsdaten.

Aber ich habe lange Zeit direkt mit Produktionsdaten gearbeitet, mit minimalen Kopfschmerzen, außer vielleicht ein paar Fehlern, die sich hier oder da einschleichen, Dinge wie Rechtschreibprobleme, schlechter Alternativtext, Links, die auf den falschen Ort verweisen. Dies scheint auf einen Mangel an Peer Review meinerseits zurückzuführen zu sein, nicht auf die Arbeit mit Live-Daten.

Warum ist die Entwicklung auf der Live-Site so schlecht?

plntxt
quelle
Sie können einfach die Daten, die Sie auf Ihrem Produktionsserver haben, auf dem Entwicklungsserver duplizieren.
HoLyVieR
1
mmmm ... wie kann ich diese Frage positiv bewerten, ohne Ihre Art zu unterstützen, Dinge direkt mit Produktionsdaten zu tun? : S
vmarquez
2
@vmarquez Ist eine Frage zu einer schlechten Praxis unbedingt eine schlechte Frage?
plntxt
Nein ist es nicht. Ich wollte gerade abstimmen, weil ich das Gefühl hatte, dass diese Art von Fragen eine großartige Form ist, um über bewährte Praktiken zu informieren, und dann kam mir irgendwie die Idee, dass Abstimmen als stillschweigende Zustimmung angesehen werden könnte auf die schlechte Praxis, was genau den gegenteiligen Effekt hervorruft. Jetzt denke ich, dass Abstimmungen irreführend sein können ... zumindest in einigen Fällen.
Vmarquez
1
Menschen stimmen aus verschiedensten Gründen über Dinge ab. Ich stimme nicht für etwas anderes als "diese Person hat etwas aus dieser Frage herausgeholt".
Artlung

Antworten:

17

Wenn Sie während der Entwicklung SQL-Befehle ausführen, die vorhandene Datenbanktabellen enthalten INSERToder UPDATEin vorhandenen Datenbanktabellen enthalten, besteht das Risiko, dass diese Datenbanktabellen geschäftskritisch sind.

Einige Orte synchronisieren Produktionsdaten in bestimmten Intervallen in die Entwicklungsdatenbank, z. B. einmal pro Woche oder auf Entwickleranforderung, damit Sie neue Daten zum Entwickeln haben.

Wenn Ihre Produktionsdaten jedoch nicht durch Ihre Aktivitäten gefährdet sind, z. B. wenn Sie lediglich eine Ansicht einiger Daten entwickelt haben, ist dies normalerweise keine große Sache. Wenn Sie jetzt Berichte ausführen, die Tabellenscans durchführen, haben Sie das Potenzial, eine Tabelle zu sperren, und Ihre vorhandenen Benutzer sind betroffen.

In solchen Fällen würde ich mich an meinen Datenbankadministrator wenden. Wenn es keinen "offiziellen" DBA gibt, würde ich auf Nummer sicher gehen. Es ist einfach genug, eine Entwicklungsdatenbank zu erstellen, selbst für mich. In einem Team ist es wichtig. Andernfalls könnten Sie, wenn Sie darauf bestehen, nur eine Datenbank zu haben, Ihren Entwicklungsdatenbanktabellen ein Präfix voranstellen DEV_und sich ein bisschen besser fühlen. Ja, das erfordert einige Codeänderungen, aber in der Entwicklung $debug = truelohnt es sich normalerweise , einige Variablen während der Entwicklung usw. hinzuzufügen .

Viele Möglichkeiten, dies zu erreichen. Es hängt sehr von Ihrer Situation ab.

artlung
quelle
+1 beim Synchronisierungsprozess. Das machen wir hier auf Anfrage für unsere Entwicklung. Wir haben auch eine Qualitätssicherung, die ein häufiger synchronisierter Bereich für die endgültige Überprüfung von Änderungen ist, bevor sie die Produktion erreichen. Manchmal führen wir jedoch Abfragen für Produktionsdaten durch, nur weil das Problem datenbezogen und sehr schwer zu replizieren ist.
Milner
+1 und Synchronisierung können schwierig sein. In vielen Fällen möchten Sie im Rahmen des Prod-> Test-Pushs beispielsweise Scrub-E-Mail-Adressen und -Namen usw.
ausführen
11

Sie möchten NICHT gegen Produktionsdaten auf Ihrem Produktionsserver entwickeln. Es gibt ein paar große Gründe.

  1. Die Entwicklung verlangsamt Ihre Produktionsbox und schafft Schwachstellen. Was passiert, wenn Sie Ihren Computer unverschlossen lassen und weggehen?
  2. Wenn Sie einen Fehler machen, können Personen, die Ihre Website besuchen, ihn sehen.
  3. Wenn Sie innerhalb einer Transaktion in Ihrer Datenbank Daten aktualisieren und diese nicht sofort festschreiben oder die Transaktion eine Weile dauert, werden alle beteiligten Tabellen gesperrt, und es kann zu einer Zeitüberschreitung kommen .
  4. Einige Datenbanksysteme, insbesondere SQL Server, führen manchmal Tabellensperren nur für SELECT-Anweisungen durch! Dies bedeutet, dass Sie unbeabsichtigt Zeitüberschreitungen oder Fehlerseiten auf Ihrer Website angeben können.

Wenn möglich, würde ich niemals Entwicklungsarbeiten an einer Live-Box durchführen. Am besten erstellen Sie eine Sicherungskopie der Datenbank und der Seiten, arbeiten mit der Kopie und senden dann Ihre Updates. Ein Tool, das mir sehr geholfen hat, ist Msfts SyncToy.

Ben Hoffman
quelle
7

Nun, Sie können die Daten wirklich durcheinander bringen. Stellen Sie sich vor, Sie lassen eine where-Klausel weg. Selbst wenn Sie stündliche Backups haben, wäre dies ein Problem, das behoben werden muss.

Echo sagt Reinstate Monica
quelle
3

Wenn Sie nicht ohne Sicherheitsgurt fahren, entwickeln Sie keine Produktionsdaten. Nur ein Sicherheitsproblem.

MrChrister
quelle
3

Wenn Sie Produktionsdaten zur Verfügung haben, ist es sinnvoll, diese zum Testen zu verwenden, verwenden Sie jedoch eine separate Testdatenbank mit einer Kopie dieser Daten. Andernfalls funktionieren viele Dinge für Ihre wenigen "blabla" -Testaufzeichnungen, jedoch nicht für ein reales Szenario.

Und für die Entwicklung von Live-Produktionsdaten - denken Sie an die Murphy-Gesetze "Alles, was schief gehen kann, wird schief gehen.", Und es ist so einfach, einen kleinen Fehler mit großen schlimmen Konsequenzen zu machen.

devmake
quelle