Implantando uma nova versão de um aplicativo no aplicativo IIS sem tempo de inatividade

Implantando uma nova versão de um aplicativo no aplicativo IIS sem tempo de inatividade

Eu tenho um pequeno aplicativo da web AngularJS que roda em quiosques em uma rede intranet. Fui incumbido de fazer implantações sem tempo de inatividade e de forma automatizada que possa ser controlada remotamente com uma interface web. Por ser um aplicativo pequeno, não temos balanceadores de carga ou configurações semelhantes. Eu olhei para duas opções,

Opção 1: Baixe versões do aplicativo em uma pasta e altere o caminho físico do diretório virtual para o caminho da pasta de uma nova versão. Isso é possível usando a biblioteca Microsoft.Web.Administration com o seguinte código,

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

Nesta abordagem,

  1. Com que rapidez a mudança será refletida?
  2. Quais são as chances de alguns quiosques ainda funcionarem com a versão mais antiga do aplicativo?
  3. Existe alguma chance de um tempo de inatividade entre o curto período de tempo em que a troca é feita?
  4. Alguma solicitação feita ao IIS neste período retornará erros?

Opção 2:Usando o recurso de reescrita de URL do IIS. Basicamente, adicionarei programaticamente novas regras de reescrita ao web.config do aplicativo para redirecionar para uma subpasta diferente, que será a versão mais recente do aplicativo.

Nesta abordagem,

  1. Com que rapidez a regra de reescrita de URL será refletida e a reescrita começará?
  2. Quais são as chances de alguns quiosques ainda funcionarem com a versão mais antiga do aplicativo
  3. Existe alguma chance de tempo de inatividade entre o período em que a regra de reescrita é adicionada ao web.config?
  4. Alguma solicitação feita ao IIS neste período retornará erros?
  5. Haverá algum custo de desempenho para a reescrita do URL?

Por favor, me ajude. Ambas as abordagens não são adequadas para minha tarefa? Existem outras alternativas a este requisito?

Responder1

O MSDeploy deve ser capaz de lidar com a parte de implantação automatizada e remota. Se você não tiver outro servidor ou outra maneira de enviar tráfego de aplicativos para um diretório virtual diferente de maneira automatizada, nenhum tempo de inatividade não será uma solicitação prática. É como dizer que tenho um carro, mas quero poder continuar dirigindo enquanto ele estiver na oficina. Se você quiser que um carro dirija enquanto estiver na oficina, você precisará de outro carro, temporário ou não.

informação relacionada