Introduction
Unleash est une plateforme open-source dédiée à la gestion des feature flags (ou toggles de fonctionnalités), essentielle pour les déploiements progressifs, les A/B tests et les rollbacks rapides sans redeployer votre code. En 2026, avec l'essor des architectures microservices et des CI/CD avancées, Unleash s'impose comme un outil incontournable pour les équipes DevOps et développement.
Pourquoi l'utiliser ? Imaginez libérer une nouvelle fonctionnalité pour 10% des users seulement, mesurer l'impact, puis l'activer globalement ou la désactiver en un clic – sans hotfix urgent. Ce tutoriel beginner vous guide du déploiement Docker à l'intégration dans une app Node.js, avec des configs complètes et du code fonctionnel. À la fin, vous maîtriserez les bases pour booster vos releases. (Environ 120 mots)
Prérequis
- Docker et Docker Compose installés (version 20+ recommandée)
- Node.js 18+ pour les exemples clients
- Connaissances basiques en terminal et JavaScript
- Un éditeur de code comme VS Code
Créer le fichier docker-compose.yml
version: '3.8'
services:
unleash-server:
image: unleashorg/unleash-server:6.5.0
ports:
- "8080:8080"
environment:
DATABASE_URL: postgres://unleash_user:password@db:5432/unleash
NODE_ENV: production
INITIAL_ADMIN_USER:
- email=user@unleash.local
userName=admin
password=unleash4fun
depends_on:
- db
restart: always
db:
image: postgres:15
environment:
POSTGRES_DB: unleash
POSTGRES_USER: unleash_user
POSTGRES_PASSWORD: password
volumes:
- unleash_db:/var/lib/postgresql/data
restart: always
volumes:
unleash_db:Ce docker-compose déploie Unleash avec une base PostgreSQL intégrée. Il expose le port 8080 pour l'interface web et configure un admin initial (email: user@unleash.local, mot de passe: unleash4fun). Attention : en prod, utilisez des secrets pour les vars d'env et un volume persistant pour la DB.
Lancer Unleash localement
Sauvegardez le code ci-dessus dans un fichier docker-compose.yml à la racine d'un dossier projet. Ouvrez un terminal et exécutez docker compose up -d. Attendez 1-2 minutes pour l'initialisation de la DB.
Accédez à http://localhost:8080, connectez-vous avec les identifiants admin. Vous verrez le dashboard vide, prêt pour vos premiers feature flags. Vérifiez les logs avec docker compose logs -f si besoin.
Installer le client Node.js
mkdir unleash-client-demo
cd unleash-client-demo
npm init -y
npm install @unleash/proxy @unleash/sdk
npm install typescript @types/node ts-node --save-devCe script initialise un projet Node.js et installe le SDK officiel Unleash pour proxy et client. Le proxy est idéal pour les environnements server-side sécurisés, évitant d'exposer l'API Unleash publiquement. Utilisez TypeScript pour la robustesse des types.
Configurer le proxy client
Créez un fichier unleash-proxy.js pour relayer les appels vers Unleash. Cela cache votre instance et gère le polling des flags. Dans l'UI Unleash, créez un projet nommé 'default', puis un feature toggle nommé 'ma-nouvelle-fonction' activé pour 100% du trafic (stratégie 'default').
Implémenter le proxy Unleash
const express = require('express');
const { ProxyEngine } = require('@unleash/proxy');
const app = express();
app.use(express.json());
// Config proxy
new ProxyEngine({
unleashUrl: 'http://localhost:8080/api/',
proxySecret: 'ceci-est-un-secret-changez-le',
proxyPort: 4242,
unleashAppName: 'unleash-proxy',
metrics: true,
}).then((engine) => {
engine.start();
console.log('Proxy démarré sur http://localhost:4242');
}).catch(console.error);
app.listen(3001, () => {
console.log('Serveur proxy sur port 3001');
});Ce proxy Express relaye les requêtes client vers Unleash sur localhost:8080. Il utilise un secret pour l'auth et expose un endpoint sur /proxy. Lancez-le avec node unleash-proxy.js. Changez le secret en prod et activez HTTPS.
Exemple d'app client avec SDK
const { initialize } = require('@unleash/sdk');
async function demo() {
const config = {
url: 'http://localhost:4242/proxy',
clientKey: 'default:development:ceci-est-un-secret-changez-le',
appName: 'client-demo',
environment: 'default',
refreshInterval: 5000,
};
const unleash = initialize(config);
await unleash.start();
// Vérifier un flag
if (unleash.isEnabled('ma-nouvelle-fonction')) {
console.log('✅ Fonctionnalité activée !');
} else {
console.log('❌ Fonctionnalité désactivée');
}
// Stop propre
setTimeout(() => {
unleash.stop();
}, 10000);
}
demo();Ce script initialise le SDK client, pointe vers le proxy et vérifie le flag 'ma-nouvelle-fonction'. Exécutez node client-demo.js après avoir lancé le proxy. Le client poll toutes les 5s pour les updates. En prod, gérez les erreurs de connexion et les fallbacks.
Tester dans l'interface Unleash
Dans l'UI (localhost:8080), éditez 'ma-nouvelle-fonction' : ajoutez une stratégie 'gradual-rollout' à 20% et un contexte 'userId'. Testez avec curl "http://localhost:4242/proxy?token=ceci-est-un-secret-changez-le&context.userId=123". Vous verrez le flag changer dynamiquement sans redémarrer l'app.
Script de cleanup et stop
docker compose down -v
docker volume rm $(docker volume ls -q | grep unleash)Ce script arrête les conteneurs et supprime les volumes pour un reset propre. Utilisez -v pour éviter les données persistantes en dev. Vérifiez avec docker ps que tout est clean.
Bonnes pratiques
- Sécurisez les secrets : Utilisez Docker Secrets ou Vault pour DATABASE_URL et proxySecret en production.
- Monitorez les métriques : Activez Prometheus dans Unleash pour tracker les activations de flags.
- Stratégies contextuelles : Toujours utiliser userId ou sessionId pour des rollouts ciblés.
- Fallbacks clients : Implémentez des valeurs par défaut si le SDK échoue.
- Tests automatisés : Intégrez des tests E2E qui mockent Unleash avec
nock.
Erreurs courantes à éviter
- Oublier d'attendre la DB : Unleash échoue si Postgres n'est pas prêt – ajoutez
healthcheckdans docker-compose. - Secret mismatch : Client et proxy doivent partager le même secret, sinon 401 Unauthorized.
- Ports conflictuels : Vérifiez
netstat -tuln | grep 8080avantup. - Pas de HTTPS en prod : Exposez via reverse proxy (Nginx/Traefik) avec certs Let's Encrypt.
Pour aller plus loin
Explorez la doc officielle Unleash, intégrez avec Kubernetes via Helm charts, ou découvrez les formations Learni sur DevOps. Pour des setups avancés (multi-tenant, SSO), visez Unleash Enterprise.