Partie 3 · 12 facteurs
Les 12 facteurs
Les « 12 facteurs » sont 12 règles de base pour créer des applications compatibles avec une approche Cloud. Ce sont des principes généraux, les détails étant propres à chaque projet. Liste du cours :
| 1 · Base de code | 7 · Associations de ports |
| 2 · Dépendances | 8 · Concurrence |
| 3 · Configuration | 9 · Jetable |
| 4 · Services externes | 10 · Parité dev/prod |
| 5 · Build, Release, Run | 11 · Logs |
| 6 · Processus | 12 · Processus d'administration |
| Facteur | Règle du cours |
|---|---|
| 1 Base de code | une seule base de code, plusieurs déploiements ; pas de code partagé (ou mutualisé via des dépendances) |
| 2 Dépendances | ne jamais dépendre de l'existence de dépendances sur le système cible ; toujours les déclarer dans le projet (Maven, npm...) |
| 3 Configuration | pas de config dans le code ; l'environnement de déploiement la stocke (variables d'environnement) |
| 4 Services externes | les traiter comme des services tiers, découplage fort (ex. remplacer une base locale par une base AWS) |
| 5 Build, Release, Run | séparer assemblage et build ; identifier chaque release de façon unique (traçabilité) ; importance de la CI |
| 6 Processus | applications sans état ; toute donnée dans un service externe ; ne jamais compter sur la persistance du cache |
Vérifie que tu as compris
Où le facteur « Configuration » demande-t-il de stocker les paramètres propres à un environnement ?
| Facteur | Règle du cours |
|---|---|
| 7 Associations de ports | l'application expose des ports ; l'environnement d'exécution route vers les ports publics |
| 8 Concurrence | stratégie rigoureuse ; ne pas partager de ressources extérieures sans gestion propre de l'accès concurrent ; indispensable pour le passage à l'échelle |
| 9 Jetable | démarrer rapidement, s'arrêter proprement (remettre le travail dans la file) ; arrêt possible à tout moment sans effet de bord néfaste |
| 10 Parité dev/prod | environnements aussi similaires que possible ; idéal : local = qualification = production ; infrastructure as code |
| 11 Logs | traiter les logs comme un flux d'évènements ; le fichier n'est qu'un format de sortie |
| 12 Administration | inclure les processus d'administration (ex. migration de base) dans un environnement strictement identique à celui de l'application |
Tu verras que Docker répond bien à plusieurs facteurs : dépendances embarquées dans l'image, parité dev/prod, conteneurs jetables, logs sur la sortie (docker logs). Ce lien est un commentaire pédagogique (hors cours).
Vérifie que tu as compris
Quel facteur dit qu'une application doit pouvoir être arrêtée à tout moment sans effet de bord néfaste ?