CoddityTeam / movaicode

Concours mensuel du Pire Développeur de France
123 stars 10 forks source link

Le mardi gras sans code #199

Closed bursauxa closed 2 years ago

bursauxa commented 2 years ago

Le code c'est quand même un peu 2010. Aujourd'hui les vrais amateurs de gras ils écrivent du yameule et du doqueur. Donc voici un sélectionneur de gourmandise avec un fichier de conf nginx, un template de fichier de conf nginx, et un docker-compose qui a clairement mangé toutes les recettes du mardi gras tellement il est obèse :waffle:

movaicode.conf

events {}

http {
    upstream mardigras {
        server beugnot;
        server bottereaux;
        server bougnettes;
        server bugnes;
        server crouchepettes;
        server croustillons;
        server ganses;
        server gaufres;
        server merveilles;
        server oreillettes weight=2; # les oreillettes c'est deux fois mieux, on en veut deux fois plus souvent
        server pets;
        server roussettes;
        random;
    }

    server {
        listen 80;
        location / {    
            proxy_pass http://mardigras;
        }
    }
}

templates/nginx.conf.template

events {}

http {
    server {
        listen 80;
        location / {    
            return 200 ${MARDI_RECETTE};
        }
    }
}

docker-compose.yml

services:
  movaicode:
    image: nginx
    volumes:
    - ./movaicode.conf:/etc/nginx/nginx.conf
    ports:
    - "9900:80"
  beugnot:
    image: nginx
    volumes:
    - ./templates:/etc/nginx/templates
    ports:
    - "80"
    environment:
    - MARDI_RECETTE=beugnot
    - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
  bottereaux:
    image: nginx
    volumes:
    - ./templates:/etc/nginx/templates
    ports:
    - "80"
    environment:
    - MARDI_RECETTE=bottereaux
    - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
  (... et ainsi de suite pour les dix autres)

Docker (ou équivalent) est le seul prérequis. Le pas-du-code est exécutable simplement avec docker-compose up à partir des sources. Une fois la composition déployée, ouvrez votre navigateur sur http://localhost:9900.

La composition démarre un conteneur pour chaque type de grasserie, avec un nginx qui répond systématiquement par l'unique grasserie servie par ce conteneur. Devant tout ça, un load-balancer vous envoie sur la grasserie du moment de manière aléatoire, mais optionnellement pondérée - ici, les oreillettes sont plus probables.

Parce que la sécurité c'est l'affaire de tous, les conteneurs backend sont sur le réseau interne à la composition. Ils ne sont pas exposés à l'hôte, pour qui seule la grasserie aléatoire est visible. Il est donc impossible de demander une grasserie spécifique, petits coquins !

chris-codd commented 2 years ago

Belle !

louismarslen commented 2 years ago

Salut salut,

Malheureusement tu n'as pas gagné l'édition 9 de MOVAICODE (c'est S4lem qui gagne : #186) 😭 Toutefois nous t'invitons fortement à participer à l'édition 10 qui vient d'être lancée : le README est ici

Merci pour ta prestation 🤘