Road to the Cloud (2) : Twelve-Factor APP
Le "Twelve-Factor App" est un ensemble de design patterns qui déterminent si une application à une architecture "cloud-native" donc architecturalement destiné à profité des avantages que propose le cloud c-a-d rapidité robustesse et scalabilité.
Codebase
Un dépôt centralisé et unique avec gestion de version et multiples déploiement (plusieurs versions peuvent être déployées au même temps).
Dependencies
La gestion des dépendances via un outil approprié ex: Maven, NPM ...
Config
La configuration, ou tout ce qui est susceptible de différer entre
des environnements de déploiement est injecté via des variables d'environnement au niveau du système d'exploitation.
Backing services
Les services de sauvegarde (ex : base de données ...) doivent être considérés comme ressources attachées et consommées dans tous les environnements de la même façon.
Build, release, run
Les processus "Build/release/run" doivent être séparés et indépendants.
Processes
L'application doit s'exécuté comme un ou plusieurs "stateless process" qui ne partagent absolument rien entre eux. toute relation possible doit être externalisée (ex cache, base de données).
Port binding
L'application doit être "self-contained" (tout les composants nécessaires doivent être packagés/emballés dans même installation) et expose tous ces services via "port binding".
Concurrency
Les processus doivent être "mis à l’échelle" horizontalement à fin de résoudre les problèmes de concurrences.
Disposability
La robustesse est garanti à travers des processus qui redémarre rapidement et se termine correctement.
Dev/prod parity
Les environnements Dev, Pré Prod et Production doivent être très proche voir similaire.
Logs
Au lieu de gérer des fichiers logs, il faut gérer les logs autant qu'événements stocker centralement pour indexation et analyse.
Admin processes
Les tâches administratives ou de gestions, tels que les migrations de bases de données, sont exécutés en tant que processus ponctuels "one-off" dans des environnements identiques.
Aucun commentaire:
Enregistrer un commentaire