Sam & Max » deploiement http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Les usages légaux de BitTorrent 11 http://sametmax.com/les-usages-legaux-de-bittorrent/ http://sametmax.com/les-usages-legaux-de-bittorrent/#comments Sat, 15 Sep 2012 15:08:18 +0000 http://sametmax.com/?p=2094 BitTorrent est diabolisé, mais c’est comme la télévision: ce n’est pas parce que la majorité des gens en font un mauvais usage qu’il faut considérer que c’est une technologie satanique.

Déploiement de code

BitTorrent à cela de merveilleux que plus il y a de personnes qui téléchargent, plus le téléchargement est rapide. Pour cette raison, les grandes entreprises l’utilisent pour déployer leur code en productions sur leurs centaines de serveur, avec des gains de vitesse allant jusqu’à 7500 %.

Twitter et Facebook sont connus pour utiliser le protocole p2p pour économiser exactement ça.

Distribution de patch et vente de jeux

On pense toujours que le peer to peer ce n’est pas pour le kikoo lol moyen, que c’est compliqué. Mais en fait énormément de Kevin de base utilisent BitTorrent sans le savoir.

La raison ?

Capture d'écran du logiciel de mise à jour des jeux Blizzard

Vous jouez à Wow, SC2 ou Diablo 3 ? Vous utilisez BitTorrent !

Blizzard utilise en effet BitTorrent dans son fameux logiciel “Blizzard downloader” pour distribuer les installeurs des jeux vendus sur Battle.net, mais également toutes les mises à jour des dit jeux.

Quand on a des millions de joueurs qui sont du coup autant de serveurs, on économise un MAX de pognon. On parle de millions d’euros là.

Distribution d’iso

Quelqu’un qui surf sur Internet (60% des serveurs Web dans le monde), utilise un téléphone Android ou regarde une vidéo sur sa Freebox utilise Linux. Or l’acquisition d’une ISO d’installation Linux se fait massivement à travers BitTorrent, pour justement éviter de surcharger les éditeurs de distro qui ont un budget limité. Votre serviteur tape d’ailleurs cet article sur une Ubuntu installé depuis une ISO téléchargée via BitTorrent.

D’une manière générale, si on a un gros fichier à partager sur un blog, le mettre à disposition via BitTorrent est ce qu’il y a de plus pratique, ça évite de tuer son hébergement. Pour cette raison, Amazon S3 le supporte par défaut.

Potentiel

Parce que des gens stressés par la mutation des mœurs ne voient pas plus loin que le bout de leur narines, et parce que “BitTorrent, c’est surtout utilisé pour pirater, il faut pas déconner”, cette technologie est largement sous exploitée. On pourrait faire la mise à jour de tous les logiciels avec, même la mise à jour des OS, et carrément l’intégrer dans les gestionnaires de paquets. On pourrait faire du streaming avec: chaque visionneur repartageant des paquets, et allégeant la charge des fournisseurs de VOD.

Si l’usage de BitTorrent se généralise, ce sont des économies à l’échelle du monde qui seront réalisées, mais aussi l’opportunité pour plein de “petits” de mettre à disposition du gros contenu pour le grand public. Ce serait fabuleux que tous les navigateurs intègrent le téléchargement BitTorrent par défaut, comme le fait Opéra (qui est d’ailleurs aussi téléchargeable en torrent). Parce que pour le moment, allez proposer à mamie de télécharger un truc avec BitTorrent… J’ai expliqué à mon père il y a quelques semaines, lui qui pourtant sait ce que c’est qu’un cable SCSI et qui a été le premier à utiliser CloneCD en son temps, il a eu du mal.

Pour le moment, les ports sont souvent bloqués, le protocole est souvent bridé, les applications censurées sur les appstores, et tout ce potentiel est perdu.

Chers éditeurs de contenu, même dans le cas improbable ou vous gagniez la bataille de la maîtrise du Net, empêchant les méchants pirates de vous voler de quoi vous acheter votre prochain coupé sport, j’ai toujours un disque dur externe et des amis. Qui en ont aussi.

Donc puisque vous ne pouvez pas arrêter le piratage sans transformer le pays en dictature stalinienne, ayez au moins la décence de laisser tranquille des technologies brillantes et extraordinairement utiles pour tous. C’est peut être un détail pour vous, mais pour nous ça veut dire beaucoup.

 

]]>
http://sametmax.com/les-usages-legaux-de-bittorrent/feed/ 11
Mettre automatiquement DEBUG sur False en production pour Django 2 http://sametmax.com/mettre-automatiquement-debug-sur-false-en-production-pour-django/ http://sametmax.com/mettre-automatiquement-debug-sur-false-en-production-pour-django/#comments Sat, 01 Sep 2012 14:24:22 +0000 http://sametmax.com/?p=1913 L’avantage des fichiers de settings en pur Python, c’est qu’on peut faire des trucs mignons comme:

import socket
 
if socket.gethostname() == 'monsupersite.com':
    DEBUG = False
else:
    DEBUG = True
]]>
http://sametmax.com/mettre-automatiquement-debug-sur-false-en-production-pour-django/feed/ 2
Travailler moins pour gagner plus, en 15 minutes avec Python fabric 4 http://sametmax.com/travailler-moins-pour-gagner-plus-en-15-minutes-avec-python-fabric/ http://sametmax.com/travailler-moins-pour-gagner-plus-en-15-minutes-avec-python-fabric/#comments Wed, 22 Feb 2012 01:09:47 +0000 http://sametmax.com/?p=190 fabric. Un jour, après avoir chassé un bug des heures dû à une erreur sur un process de mise en ligne, je me suis motivé. Bonne surprise, ça m'a pris 30 minutes. Avec cet cet article ça vous en prendra 15.]]> Apprendre encore un nouvel outil, c’est du temps et de l’énergie. Du coup j’ai longtemps ignoré l’outil automatique de déploiement fabric.

On vit très bien sans, mais un jour, après avoir chassé un bug des heures qui n’était dû qu’à une erreur de ma part sur un process répétitif et ennuyeux de mise en ligne, je me suis motivé. Bonne surprise, ça m’a pris 30 minutes. Et avec cet article, ça vous en prendra 15.

Avant

Fabric est un outil qui vous permet d’écrire, en Python, un script de déploiement ; c’est à dire d’automatiser la mise en ligne d’une nouvelle version de votre site.

Comme ça, ça n’a pas l’air d’être quelque chose qu’on utilise souvent, mais pourtant, quand vous corrigez un simple bug dans une requête AJAX sur un projet Django sauvegardé dans Git, voilà ce que vous devez faire:

  1. git pull remote branch (pour s’assurer que personne n’a modifié le code entre temps)
  2. git push remote branch (pour sauvegarder votre code tout frais)
  3. ssh user@host (pour aller sur le serveur distant)
  4. cd /path/to/project
  5. workon virtualenv
  6. ./manage.py collectstatic (pour que le nouveau fichier Javascript soit mis en ligne)
  7. supervisorctl -c settings/prod_supervisor.ini restart all (pour redémarrer les workers et qu’ils prennent en compte les modifications du code Python)
À un moment, vous allez vous planter dans une étape, tellement c’est ennuyeux et répétitif.

Après

Comme d’hab, on commence par un coup de pip:

pip install fabric

Et dans un fichier fabfile.py à la racine de votre projet en local:

from fabric.api import local, run, cd, env, prefix
 
REMOTE_WORKING_DIR = '/path/to/project'
 
env.hosts = ['siteweb.com']
env.user = 'username'
 
def push(branch='master', remote='origin', runlocal=True):
    if runlocal:
        # lance la commande en local
        local("git push %s %s" % (remote, branch))
    else:
        # lance la commande sur les serveurs de la liste eng.hosts
        run("git push %s %s" % (remote, branch))
 
def pull(branch='master', remote='origin', runlocal=True):
    if runlocal:
        local("git pull %s %s" % (remote, branch))
    else:
        run("git pull %s %s" % (remote, branch))
 
def sync(branch='master', remote='origin', runlocal=True):
    pull(branch, remote, runlocal)
    push(branch, remote, runlocal)
 
def deploy(branch='master', remote='origin'):
    # execute toutes les commandes dans ce dossier
    with cd(REMOTE_WORKING_DIR):
        # excute toutes les commandes avec celle-ci avant
        with prefix('workon virtualenv'):
            pull(branch, remote, False)
            run("./manage.py collectstatic --noinput")
            run("supervisorctl -c settings/prod_supervisor.ini restart all")

Et voilà du temps de sauvé, et des erreurs évitées pour un investissement vraiment minimal.

Synchroniser son code avec le reste de l’équipe: fab sync
Déployer le code en production: fab deploy
Les deux: fab sync deploy

Et ce n’est qu’une intro. On peut faire des choses biens plus avancées, notamment gérer plusieurs type de déploiements, de serveurs, etc.

Notez qu’on pourrait faire le faire en bash sans avoir à installer fabric, mais un script bash, c’est tellement laborieux à faire évoluer…

]]>
http://sametmax.com/travailler-moins-pour-gagner-plus-en-15-minutes-avec-python-fabric/feed/ 4