Estratégia para lançamentos de tempo de inatividade zero: e o DB?

3

Temos um aplicativo da web asp.net/MVC2 hospedado no Amazon IIS7, no qual eu gostaria de implantar atualizações com o menor tempo de inatividade possível.

Desenvolvendo a configuração do IIS ARR 3-site conforme descrito aqui Carregamentos de inatividade zero / Reversão em IIS Eu gostaria de encontrar uma maneira de implantar as atualizações do meu banco de dados (MySQL no Amazon RDS) de uma maneira que minimize ou elimine o tempo de inatividade.

Alguém está fazendo algo assim? O aplicativo deve ser implantado em um banco de dados da versão correta do esquema e temos um sistema que gerencia essas alterações durante um lançamento.

Posso imaginar o uso da ARR para drenar o site ativo e abrir o site recém-provisionado enquanto executamos as migrações de banco de dados e o processamento de solicitações da Web para o novo aplicativo até que as alterações do banco de dados sejam feitas, mas parece muito difícil coordene a sincronização e seja ainda mais difícil de testar, sem mencionar a questão dos tempos limite do cliente, se o processo demorar mais do que o navegador deseja esperar.

Obrigado!

    
por Aaron Bridges 13.10.2010 / 00:56

1 resposta

1

Ninguém tem uma ótima resposta para isso. Você precisa fazer alterações de esquema compatíveis com versões anteriores, por mais difícil que seja.

Normalmente, isso significa que seu aplicativo não pode depender apenas de uma versão do esquema, mas precisa ser capaz de suportar vários esquemas durante a transição. (Suas transações devem atualizar os dois esquemas, etc.)

Observe que mesmo os armazenamentos de dados sem esquema NoSQL não resolvem esse problema, mas exigem que você o resolva da mesma maneira: se você tiver uma chave com N valores e precisar adicionar um novo valor, seu aplicativo precisa lidar com a possibilidade de a chave ainda não ser atualizada.

Boa sorte!

    
por 31.01.2011 / 22:25