Salut ! Je suis administrateur sur https://discuss.pixls.us, une communauté de photographes utilisant des logiciels libres. Nous avons la chance de voir nos coûts couverts par des dons de la communauté, mais je ne sais pas combien de temps cela restera viable alors que nous continuons de grandir. Je prends également très au sérieux la responsabilité de gérer les dons des utilisateurs et j’essaie de trouver des moyens de réduire nos dépenses.
Étant donné que nous sommes des créateurs d’images, notre forum est extrêmement lourd en images. De loin, notre plus grande dépense concerne la bande passante Amazon S3 (presque entièrement la bande passante de sortie). Nos coûts de stockage S3 sont très minimes.
Il serait avantageux de pouvoir charger ces images et autres médias via webtorrent, à la manière de PeerTube.
Je vois cette fonctionnalité sous deux aspects : (1) les utilisateurs qui visitent le site téléchargent des médias d’autres utilisateurs via webtorrent, et (2) une sorte de flux RSS auquel je peux m’abonner dans un client torrent afin que les utilisateurs puissent devenir des « super seeders » et fournir simplement de la bande passante au site.
Vous devriez vraiment mettre en place un CDN, même s’il s’agit simplement du plan gratuit de Cloudflare, pour servir de front aux uploads S3 afin d’éviter de vous noyer sous les frais de sortie. Si possible, activez Origin Shield pour réduire encore le trafic de sortie.
J’ai littéralement attendu que @Falco réponde (), car il a fait un excellent travail pour mettre S3 aux normes de Discourse.
Je me tournerais vers une option de clone S3 moins chère. Les espaces Digital Ocean seraient le choix par défaut après S3 si vous avez beaucoup de données. Vous pourriez aussi envisager des acteurs spécialisés dans le stockage comme BlackBlaze ou Wasabi pour réduire encore plus les coûts.
En faisant cela, vous éliminerez la majeure partie des coûts de bande passante, car ils sont bien moins chers (Wasabi ne facture pas la bande passante).
En outre, pour améliorer les performances, je recommanderais d’ajouter un CDN. J’ai récemment cherché un CDN abordable, car ma communauté est à peine rentable via AdSense, et j’ai découvert que BunnyCDN n’est pas le plus rapide, mais il fait le travail et est rapide à mettre en place.
Avec cette configuration, vous réduirez considérablement la facture. Soit en plaçant simplement le CDN devant AWS S3, soit en utilisant un autre fournisseur S3 + CDN.
Je pense que @paperdigits dispose du montant exact du trafic de sortie mensuel sur la facture AWS, nous pouvons donc l’utiliser pour calculer le coût du CDN.
Je resterais sur S3 et ajouterai simplement un CDN dans un premier temps.
Je suis presque certain que cela vous coûterait plus cher que n’importe quoi. Vous devriez configurer un réseau P2P en utilisant le serveur Discourse (ou un seedbox) comme source de vérité ou principal seed pour tous les médias.
Ce seedbox devrait disposer de ressources suffisantes pour gérer une nouvelle connexion ouverte par chaque requête, car chaque fichier média serait un fichier torrent différent. Je sais que WebRTC est très performant et efficace, mais l’ouverture d’une connexion est généralement la partie la plus gourmande en ressources d’une application web.
Sauf si je passe à côté de quelque chose, cette configuration serait non triviale et très exigeante en ressources pour des communautés réellement actives.
Les torrents disposent d’un fichier de semence, donc si le fichier n’est pas disponible dans le swarm, il est chargé depuis une autre source, par exemple S3.
L’application Discourse ne fournit que le lien torrent/magnétique et ne fait pas de semence. Les utilisateurs qui ont déjà chargé des images les partagent, et de plus, si les actifs multimédias sont également partagés par des clients BitTorrent traditionnels, ceux-ci peuvent être utilisés. Le client torrent fonctionne côté navigateur/client, de sorte que la charge sur le serveur se limite à fournir davantage de JavaScript.
Ajouteriez-vous un avertissement pour les utilisateurs ? Par exemple, si j’accède à votre page depuis mon téléphone mobile avec une connexion forfaitaire, comment puis-je éviter que ma connexion limitée ne consomme toute ma bande passante parce que le message devient viral ?
Vous continuez d’utiliser S3 comme source principale pour charger les fichiers, ce qui ne vous économiserait pas vraiment beaucoup d’argent.
Vous avez toujours besoin de seeders pour servir les connexions, et vous avez besoin de seeders peu fiables en raison des différentes vitesses de connexion Internet.
Bien sûr, vous pouvez simplement ajouter un interrupteur dans une fenêtre de dialogue, l’intégrer aux préférences, ou utiliser un outil comme Privacy Badger pour empêcher le chargement de cette bibliothèque. Vous pouvez également détecter si le navigateur est mobile et le désactiver complètement. Il existe plusieurs options.
Cela fonctionne un peu comme un cache. Si les fichiers multimédias ne sont pas en cours de partage, ils sont récupérés depuis la source web (S3 dans notre cas). Cependant, comme WebTorrent peut également récupérer des fichiers depuis des clients torrent traditionnels comme Transmission, rtorrent, etc., nous pouvons avoir quelques semeurs (comme moi-même) qui partagent une grande quantité de contenu depuis leur connexion domestique. Il suffit en réalité d’un petit nombre de semeurs pour rendre cela viable.
En effet, mais nous résoudrons ce problème en tant que communauté.
Ce n’est pas impossible maintenant, vous avez simplement compliqué la fonctionnalité à un niveau que presque aucune fonctionnalité n’atteint. L’équipe de Discourse a ainsi abandonné le support d’IE11 à cause des maux de tête que cela impliquait pour la maintenance du code. Imaginez une logique de ce genre ; peut-être que si vous allez dans Marketplace, quelqu’un s’y intéressera.
Je ne vois pas vraiment d’avantage à l’inclure dans le cœur du système, et j’ai demandé l’ajout de nombreuses fonctionnalités au cœur qui sont beaucoup plus faciles à réaliser.
Ce qui a été refusé à juste titre, avec une explication claire et logique (aucune plainte de ma part).
Personnellement, je ne l’utiliserais pas et je n’aurais aucun intérêt à le faire fonctionner ; il est plus simple, plus fiable et moins cher de placer un CDN devant et de ne plus y penser.