Implementación de una nueva versión de una aplicación en la aplicación IIS sin tiempo de inactividad

Implementación de una nueva versión de una aplicación en la aplicación IIS sin tiempo de inactividad

Tengo una pequeña aplicación web AngularJS que se ejecuta en quioscos en una red de intranet. Se me ha encomendado la tarea de realizar implementaciones sin tiempo de inactividad y de forma automatizada que pueda controlarse de forma remota con una interfaz web. Como es una aplicación pequeña, no tenemos balanceadores de carga ni configuraciones similares. He mirado dos opciones,

Opción 1: Descargue versiones de la aplicación en una carpeta y cambie la ruta física del directorio virtual a la ruta de la carpeta de una nueva versión; esto se puede lograr usando la biblioteca Microsoft.Web.Administration con el siguiente código:

            ServerManager sm = new ServerManager();
            Site site = sm.Sites["Default Web Site"];            
            site.Applications[virtualDirectory].VirtualDirectories["/"].PhysicalPath = newPath;
            sm.CommitChanges();

En este enfoque,

  1. ¿Qué tan rápido se reflejará el cambio?
  2. ¿Cuáles son las posibilidades de que algunos de los quioscos sigan funcionando con la versión anterior de la aplicación?
  3. ¿Existe alguna posibilidad de que se produzca un tiempo de inactividad entre el corto período de tiempo que se realiza el cambio?
  4. ¿Alguna solicitud realizada a IIS en este período devolverá errores?

Opcion 2:Usando la función de reescritura de URL de IIS. Básicamente, agregaré mediante programación nuevas reglas de reescritura al web.config de la aplicación para redirigir a una subcarpeta diferente que será la versión más nueva de la aplicación.

En este enfoque,

  1. ¿Con qué rapidez se reflejará la regla de reescritura de URL y comenzará la reescritura?
  2. ¿Cuáles son las posibilidades de que algunos de los quioscos sigan funcionando con la versión anterior de la aplicación?
  3. ¿Existe alguna posibilidad de que se produzca un tiempo de inactividad entre el período de tiempo en el que se agrega la regla de reescritura a web.config?
  4. ¿Alguna solicitud realizada a IIS en este período devolverá errores?
  5. ¿Habrá algún costo de rendimiento por la reescritura de la URL?

Por favor ayúdame. ¿Ambos enfoques no son adecuados para mi tarea? ¿Existen otras alternativas a este requisito?

Respuesta1

MSDeploy debería poder manejar la parte de implementación remota y automatizada. Si no tiene otro servidor u otra forma de enviar el tráfico de la aplicación a un directorio virtual diferente de forma automatizada, no tener tiempo de inactividad no es una solicitud práctica. Es como decir que tengo 1 coche, pero quiero poder seguir conduciéndolo mientras esté en el taller. Si desea conducir un automóvil mientras su automóvil está en el taller, necesitará otro automóvil, temporal o no.

información relacionada