mercredi 6 mai 2015

Road to the Cloud (2) : Twelve-Factor Applications

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