Lorsque j'utilise des fonctionnalités pour gérer le déploiement, dois-je diviser mes fonctionnalités en plusieurs petites fonctionnalités ou une grande fonctionnalité?

15

Je suis relativement nouveau dans le module des fonctionnalités et j'ai lu des recommandations contradictoires en ligne pour savoir s'il est plus facile de maintenir A) une grande fonctionnalité ou B) plusieurs fonctionnalités plus petites , puis un module de type " contrôleur de fonctionnalités " qui répertorie toutes les petites fonctionnalités comme dépendances.

Un peu sur ma situation spécifique: j'utilise un local development -> dev server -> staging server -> live serverworkflow. Ce site particulier sera presque certainement le seul du genre que j'ai jamais développé; Je n'ai pas l'intention d'utiliser le featuresJe crée pour ce site sur d'autres sites.

Cela me fait pencher pour tout faire dans une grande fonctionnalité, car j'ai eu des problèmes dans le passé où j'ai accidentellement défini les mêmes règles dans plusieurs fonctionnalités et j'ai eu des ennuis. Cependant, en termes de structure, cela me semble faux - il existe différentes caractéristiques / fonctions, elles doivent donc être divisées en fonctionnalités distinctes. D'un autre côté, j'ai l'impression qu'en faisant cela, je peux simplement créer du travail supplémentaire et des frais généraux pour moi-même qui ne profiteront à personne.

Quelle approche est plus facile à maintenir dans la pratique réelle - une grande caractéristique ou plusieurs plus petites?

Patrick Kenny
la source

Réponses:

7

Créez plusieurs petites fonctionnalités, divisées par couche conceptuelle .

Avantages:

  1. Granularité lors de l' examen et l' exécution Dérogations Revient - de sorte que vous n'avez à tout revert à la fois.
  2. Modularité - même si vous ne prévoyez pas de réutiliser des composants individuels, la décomposition en modules discrets contribuera à la maintenabilité.

Pour déployer un seul site du développement au test jusqu'à la production, nous utilisons la taxonomie suivante (où "site" est remplacé par un nom de machine unique pour le site) -

  • site_typesFonctionnalité - déclare les types de contenu, les champs, les paramètres ImageCache, les rôles d'utilisateur
  • site_structureFonctionnalité - déclare les contextes, les vues, les menus et les liens de menu , les blocs, les autorisations utilisateur, les variables
    • dépend de la site_typescaractéristique
  • site_contentFonctionnalité - déclare les nœuds
    • dépend de la site_structurecaractéristique

S'il existe plusieurs sections de site distinctes (par exemple, Public vs Privé), envisagez de diviser davantage les choses:

  • site_types Fonctionnalité
  • site_structure Fonctionnalité - déclare les composants structurels communs aux secteurs public et privé
    • dépend de la site_typescaractéristique
  • site_public_structure Fonctionnalité
    • dépend de la site_typescaractéristique
  • site_public_content Fonctionnalité
    • dépend de la site_public_structurecaractéristique
  • site_private_structure Fonctionnalité
    • dépend de la site_typescaractéristique
  • site_private_content Fonctionnalité
    • dépend de la site_private_structurecaractéristique
smokris
la source