Verwenden eines Apt-Repositorys für kostenpflichtige Software-Updates

9

Ich versuche herauszufinden, wie Software-Updates für eine gehostete / vor Ort befindliche Webanwendung verteilt werden können, die möglicherweise wöchentliche und / oder monatliche Updates enthält. Ich möchte nicht, dass Kunden, die das Produkt vor Ort verwenden, sich Gedanken über die manuelle Aktualisierung machen müssen. Ich möchte nur, dass es automatisch über Google Chrome heruntergeladen und installiert wird. Ich plane, eine OVF-Datei mit Ubuntu und der installierten und konfigurierten Software bereitzustellen.

Mein erster Gedanke bei der Verteilung von Software ist die Erstellung von sechs Apt-Repositorys / -Kanälen (nicht sicher, welche zu diesem Zeitpunkt besser wären), auf die über SSH mit Schlüsseln zugegriffen werden kann. Wenn ein Kunde sein Abonnement nicht verlängert, können wir sein Konto deaktivieren ::

  1. Beta - Wird intern für Testdaten verwendet, um das Paket auf schwerwiegende Fehler zu überprüfen.
  2. Intern - Wird intern für Live-Daten verwendet, um die Verpackung auf Fehler zu überprüfen (Hundefutterphase).
  3. Extern 1 - Wird bei 1% unserer Benutzerbasis (zufällig ausgewählt) bereitgestellt, um nach Fehlern zu suchen.
  4. Extern 9 - Wird bei 9% unserer Benutzerbasis (zufällig ausgewählt) bereitgestellt, um nach Fehlern zu suchen.
  5. Externe 90 - Wird für die verbleibenden 90% der Benutzer bereitgestellt.
  6. Gehostet - Wird in der gehosteten Umgebung bereitgestellt.

In jeder Phase ist eine Abmeldung erforderlich, um in das nächste Repository zu wechseln, falls Probleme gemeldet werden.

Meine Fragen an die Community sind:

  1. Hat jemand so etwas schon einmal versucht?
  2. Kann jemand einen Nachteil dieser Art von Verfahren sehen?
  3. Gibt es einen besseren Weg?
Scott Keck-Warren
quelle
3
Nur neugierig, aber was hindert jemanden daran, das Update aus Ihrem Repository herunterzuladen und es dann über P2P-Netzwerke erneut zu veröffentlichen? Ich möchte auch darauf hinweisen, dass Sie Apt-Pinning zu Ihrer eigenen Sicherheit erwähnen möchten, wenn Ihre Kunden Ihre Repositorys zu ihrer Datei sources.list hinzufügen sollen. Andernfalls könnte jemand eine böswillige Bibliothek in Ihr Repo einfügen und Ihre Kunden würden automatisch darauf aktualisieren.
Jeff Welling

Antworten:

1

Insgesamt liebe ich den Ansatz. Piraterieprobleme können ohnehin nicht behoben werden, sei es über die herkömmliche Verteilung oder automatisiert, und Sie können die Unannehmlichkeiten eines Lizenzierungsschemas vermeiden.

Möglicherweise treten Probleme mit der zufälligen Auswahl auf. Wird ein Kunde für die gesamte Dauer Ihrer Geschäftsbeziehung als Early Adopter ausgewählt? Wenn nicht, wie kann ein Downgrade von extern 1 auf extern 9 durchgeführt werden?

Thiton
quelle
Mein Plan war es, jeden Monat eine zufällige Auswahl zu treffen, und wenn Sie eine Periode in der externen Gruppe 1 waren, waren Sie für mehrere Perioden außer in der Gruppe.
Scott Keck-Warren
Dies könnte zu Problemen führen, da es ziemlich unvorhersehbar ist, welcher Benutzer welches Upgrade hat und wer Hotfixing benötigt. Angenommen, Sie haben einen Fehler in External 1 und ein Benutzer ist gerade aus External 1 ausgestiegen. Sie müssen den Hotfix bis zu External 90 verschieben. Vielleicht können Sie einfach die Kunden fragen, die ein Early Adopter werden möchten.
Thiton
0

Haben Sie über die allgemeine Lizenzierung und den Schutz des Telefontyps für Ihre Software nachgedacht?

Das Problem, das ich hier sehe (ohne Lizenzierung), ist, dass ich einen Monat lang bezahlen, aufhören und dann einfach weiter mit dieser Version arbeiten kann. Sicher ist es alt, aber es ist kostenlos. Diese Lücke wird zumindest von einigen Menschen ausgenutzt

Wenn Sie bereits über eine Lizenz verfügen, verfügen Sie nur über einfache ungeschützte Repositorys mit der Software, bei der die Lizenz vor der Ausführung überprüft werden muss

TheLQ
quelle
2
Danke für die Rückmeldung. Um die Schmerzen zu verringern, die Menschen dazu bringen, dies zu nutzen, ist es mein Plan, die Software 30 Tage lang im Vollfunktionsmodus laufen zu lassen und dann vom Kunden Updates und Support im Wert von mindestens einem Jahr zu erwerben, um sie aus einem "verkrüppelten" Zustand herauszuholen "Modus. Wenn sie nach dieser Zeit nicht mehr für das Produkt bezahlen, können sie es und erhalten einfach keine Updates oder unseren großartigen technischen Support. :-)
Scott Keck-Warren
@TheLQ: Ich sehe das nicht als Problem: Zugriff auf die Repositorys ist sowieso das, wofür Sie bezahlen. Wenn Sie nicht mehr zahlen, erhalten Sie keine Updates, die Sicherheitsprobleme und Fehler beheben oder Funktionen hinzufügen. Das scheint mir ein völlig vernünftiges Geschäftsmodell zu sein.
Greyfade
0

Ich weiß nicht genug über Ihre Software und / oder die Art Ihrer Kunden, aber an vielen Stellen werden Updates nicht installiert, ohne getestet zu werden. Viele Unternehmen verwenden einen Lizenzschlüssel, der eine Zeitüberschreitung verursacht. Lassen Sie sie das Update herunterladen und manuell starten. Automatische Updates sind praktisch, aber manchmal mögen Benutzer keine Überraschungen.

JeffO
quelle
0

Schauen Sie sich das Sparkle-Framework für OS X an. Es ähnelt stark dem Chrome-Update-Mechanismus, bietet jedoch Benutzer-Feedback, damit sie das Update überspringen oder später ausführen können. Ich habe Anwendungen auf mich aktualisieren lassen und die Funktionen, die ich benötigte, so ändern, wie sie waren. Es ist immer am besten, zumindest den Benutzer zu fragen.

Ich mag die passende Idee, macht Sinn, es so zu machen, es ist einfach und an diesem Punkt wirklich, wirklich gut getestet.

Nicholas Smith
quelle
0

Ich kenne eine Firma, die fast genau das tut, was Sie beschrieben haben. (Weniger Ebenen als Sie beschrieben haben, und ich weiß nicht, wie sie sich authentifizieren.)

Das größte Problem war, dass einige Kunden den Internetzugang von ihrem Gerät aus blockieren. Das bedeutet, dass diese Kunden nur an die Version gebunden sind, die sie installiert haben. Vielleicht ist das in Ordnung. Ich denke, sie haben mit einigen dieser Kunden über das Öffnen von Firewall-Regeln gesprochen. Andere haben nur manuell aktualisiert.

Sean McMillan
quelle
0

Wenn ich es tun würde, würde ich es basierend auf der IP-Adresse tun. Wenn sie zum Herunterladen kommen, muss ihre IP-Adresse auf der Liste der zulässigen Verbindungen stehen, um eine Verbindung zu diesem Server herzustellen. Andernfalls können sie nicht herunterladen. Es ist zum Kotzen, wenn sie keine dedizierte IP-Adresse haben, aber es ist unwahrscheinlich, dass Sie davon sprechen, wenn es sich um einen Server handelt, wenn es sich um einen Arbeitsplatz handelt. Dann ist es möglicherweise besser, sie mit dem eigenen geeigneten Server im eigenen Haus einzurichten und dann herunterzuladen Eine Kopie über Cron Job oder etwas über FTP und so weiter einmal pro Woche und dann dort Workstations herunterladen von dort wirklich bis zu Ihnen.

WojonsTech
quelle
0

Dies ist ein guter, erfahrener Ansatz.

Einige zu berücksichtigende Fallstricke:

  • Möglicherweise möchten Sie nicht immer 1 Prozent, 9 Prozent, 90 Prozent gehen. Ihre Kunden sind möglicherweise nicht homogen, was bedeutet, dass Sie sich beispielsweise nach Region, Gerätetyp usw. spezialisieren möchten. In diesem Fall ist eine Verteilung um 1, 9, 90 Prozent weltweit nicht mehr sinnvoll.

  • Wenn Sie ein einziges Repository für 90 Prozent Ihrer Benutzer haben, wird Hotspotting eingeführt. Auf diesem Server werden die meisten Anfragen ausgeführt. Dies bedeutet, dass er als erster im Falle eines Verkehrsanstiegs stirbt und 90 Prozent Ihrer Benutzer ausfällt . Redundanz hilft natürlich, aber das verursacht insgesamt mehr Kosten.

  • Möglicherweise haben Sie einen Workflow, in dem bestimmte Funktionen für die Verteilung an 90 Prozent aller Benutzer bereit sind. Ein globales Update führt jedoch dazu, dass Funktionen, die nicht zu 90 Prozent übernommen werden können, die Produktion beeinträchtigen und Engpässe in Ihrem Entwicklungsworkflow verursachen. Eine feste Distribution kann diese Probleme nicht effektiv behandeln, sodass Sie gezwungen sind, dies auf Anwendungsebene zu behandeln.

Eine Möglichkeit, dies zu korrigieren, besteht darin, mehrere Kopien von Produktionsrepos auf verschiedenen Servern zu speichern, einen konfigurierbaren Load Balancer davor zu platzieren und Ihre Produktionsrepos dann schrittweise schrittweise fortlaufend zu aktualisieren. Mit anderen Worten, behandeln Sie alle Repos so, als ob sie letztendlich gleich sein möchten, aber konfigurieren Sie den Datenverkehr so, dass der Prozentsatz der Benutzer, die von einem Server lesen, geändert werden kann.

Der Vorteil besteht darin, dass Sie die Verteilung von Anforderungen mithilfe Ihres Load Balancers nach Belieben konfigurieren und horizontal besser skalieren können (alle Ihre Server können proportional dasselbe Repo bereitstellen, wenn alle Funktionen zu 100 Prozent übernommen werden können) Aufgrund des Workflows des Teams und Ihres Bedarfs an regionenspezifischen Updates können Sie möglicherweise zulassen, dass bestimmte Funktionen sofort verfügbar sind, ohne sich um die anderen Funktionen kümmern zu müssen.

Akshat Mahajan
quelle