Chez Dernier Cri, nous avons pour principe de délivrer des apps as-a-service performantes et scalables. Pour cela, nous nous basons sur la méthodologie 12factors qui nous permet de garantir à nos clients de livrer des applications de qualité.
Historiquement, la méthodologie 12factor a été mise au point par des ingénieurs de Heroku, le fameux PaaS américain en 2011 (que nous avons beaucoup utilisé avant de passer sur des PaaS français comme Scalingo ou Clever Cloud). Basé sur l'analyse de milliers d'applications, ces développeurs ont peu à peu synthétisé leurs observations sous la forme de 12 points qui selon eux, hormis le code de l'application lui-même, doivent être respectés pour permettre de construire une application résiliente et scalable capable de fonctionner dans le cloud.
Voici en détail les 12 points de la méthodologie et comment nous les adressons chez Dernier Cri :
Le premier facteur souligne l'importance d'une seule base de code pour une application, versionnée avec un système de contrôle de version, comme Git. Plusieurs déploiements peuvent être issus de la même base de code, mais il est important de les garder sous le même dépôt pour assurer la cohérence et la maintenabilité.
💡 Chez Dernier Cri, nous utilisons :
Une application ne devrait pas dépendre de librairies, de package ou de module système (ex: GD ou Curl). Même si la plupart des systèmes proposent ces outils, ils peuvent ne pas avoir la bonne version ou configuration. Ce qui rendrait l'application instable.
💡 Chez Dernier Cri, nous utilisons :
Différentes informations sont utiles pour faire fonctionner une application, comme l'accès à la base de données, ou le chemin de stockage des images par exemple. Il faut stocker ces informations dans des variables d'Environnement. Cela permet de déployer facilement l'application dans différents environnements sans modifier le code source.
💡 Chez Dernier Cri, nous utilisons :
Tous les services utilisés à travers le réseau par l'application sont considérés comme des services externes qui doivent être attachés ou détachés à la demande. Typiquement, la base de données est considérée comme service externe, tout comme les services tiers (monitoring, paiement, backup, etc...). Ces services sont reliés à l'application au moment du déploiement.
💡 Chez Dernier Cri, nous utilisons :
Il est important de distinguer 3 étapes au moment du déploiement :
💡 Chez Dernier Cri, nous utilisons :
Le processus qui fait fonctionner notre application (runtime) et la base de code elle-même ne doivent pas avoir connaissance de l'état à un moment précis de notre application. On dit que l'application est Stateless. Les informations relatives à l'état (login, session, données formulaire inscription, etc...) doivent être stockées ailleurs (base de donnée, fichiers, etc...).
💡 Chez Dernier Cri, nous utilisons :
Une application 12factors est auto-contenue. Lorsqu'elle s'exécute, c'est à elle d'exposer ses ports d'entrée-sortie pour communiquer avec l'extérieur. On peut exposer tout types de services comme HTTP, mais aussi Redis, XMPP, MQTT, Websocket...
Utilisez des technologies telles que Docker et Kubernetes pour faciliter la portabilité et la gestion de l'infrastructure.
💡 Chez Dernier Cri, nous utilisons :
Chaque processus qui exécute notre application lorsqu'une requête arrive est sans état par défaut. Ceci nous permet de lancer plusieurs processus en concurrence lorsque le traffic augmente par exemple.
💡 Chez Dernier Cri, nous utilisons :
Les processus doivent être considérés comme jetables, ils peuvent être démarrés, stoppés, et supprimés à la demande sans affecter le fonctionnement de notre application.
Il faudra cependant optimiser les temps de démarrage et d'arrêt pour rendre notre application plus résiliente.
💡 Chez Dernier Cri, nous utilisons :
Le dixième facteur des 12 facteurs souligne l'importance de maintenir la parité entre les environnements de développement, de test et de production. Cela signifie que les différences entre ces environnements doivent être minimisées autant que possible pour éviter les problèmes liés aux différences de configuration, de dépendances ou de versions de services externes.
Pour maintenir la parité entre les environnements, les équipes de développement doivent :
💡 Chez Dernier Cri, nous utilisons :
Les journaux sont essentiels pour surveiller les performances, détecter les problèmes et assurer la sécurité de l'application. Les 12 facteurs recommandent de traiter les journaux comme des flux d'événements et de les stocker sur un système de stockage externe pour une analyse ultérieure.
Voici quelques bonnes pratiques pour la gestion des journaux :
💡 Chez Dernier Cri, nous utilisons :
Le dernier facteur porte sur la gestion des tâches administratives et de maintenance qui doivent être effectuées sur l'application. Ces tâches peuvent inclure des migrations de bases de données, l'exécution de scripts ponctuels, ou la génération de rapports. Les 12 facteurs recommandent d'exécuter ces tâches dans le même environnement que l'application, en utilisant les mêmes outils et processus.
💡 Chez Dernier Cri nous utilisons :