Está bien, ya que todos están votando la respuesta que escribí en 2008 * ...
Le diré cómo lo hacemos ahora en 2014. Ya no usamos sitios web porque estamos usando ASP.NET MVC ahora.
Ciertamente no necesitamos un equilibrador de carga y dos servidores para hacerlo, está bien si tiene 3 servidores para cada sitio web que mantiene, pero es una exageración total para la mayoría de los sitios web.
Además, no confiamos en el último asistente de Microsoft: demasiado lento, demasiada magia oculta y demasiado propenso a cambiar su nombre.
Así es como lo hacemos:
Tenemos un paso posterior a la compilación que copia las DLL generadas en una carpeta 'bin-pub'.
Utilizamos Beyond Compare (que es excelente **) para verificar y sincronizar archivos modificados (a través de FTP porque eso es ampliamente compatible) hasta el servidor de producción
Tenemos una URL segura en el sitio web que contiene un botón que copia todo en 'bin-pub' a 'bin' (tomar una copia de seguridad primero para permitir una reversión rápida). En este punto, la aplicación se reinicia sola. Luego, nuestro ORM verifica si hay tablas o columnas que deben agregarse y las crea.
Eso es solo un tiempo de inactividad de milisegundos. El reinicio de la aplicación puede tomar uno o dos segundos, pero durante el reinicio, las solicitudes se almacenan temporalmente, por lo que efectivamente no hay tiempo de inactividad.
Todo el proceso de implementación demora entre 5 segundos y 30 minutos, dependiendo de cuántos archivos se cambien y cuántos cambios se revisen.
De esta manera, no tiene que copiar un sitio web completo a un directorio diferente, sino solo la carpeta bin. También tiene control completo sobre el proceso y sabe exactamente qué está cambiando.
** Siempre hacemos un vistazo rápido de los cambios que estamos implementando, como una verificación doble de último minuto, para saber qué probar y si algo se rompe, estamos listos. Usamos Beyond Compare porque te permite diferenciar fácilmente archivos a través de FTP. Nunca haría esto sin BC, no tienes idea de lo que estás sobrescribiendo.
* Desplácese hacia abajo para verlo: (Por cierto, ya no recomendaría sitios web porque son más lentos de construir y pueden fallar con archivos temporales a medio compilar. Los usamos en el pasado porque permitieron un archivo más ágil por archivo despliegue. Muy rápido para solucionar un problema menor y puedes ver exactamente lo que estás implementando (si usas Beyond Compare, por supuesto, de lo contrario olvídalo).