Ich bin seit ungefähr 5 Jahren in der Webentwicklungsbranche tätig und arbeite immer in einer Open Source-Umgebung. Meistens Apache, MySQL und PHP mit etwas Rubin, wobei Git zur Versionskontrolle verwendet wird. Aber vor kurzem nahm einen Job auf, bei dem die Entwicklung vollständig C # ASP.NET MVC ist.
Während ich in der Lage war, die Sprache usw. ziemlich leicht zu erlernen, haben die anderen Mitglieder meines Teams (mit viel mehr Erfahrung in der MS-Entwicklung als ich) alle eine andere Denkweise, wenn es um die Veröffentlichung und Bereitstellung der endgültigen Site geht, und insbesondere zukünftige Änderungen.
Die Mentalität mit den anderen Entwicklern ist, dass eine veröffentlichte Website endgültig ist. Es können keine Änderungen mehr an der Site vorgenommen werden. Wenn ich nach den Gründen gefragt habe, war die Antwort, dass sie zu gefährlich, zeitaufwändig oder schwierig ist.
Nach meiner bisherigen Erfahrung besteht das Aktualisieren einer Site lediglich darin, die geänderten Dateien hochzuladen, was normalerweise recht schnell geschieht, wenn es sich um eine kleine Änderung handelt, oder die Site während des Updates in den Wartungsmodus zu versetzen.
Wir haben kürzlich eine MVC-Site veröffentlicht, und das Unternehmen hat uns kontaktiert, um einen Teil des Textes zu aktualisieren und einen Link zu einem neuen PDF-Dokument hinzuzufügen. Der Rest meines Teams sagte schnell, dass dies nicht getan werden sollte, da die Site jetzt live ist und nicht geändert werden sollte. Gibt es etwas, das ich verpasst habe, weil ich nicht als Microsoft-Entwickler "erzogen" wurde?
Was ist das Argument gegen Änderungen an einer Live-Webanwendung in der Produktion und ist diese Denkweise einzigartig für .NET-Entwickler?
Ich würde diese Denkweise wirklich gerne verstehen und ob sie in einer Microsoft-Entwicklungsumgebung gerechtfertigt ist oder ob dies nur eine ältere Denkweise ist.
HINWEIS: Wir verwenden TFS zur Versionskontrolle und verwenden Veröffentlichungsprofile, um zu bestimmen, wo die Site bereitgestellt wird (UAT oder Produktion).
Haben Sie Projektmanager, einen Entwicklungsmanager oder eine andere Person als die anderen Entwickler?
Es macht NULL Sinn, dass Sie nach der Inbetriebnahme keine Bereitstellung mehr durchführen können.
Natürlich müssen diese Änderungen unter anderem geplant, kalkuliert und mit Ressourcen ausgestattet werden, aber nur "Nein" zu sagen, ist Unsinn.
quelle
Der Hauptgrund für das angezeigte Verhalten ist, dass diese Art von Änderungen fehleranfällig sind. Das manuelle Aktualisieren der Anwendung führt dazu, dass Dinge vergessen werden und nicht mehr synchron sind. Sie sollten weiterhin in der Lage sein, neue Releases zu erstellen (und es sollte einfach sein) , nur keine Teil-Patches.
Teilaktualisierungen wie das Ändern von CSS oder Text auf einer Live-Site können dazu führen, dass das Überspringen von Tests, Test- oder Bühnenumgebungen nicht mehr synchron ist oder sogar kein Code für die Quellcodeverwaltung festgeschrieben wird. Wenn dies eine Codeänderung ist, können Sie sogar die Live-Site ohne Wiederherstellungsplan beschädigen.
In .NET können andere Probleme auftreten, z. B. lange Ladezeiten und der Verlust von Benutzersitzungen, da Code kompiliert wird. Diese Probleme könnten dadurch verringert werden, dass ich in eine warme Umgebung wechsle und den Sitzungsstatus außerhalb des Prozesses verwende. Es sei denn, Sie möchten bei jeder Bereitstellung über diese Art von Problemen und andere anwendungsspezifische Probleme nachdenken. Dann ist das Patchen von Live-Websites eine schlechte Idee.
Wenn Ihre Anwendung größer wird und die Leute kommen und gehen, kann dies von einer Unannehmlichkeit zu einem ernsten Problem werden. Um die Sicherheit zu erhöhen, befolgen wir folgende Regeln: Um eine Live-Website zu aktualisieren, muss es sich um eine vollständige Bereitstellung handeln, die niemals nur gepatcht wird.
Wenn Sie Ihre Bereitstellungen noch nicht automatisieren (wodurch es einfach und schnell ist, die Regel zu befolgen). Neue Bereitstellungen werden normalerweise neben der vorhandenen Version durchgeführt, und Ihre Website ist nur ein Zeiger auf die gewünschte Version (Hinweis: Das Datenbankschema macht dies etwas komplexer).
In Wirklichkeit denke ich, dass alle Bereitstellungen wirklich automatisiert werden sollten, und dies schließt aus ähnlichen Gründen auch Nicht-.NET-Bereitstellungen ein. Sobald Sie mit der Automatisierung von Bereitstellungen beginnen, können Sie sicherstellen, dass diese konstant schnell und zuverlässig sind.
quelle
Ich veröffentliche regelmäßig einige ASP.NET MVC-Websites, die auf Amazon AWS, Windows Azure und privaten Webservern bereitgestellt werden, erneut und stelle keine Gründe fest, warum Ihr Team so viel daraus macht.
Sie sollten Ihre Websites jedoch so gestalten, dass Aufgaben wie das Aktualisieren von Texten und Links über die Datenbank über die Website-Administrationsoberfläche ausgeführt werden.
Mein Punkt ist, dass Änderungen an einer Live-Website zwar in Ordnung sind (dies wird als Entwicklung bezeichnet), die erneute Bereitstellung der Anwendung zum Ändern einer Textzeichenfolge jedoch wahrscheinlich auf ein schlechtes Design hinweist. Ich schlage nicht vor, dass die Neuveröffentlichung ohne Sorgfalt erfolgen könnte.
quelle