Estou tentando determinar uma maneira de distribuir atualizações de software para um aplicativo da Web hospedado / no local que pode ter atualizações semanais e / ou mensais. Não quero que os clientes que usam o produto no local tenham que se preocupar em atualizá-lo manualmente. Apenas quero que ele baixe e instale automaticamente no Google Chrome. Estou pensando em fornecer um arquivo OVF com o Ubuntu e o software instalado e configurado.
Meu primeiro pensamento sobre como distribuir software é criar seis repositórios / canais do Apt (não tenho certeza qual seria melhor neste momento) que serão acessados através do SSH usando chaves. Se um cliente não renovar sua assinatura, podemos desativar sua conta :
- Beta - Usado internamente nos dados de teste para verificar se há defeitos graves na embalagem.
- Interno - Usado internamente em dados ativos para verificar defeitos na embalagem (fase de alimentação de cães).
- Externo 1 - implantado em 1% da nossa base de usuários (selecionado aleatoriamente) para verificar defeitos.
- Externo 9 - implantado em 9% da nossa base de usuários (selecionado aleatoriamente) para verificar defeitos.
- 90 externo - implantado nos 90% restantes de usuários.
- Hospedado - implantado no ambiente hospedado.
Será necessário assinar um sinal em cada estágio para passar para o próximo repositório, caso problemas sejam relatados.
Minhas perguntas à comunidade são:
- Alguém já tentou algo assim antes?
- Alguém pode ver uma desvantagem desse tipo de procedimento?
- Existe uma maneira melhor?
fonte
Respostas:
No geral, eu amo a abordagem. Os problemas de pirataria não podem ser combatidos de qualquer maneira, seja através da distribuição tradicional ou automatizada, e você pode evitar a inconveniência de um esquema de licenciamento.
Você pode ter problemas com as seleções aleatórias. Um cliente foi escolhido para ser um dos primeiros a adotar por toda a duração do seu relacionamento comercial? Caso contrário, como pode ser realizado um downgrade do externo 1 para o externo 9?
fonte
Você já pensou em licenciamento geral e proteção de tipo residencial por telefone para o seu software?
O problema que vejo aqui (sem nenhum licenciamento) é que posso pagar por um mês, parar e continuar executando nesta versão. Claro que é velho, mas é grátis. Essa brecha será explorada por pelo menos algumas pessoas
Se você já possui licenciamento, basta ter repositórios desprotegidos simples com o software que exige a verificação da licença antes de executar
fonte
Não sei o suficiente sobre seu software e / ou a natureza de seus clientes, mas em muitos lugares as atualizações não são instaladas sem serem testadas. Muitas empresas usam uma chave de licença que atingirá o tempo limite. Permita que eles baixem a atualização e iniciem manualmente. As atualizações automáticas são convenientes, mas às vezes os usuários não gostam de surpresas.
fonte
Dê uma olhada na estrutura Sparkle para OS X, ela faz uma coisa muito semelhante ao mecanismo de atualização do Chrome, mas fornece feedback do usuário para que eles possam pular a atualização ou fazê-lo mais tarde. Os aplicativos foram atualizados comigo e alterei a funcionalidade de que eu precisava, sempre melhor pelo menos perguntar ao usuário.
Mas eu gosto da idéia do apt, faz sentido fazer dessa maneira, é simples e muito, muito bem testado neste momento.
fonte
Conheço uma empresa que está fazendo quase exatamente o que você descreveu. (Menos camadas do que você descreveu, e não sei como elas são autenticadas.)
O maior problema que eles tiveram é que alguns clientes bloqueiam o acesso à Internet a partir de seus aparelhos. Isso significa que esses clientes estão bloqueados na versão que eles instalaram. Talvez esteja tudo bem. Acho que eles discutiram a abertura de regras de firewall com alguns desses clientes. Outros acabaram de atualizar manualmente.
fonte
Se eu fosse fazer, faria com base no endereço IP. Portanto, quando eles vêm para fazer o download, seu endereço IP deve estar na lista de permissões para se conectar a esse servidor, caso contrário, eles não podem fazer o download. É péssimo se eles não tiverem IP dedicado, mas improvável do que parece, se for baseado em servidor, se for para estações de trabalho, é melhor configurá-los com o próprio servidor apt interno e depois baixar uma cópia via cron job ou algo sobre ftp e assim por diante uma vez por semana e depois as estações de trabalho baixam de lá realmente até você.
fonte
Esta é uma boa abordagem experiente.
Algumas armadilhas a serem consideradas:
Você nem sempre quer ir 1%, 9%, 90%. Seus clientes podem não ser homogêneos, o que significa que você pode querer começar a se especializar, digamos, por região, por tipo de dispositivo etc., nesse caso, uma distribuição de 1, 9, 90% globalmente não faz mais sentido.
Ter um repositório único para 90% dos usuários introduz hotspotting - esse servidor experimentará a maior parte das solicitações, o que significa que será o primeiro a morrer no caso de um aumento no tráfego, causando uma interrupção para 90% dos usuários. A redundância ajuda, é claro, mas isso gera mais despesas em geral.
Você pode ter um fluxo de trabalho em que determinados recursos estão prontos para distribuição a 90% de todos os usuários, mas uma atualização global fará com que os recursos não prontos para adoção de 90% atinjam a produção, introduzindo gargalos no fluxo de trabalho do desenvolvedor. Uma distribuição fixa não poderá lidar com esses problemas efetivamente, forçando você a lidar com isso no nível do aplicativo.
Uma maneira de corrigir isso é mantendo várias cópias dos repositórios de produção em servidores diferentes, coloque um balanceador de carga configurável na frente dele e, em seguida, atualize cuidadosamente seus repositórios de produção gradualmente. Em outras palavras, trate todos os repositórios como eventualmente desejando ser os mesmos, mas configure o tráfego para que a porcentagem de usuários que leem de um servidor seja alterável.
O benefício é que você pode configurar a distribuição de solicitações à vontade usando o seu balanceador de carga, pode escalar horizontalmente melhor (todos os servidores podem começar a servir o mesmo repositório proporcionalmente se todos os recursos estiverem prontos para adoção 100%) e, dependendo de como o seu como o fluxo de trabalho da equipe e sua necessidade de atualizações específicas da região, você pode permitir que determinados recursos estejam disponíveis imediatamente, sem se preocupar com os outros recursos.
fonte