Liberação de software atrasada usando dados de atualização pré-buscados?

2

No momento, estou especificando os requisitos de software para um novo projeto que estará em locais com conexões de rede intermitentes.

Como alguns de nossos locais terão conexões de rede intermitentes. Teremos (quase?) Todas as versões de software planejadas com antecedência.

É possível fazer com que os dados de atualização necessários sejam baixados antes do lançamento real, com a liberação ocorrendo no horário, mesmo que o servidor não tenha uma conexão de rede.

Atualmente usamos o Capistrano para lançamentos de nossos principais projetos, então eu gostaria de continuar usando-o, se for possível em Capistrano.

    
por scragar 02.05.2014 / 16:42

2 respostas

1

Eu aprendi hoje sobre um plugin do Capistrano chamado delayed_job , isso permite que as pessoas executem tarefas no momento que você escolher.

Precisamos interromper o processo de lançamento para que isso funcione, e há uma pequena medida de script para contornar o processo para que ele tente novamente automaticamente, mas no momento parece que poderemos usar isso para que o cliente conclua automaticamente o lançamento sozinho à noite sem ter uma conexão de rede.

Vou editá-lo e atualizá-lo assim que implementar a solução e fornecer um exemplo de código para demonstrar o que fiz.

Até lá, vou manter a questão em aberto para que eu possa ver se alguém tem alguma solução melhor.

    
por 09.05.2014 / 19:32
1

Liberar software simultaneamente para muitos usuários é arriscado. O que você faz, se algo der errado? Uma implementação gradual permite detectar problemas mais rapidamente e você terá menos trabalho a fazer para recuperar-se de contratempos. Não ter conectividade de rede confiável para os hosts que executam esse software agrava o risco.

Pode haver problemas de compatibilidade entre diferentes versões. Tais problemas de compatibilidade são mais bem tratados garantindo que cada versão seja compatível com seu antecessor imediato (mas não necessariamente mais atrás). Quando vários componentes estão envolvidos, a solicitação de atualizações de componentes também pode ser relevante.

Mas, depois de ter decidido que uma nova versão está pronta para uso, por que não implantá-la imediatamente, em vez de esperar por um período especificado no futuro? Normalmente, a principal razão para esperar seria garantir que você está pronto para lidar com qualquer problema que possa aparecer. Mas se esse é o propósito, ter uma versão automatizada acontecendo enquanto o dispositivo não tem conectividade de rede, pode ser uma liberação acontecendo no pior momento possível.

Entre a hora em que você agendar o lançamento e a hora em que isso realmente acontece, as coisas podem acontecer. Você pode encontrar um bug, isso significaria que você gostaria de cancelar o lançamento. Você também pode descobrir que as pessoas que devem estar prontas para fornecer suporte não estarão disponíveis no horário planejado e você precisará adiar o lançamento. Nesses casos, a falta de conexão de rede pode impedi-lo de interromper um lançamento, mas isso não deve acontecer depois de tudo.

    
por 13.05.2014 / 00:33