Usando um Repositório Apt para Atualizações de Software Pagas


9

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 :

  1. Beta - Usado internamente nos dados de teste para verificar se há defeitos graves na embalagem.
  2. Interno - Usado internamente em dados ativos para verificar defeitos na embalagem (fase de alimentação de cães).
  3. Externo 1 - implantado em 1% da nossa base de usuários (selecionado aleatoriamente) para verificar defeitos.
  4. Externo 9 - implantado em 9% da nossa base de usuários (selecionado aleatoriamente) para verificar defeitos.
  5. 90 externo - implantado nos 90% restantes de usuários.
  6. 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:

  1. Alguém já tentou algo assim antes?
  2. Alguém pode ver uma desvantagem desse tipo de procedimento?
  3. Existe uma maneira melhor?

3
Apenas curioso, mas o que impede alguém de baixar a atualização do seu repositório e depois a republicá-la através de redes P2P? Eu também observaria que, se você quiser que seus clientes adicionem seus repositórios ao arquivo sources.list, convém mencionar o Apt-Pinning para sua própria segurança. Caso contrário, alguém poderá inserir uma libc maliciosa no seu repositório e seus clientes serão atualizados automaticamente.
Jeff Welling

Respostas:


1

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?


Meu plano era fazer uma seleção aleatória a cada mês, aproximadamente, e se você estivesse no período de um grupo externo em um período, estava fora do grupo por vários períodos.
Scott Keck-Warren

Você pode ter problemas com isso, já que é praticamente imprevisível qual usuário possui qual atualização e quem precisa ser corrigido. Digamos que você tenha um bug no externo 1 e que o usuário tenha abandonado o externo 1, é necessário enviar o hotfix até o externo 90. Talvez você possa perguntar aos clientes que gostariam de ser os primeiros a adotar?
thiton

0

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


2
Obrigado pelo feedback. Para reduzir a dor de levar as pessoas a usar isso, meu plano é que o software funcione no modo de recurso completo por 30 dias e exija que o cliente compre pelo menos um ano em atualizações e suporte para tirá-lo de um "aleijado" "modo. Se eles optarem por parar de pagar pelo produto após esse período, poderão e simplesmente não receberão as atualizações ou o nosso incrível suporte técnico. :-)
Scott Keck-Warren

@ TheLQ: Não vejo isso como um problema: ter acesso aos repositórios é o que você está pagando de qualquer maneira. Se você parar de pagar, não recebe atualizações que corrigem problemas e bugs de segurança ou adicionam recursos. Parece-me um modelo de negócios perfeitamente sadio.
28611 greyfade

0

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.


0

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.


0

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.


0

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ê.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.