gwift-book/source/toolchain/12-factors.adoc

4.0 KiB
Raw Blame History

Méthodologie de travail

Pour la méthode de travail et de développement, on va se baser sur les The Twelve-factor App - ou plus simplement les 12 facteurs.

Lidée derrière cette méthode consiste à pousser les concepts suivants (repris grossièrement de la page dintroduction :

  1. Faciliter la mise en place de phases dautomatisation; plus simplement, faciliter les mises à jour applicatives, simplifier la gestion de lhôte, diminuer la divergence entre les différents environnements dexécution et offrir la possibilité dintégrer le projet dans un processus dintégration continue/déploiement continu

  2. Faciliter la mise à pied de nouveaux développeurs ou de personnes souhaitant rejoindre le projet.

  3. Faciliter

  4. Augmenter lagilité générale du projet, en permettant une meilleure évolutivité architecturale et une meilleure mise à léchelle - Vous avez 5000 utilisateurs en plus? Ajoutez un serveur et on nen parle plus ;-).

En pratique, les idées planquées derrière les quelques phrases ci-dessus permettront de monter facilement un nouvel environnement - quil soit sur la machine du petit nouveau ou sur un serveur Azure, Heroku, Digital Ocean ou votre nouveau Raspberry Pi Zéro caché à la cave.

Pour reprendre de manière très brute les différentes idées derrière cette méthode, on a:

Note
pensez à retravailler la partie ci-dessous; la version anglophone semble plus compréhensible… :-/
  1. Une base de code suivie avec un système de contrôle de version, plusieurs déploiements

  2. Déclarez explicitement et isolez les dépendances

  3. Stockez la configuration dans lenvironnement

  4. Traitez les services externes comme des ressources attachées

  5. Séparez strictement les étapes dassemblage et dexécution

  6. Exécutez lapplication comme un ou plusieurs processus sans état

  7. Exportez les services via des associations de ports

  8. Grossissez à laide du modèle de processus

  9. Maximisez la robustesse avec des démarrages rapides et des arrêts gracieux

  10. Gardez le développement, la validation et la production aussi proches que possible

  11. Traitez les logs comme des flux dévènements

  12. Lancez les processus dadministration et de maintenance comme des one-off-processes

Table 1. Concrètement

Concept

Outil

Description

Base de code suivie avec un système de contrôle de version

Git, Mercurial, SVN, …​

Chaque déploiement démarre à partir dune base de code unique. Il ny pas de dépôt "Prod", "Staging" ou "Dev". Il ny en a quun et un seul.

Déclaration explicite et isolation des dépendances

Pyenv, environnements virtuels, RVM, …​

Afin de ne pas perturber les dépendances systèmes, chaque application doit disposer dun environnement sain par défaut.

Configuration dans lenvironnement

Fichiers .ENV

Toute clé de configuration (nom du serveur de base de données, adresse dun service Web externe, clé dAPI pour linterrogation dune ressource, …​) sera définie directement au niveau de lhôte - à aucun moment, on ne doit trouver un mot de passe en clair dans le dépôt source ou une valeur susceptible dévoluer, écrite en dur dans le code.

Services externes = ressources locales

Fichiers .ENV

Chaque ressource doit pouvoir être interchangeable avec une autre, sans modification du code source. La solution consiste à passer toutes ces informations (nom du serveur et type de base de données, clé dauthentification, …​) directement via des variables denvironnement.

Bien séparer les étapes de construction des étapes de mise à disposition

Capistrano, Gitea, un serveur dartefacts, …​

Lidée est de pouvoir récupérer une version spécifique du code, sans que celle-ci ne puisse avoir été modifiée. Git permet bien de gérer des versions (au travers des tags), mais ces éléments peuvent sans doute être modifiés directement au travers de lhistorique.