The 12 factors
QCM sur les “12 Factors”
Une seule bonne réponse par question.
I. Codebase
-
Quelle est la règle fondamentale concernant la gestion de la base de code dans une application 12 Factors ?
- A) Il doit y avoir un seul dépôt de code partagé entre plusieurs applications distinctes.
- B) Chaque application a son propre dépôt et peut être déployée indépendamment.
- C) Une application peut avoir plusieurs dépôts avec des versions différentes en production.
-
Dans une architecture 12 Factors, comment sont gérées les branches de la base de code ?
- A) Chaque environnement (dev, test, prod) a sa propre branche permanente.
- B) Les branches sont utilisées pour le développement et fusionnées dans la branche principale.
- C) Chaque développeur a son propre dépôt et fusionne dans une branche commune.
II. Dépendances
-
Comment une application 12 Factors doit-elle gérer ses dépendances ?
- A) Elles doivent être installées globalement sur le système hôte.
- B) Elles doivent être déclarées explicitement dans un fichier de gestion de dépendances.
- C) Elles doivent être intégrées directement dans le code source.
-
Quel est l’outil recommandé pour gérer les dépendances dans une application 12 Factors ?
- A) Un fichier de configuration spécifique (ex :
requirements.txt
,package.json
). - B) Un fichier texte listant les versions des dépendances.
- C) Une installation manuelle sur chaque serveur.
- A) Un fichier de configuration spécifique (ex :
III. Configuration
-
Où une application 12 Factors doit-elle stocker sa configuration ?
- A) Dans le code source.
- B) Dans l’environnement (variables d’environnement, configmap)
- C) Dans un fichier de configuration versionné avec le code.
-
Pourquoi est-il déconseillé de stocker la configuration dans le code source ?
- A) Parce que cela complique le développement.
- B) Parce que cela empêche la scalabilité.
- C) Parce que cela pose un risque de sécurité et de portabilité.
IV. Backing Services
-
Comment les services externes (base de données, cache, etc.) doivent-ils être traités ?
- A) Comme des ressources interchangeables accessibles via des URLs ou credentials stockés dans l’environmment (variable d’environnement, fichier de configuration)
- B) Comme des composants fixes du code source.
- C) Comme des services internes intégrés dans l’application.
-
Pourquoi est-il important de traiter les services backing comme des ressources attachées ?
- A) Pour permettre leur remplacement facile sans changer le code.
- B) Pour éviter la duplication de code.
- C) Pour s’assurer qu’ils fonctionnent uniquement sur un serveur spécifique.
V. Build, Release, Run
-
Quelles sont les trois étapes distinctes du cycle de vie d’une application 12 Factors ?
- A) Développement, test, production.
- B) Build, Release, Run.
- C) Commit, Merge, Deploy.
-
Pourquoi séparer les étapes de Build, Release et Run ?
- A) Pour garantir la reproductibilité des déploiements.
- B) Pour accélérer l’exécution du code.
- C) Pour réduire la consommation de ressources.
VI. Processus
-
Comment une application 12 Factors doit-elle être exécutée ?
- A) En tant qu’ensemble de processus statiques.
- B) En tant que série de processus indépendants et sans état.
- C) En tant qu’un seul processus monolithique.
-
Pourquoi privilégier des processus sans état ?
- A) Pour simplifier le scaling horizontal.
- B) Pour améliorer la rapidité du code.
- C) Pour éviter les erreurs de compilation.
VII. Liaison de ports
-
Comment une application 12 Factors expose-t-elle ses services ?
- A) Par un port spécifié dans le code source ou dans la configuration
- B) En se reliant directement aux services internes du serveur hôte.
- C) Par des fichiers de configuration manuels.
-
Pourquoi utiliser la liaison de ports ?
- A) Pour rendre l’application plus portable et accessible par le réseau
- B) Pour limiter l’accès aux services.
- C) Pour améliorer la performance.
VIII. Concurrence
-
Comment une application 12 Factors gère-t-elle la concurrence ?
- A) En utilisant des threads internes.
- B) En scalant horizontalement par duplication de processus.
- C) En augmentant la puissance d’un serveur unique.
-
Pourquoi est-il préférable de scaler horizontalement ?
- A) Pour une meilleure résilience et flexibilité (haute-disponibilité et tolérance aux pannes)
- B) Pour réduire la consommation d’énergie.
- C) Pour éviter d’avoir plusieurs instances.
IX. Disposability
-
Quelle caractéristique doit avoir un processus 12 Factors pour être disposable ?
- A) Il doit démarrer et s’arrêter rapidement.
- B) Il doit être long à initialiser mais stable.
- C) Il doit nécessiter une configuration manuelle avant chaque exécution.
-
Pourquoi est-ce important ?
- A) Pour améliorer la résilience et la scalabilité.
- B) Pour éviter les erreurs de compilation.
- C) Pour garantir une exécution plus rapide du code.
X. Parité développement/production
-
Pourquoi minimiser les différences entre dev et prod ?
- A) Pour éviter les surprises en production.
- B) Pour limiter les mises à jour.
- C) Pour rendre le développement plus lent.
-
Comment assurer cette parité ?
- A) En utilisant les mêmes dépendances et environnements.
- B) En développant directement en production.
- C) En limitant les mises à jour en développement.
XI. Logs
-
Comment une application 12 Factors doit-elle gérer les logs ?
- A) En les stockant localement sur le serveur.
- B) En les écrivant sur stdout/stderr pour qu’un agrégateur les collecte.
- C) En les insérant dans une base de données interne.
-
Pourquoi utiliser stdout/stderr ?
- A) Pour une meilleure gestion et analyse centralisée.
- B) Pour limiter la quantité de logs.
- C) Pour stocker directement sur le serveur.
XII. Tâches Admins
-
Comment exécuter les tâches administratives ?
- A) En les intégrant directement dans le code principal.
- B) En les exécutant sous forme de processus éphémères, via des conteneurs
- C) En les exécutant manuellement sur le serveur.
-
Pourquoi utiliser des processus éphémères conteneurisés ?
- A) Pour éviter la dépendance à l’infrastructure
- B) Pour améliorer la sécurité.
- C) Pour rendre l’application plus rapide.