OK, da alle die Antwort ablehnen, die ich 2008 geschrieben habe * ...
Ich werde Ihnen sagen, wie wir es jetzt im Jahr 2014 machen. Wir verwenden keine Websites mehr, da wir jetzt ASP.NET MVC verwenden.
Wir brauchen dafür sicherlich keinen Load Balancer und zwei Server. Das ist in Ordnung, wenn Sie 3 Server für jede Website haben, die Sie pflegen, aber es ist für die meisten Websites ein totaler Overkill.
Außerdem verlassen wir uns nicht auf den neuesten Assistenten von Microsoft - zu langsam, zu viel versteckte Magie und zu anfällig für Namensänderungen.
So machen wir das:
Wir haben einen Post-Build-Schritt, der generierte DLLs in einen 'bin-pub'-Ordner kopiert.
Wir verwenden Beyond Compare (was ausgezeichnet ist **), um geänderte Dateien (über FTP, da dies weitgehend unterstützt wird) bis zum Produktionsserver zu überprüfen und zu synchronisieren
Wir haben eine sichere URL auf der Website, die eine Schaltfläche enthält, die alles in 'bin-pub' nach 'bin' kopiert (zuerst ein Backup erstellen, um ein schnelles Rollback zu ermöglichen). Zu diesem Zeitpunkt startet sich die App neu. Dann prüft unser ORM, ob Tabellen oder Spalten hinzugefügt werden müssen, und erstellt sie.
Das sind nur Millisekunden Ausfallzeit. Der Neustart der App kann ein oder zwei Sekunden dauern, aber während des Neustarts werden Anforderungen gepuffert, sodass praktisch keine Ausfallzeiten auftreten.
Der gesamte Bereitstellungsprozess dauert zwischen 5 Sekunden und 30 Minuten, je nachdem, wie viele Dateien geändert und wie viele Änderungen überprüft werden müssen.
Auf diese Weise müssen Sie nicht eine gesamte Website in ein anderes Verzeichnis kopieren, sondern nur den Ordner bin. Sie haben auch die vollständige Kontrolle über den Prozess und wissen genau, was sich ändert.
** Wir werfen immer einen kurzen Blick auf die Änderungen, die wir bereitstellen - als Last-Minute-Überprüfung, damit wir wissen, was zu testen ist, und wenn etwas kaputt geht, sind wir bereit. Wir verwenden Beyond Compare, weil Sie damit problemlos Dateien über FTP unterscheiden können. Ich würde das niemals ohne BC tun, Sie haben keine Ahnung, was Sie überschreiben.
* Scrollen Sie nach unten, um es zu sehen :( Übrigens würde ich Websites nicht mehr empfehlen, da sie langsamer zu erstellen sind und mit halb kompilierten temporären Dateien schwer abstürzen können. Wir haben sie in der Vergangenheit verwendet, weil sie Datei für Datei agiler waren Bereitstellung. Sehr schnell, um ein kleines Problem zu beheben, und Sie können genau sehen, was Sie bereitstellen (wenn Sie natürlich Beyond Compare verwenden - ansonsten vergessen Sie es).