Hallo! Ich bin Admin bei https://discuss.pixls.us, einer Community für Fotografen, die Freie Software nutzen. Wir haben das Glück, dass unsere Kosten durch Spenden der Community gedeckt werden, aber ich bin mir nicht sicher, wie lange das nachhaltig sein wird, wenn wir weiter wachsen. Ich nehme die Aufgabe, mit den Spenden der Leute sorgfältig umzugehen, sehr ernst und habe versucht, nach Wegen zu suchen, unsere Kosten zu senken.
Da wir Bildschöpfer sind, ist unser Forum extrem bildlastig. Mit Abstand unsere größte Kostenstelle sind die Bandbreitenkosten für Amazon S3 (fast ausschließlich Egress-Bandbreite). Die S3-Speicherkosten sind hingegen sehr gering.
Es wäre von Vorteil, wenn diese Bilder und anderen Medien über WebTorrent geladen werden könnten, ähnlich wie bei PeerTube.
Ich stelle mir diese Funktion in zwei Teilen vor: (1) Besucher der Seite laden Medien von anderen Nutzern über WebTorrent herunter und (2) es gibt eine Art RSS-Feed, den ich in einem Torrent-Client abonnieren kann, damit Nutzer als „Super-Seeder
Sie sollten unbedingt ein CDN, zumindest den kostenlosen Cloudflare-Plan, vor die S3-Uploads schalten, damit Sie nicht in den Egress-Gebühren ertrinken. Falls möglich, aktivieren Sie Origin Shield, um noch weniger Egress-Datenverkehr zu erzeugen.
Ich habe buchstäblich nur auf @Falco gewartet (), da er hervorragende Arbeit geleistet hat, S3 auf Discourse-Standards zu bringen.
Ich würde zu einer günstigeren S3-Klon-Option wechseln. Digital Ocean Spaces wäre nach S3 die Standardwahl, wenn du eine Menge Daten hast. Vielleicht lohnt es sich, zu größeren, auf Speicher spezialisierten Anbietern wie BlackBlaze oder Wasabi zu wechseln, um die Kosten noch weiter zu senken.
Dadurch entfallen die meisten Bandbreitenkosten, da diese dort deutlich günstiger berechnet werden (Wasabi berechnet sie gar nicht).
Außerdem würde ich aus Leistungsgründen ein CDN hinzufügen. Ich habe gerade nach einem günstigen CDN gesucht, da meine Community über AdSense kaum profitabel ist, und festgestellt, dass BunnyCDN zwar nicht das schnellste ist, aber den Job erledigt und schnell eingerichtet werden kann.
Mit diesem Setup würdest du die Abrechnung erheblich reduzieren. Entweder einfach das CDN vor AWS S3 schalten oder einen anderen S3-Anbieter plus CDN verwenden.
Ich glaube, @paperdigits hat die genaue Menge des monatlichen ausgehenden Datenverkehrs auf der AWS-Rechnung, sodass wir diese zur Berechnung der CDN-Kosten verwenden können.
Ich würde zunächst bei S3 bleiben und einfach ein CDN hinzufügen.
Ich bin mir fast sicher, dass es dich mehr kosten würde als alles andere. Du müsstest ein P2P-Netzwerk einrichten, bei dem der Discourse-Server (oder ein Seedbox) als Quelle der Wahrheit oder Haupt-Seeder für alle Medien dient.
Diese Seedbox müsste über genügend Ressourcen verfügen, um eine neue Verbindung für jede Anfrage zu bewältigen, da jede Mediendatei eine separate Torrent-Datei wäre. Ich weiß, dass WebRTC ziemlich gut und effizient ist, aber das Öffnen einer Verbindung ist normalerweise der ressourcenintensivste Teil einer Webanwendung.
Es sei denn, ich übersehe etwas, wäre dies eine nicht triviale Einrichtung und für wirklich aktive Communities sehr ressourcenintensiv.
Die Torrents haben eine Datei-Seed-Funktion. Wenn die Datei nicht im Swarm verfügbar ist, wird sie aus einer anderen Quelle geladen, z. B. S3.
Die Discourse-Anwendung stellt nur den Torrent- oder Magnet-Link bereit und seedet nicht. Benutzer, die Bilder bereits geladen haben, seeden diese zusätzlich. Wenn die Medienassets auch von traditionellen BitTorrent-Clients geseeded werden, können diese ebenfalls genutzt werden. Der Torrent-Client läuft im Browser bzw. auf der Client-Seite, sodass die Last auf dem Server nur darin besteht, mehr JavaScript auszuliefern.
Würden Sie den Nutzern einen Haftungsausschluss anbieten? Zum Beispiel: Wenn ich über mein Handy mit einem getakteten Internetanschluss auf Ihre Seite zugreife, wie kann ich verhindern, dass mein begrenztes Datenvolumen durch einen viralen Beitrag vollständig aufgebraucht wird?
Sie verwenden weiterhin S3 als Hauptquelle zum Laden der Dateien, was Ihnen nicht wirklich viel Geld sparen würde.
Sie benötigen dennoch Seeder, die die Verbindungen bereitstellen. Aufgrund unterschiedlicher Internetgeschwindigkeiten sind unzuverlässige Seeder unvermeidbar.
Klar, Sie können einfach einen Umschalter in einem Dialogfeld einfügen, dies in die Einstellungen integrieren oder Tools wie Privacy Badger verwenden, um zu verhindern, dass die Bibliothek überhaupt geladen wird. Alternativ können Sie auch erkennen, ob der Browser mobil ist, und die Funktion komplett deaktivieren. Es gibt mehrere Möglichkeiten.
Es funktioniert gewissermaßen wie ein Cache. Wenn die Medien nicht geseedet werden, wird auf die Webquelle (in unserem Fall S3) zurückgegriffen. Da WebTorrent jedoch auch von traditionellen Torrent-Clients wie Transmission, rTorrent usw. Daten beziehen kann, können wir einige Seedern (wie mich selbst) haben, die eine ganze Menge Daten über meine heimische Internetverbindung bereitstellen. Man braucht tatsächlich nur eine Handvoll Seedern, um dies praktikabel zu machen.
Stimmt, aber wir würden dieses Problem als Gemeinschaft lösen.
Jetzt ist es nicht unmöglich, du hast die Funktion nur auf ein Niveau gebracht, das fast keine andere Funktion hat. Wie das Discourse-Team die Unterstützung für IE11 einfach fallen gelassen hat, weil die Wartung des Codes zu viel Kopfzerbrechen verursachte. Stell dir eine solche Logik vor – vielleicht würde jemand darauf stehen, wenn man zu Marketplace geht.
Ich sehe keinen echten Vorteil darin, dass dies im Kern enthalten ist, und ich habe bereits viele Dinge angefragt, die viel einfacher umzusetzen sind und in den Kern aufgenommen werden sollten.
Die zu Recht abgelehnt wurden, mit einer klaren und logischen Erklärung (keine Beschwerde hier).
Ich persönlich würde es weder nutzen noch irgendein Interesse daran haben, es zum Laufen zu bringen. Es ist einfacher, zuverlässiger und günstiger, eine CDN-Lösung davorzuschalten und es dann einfach zu vergessen.