working on 12-factors

This commit is contained in:
Fred Pauchet 2019-09-12 21:22:41 +02:00
parent f60f700fbc
commit 592591f6c1
1 changed files with 29 additions and 2 deletions

View File

@ -1,3 +1,30 @@
12-factors
==========
# 12-factors
Une *application 12-facteurs* est une application répondant à un certain nombre (douze!) de critères, afin de respecter un ensemble de bonnes pratiques; l'objectif était de faciliter le déploiement, la maintenabilité et la cohésion de l'ensemble.
Long story short:
* Utiliser des formats **déclaratifs** pour automatiser la configuration,
* Disposer d'une portabilité maximale
* Peut être déployée sur une plateforme cloud moderne
* Minimiser les divergences entre les environnements de développement et de production
* Autoriser les déploiements continus, pour un maximum d'agilité
* ... et peut grossir/évoluer sans avoir à modifier (énormément) l'architecture, les outils ou les pratiques de développement.
## Code source
[Une seule version du code source, dans un outil de contrôle de version](https://12factor.net/codebase), et utilisée comme base de déploiement pour n'importe quel environnement (prod', acceptance, dev, ...).
## Dépendences
[Déclarez explicitement et isolez les dépendances](https://12factor.net/fr/dependencies). Ceci afin qu'aucune dépendance implicite ne vienne pourrir l'environnement dans lequel l'application est exécutée - soit à cause d'une mauvaise version, soit à cause d'une dépendance manquante.
## Configuration
[Stockez la configuration dans l'environnement](https://12factor.net/fr/config). *La configuration d'une application est tout ce qui est susceptible de varier entre deux environnements de déploiement*: identifiants de services, chaînes de connexion aux bases de données, configuration du cache.
Il est exigé d'avoir une **stricte séparation de la configuration et du code**.
*Un bon moyen de tester si une application a correctement séparé son code, cest de se demander si lapplication pourrait être rendue open-source à tout instant, sans compromettre didentifiants*.
Concrètement, on tape les variables d'environnement dans ... l'environnement :-) $ENV ou dans un fichier `.env` à un endroit bien connu. De cette manière, le déploiement est facilité (on peut lui passer des variables au démarrage, via un container Docker par exemple) ou directement dans un fichier sur un environnement *on-premises*.