Imaginez un système qui possède un grand nombre de serveurs. Chacun d'eux a un certain nombre de paramètres:
- Certains spécifiques au serveur
- Certains spécifiques à la région
- Certains communs à tous
- Peut-être que vous pouvez avoir des regroupements personnalisés, comme ce groupe de serveurs est en lecture seule
- etc.
La pratique actuelle que j'ai à l'esprit est une structure de propriété simple avec des capacités primordiales.
Prenons les serveurs Google aux fins de l'exemple. Chacun d'eux a une liste de paramètres à charger.
Par exemple, le serveur de Londres peut avoir:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
, Etc.
Lorsque chaque fichier contient un ensemble de propriétés et la séquence de chargement vous permet de remplacer les propriétés, plus vous allez loin.
Par exemple: rootsettings.properties
peut avoir accessible=false
par défaut, mais est remplacé par searchengine.properties
avecaccessible=true
Le problème que j'ai avec cette structure est qu'il est très facile de devenir incontrôlable. Il n'est pas du tout structuré, ce qui signifie que vous pouvez définir n'importe quelle propriété à n'importe quel niveau et que de nombreux éléments peuvent devenir obsolètes.
De plus, changer un niveau intermédiaire devient impossible à mesure que le réseau se développe, car vous affectez maintenant un très grand nombre de serveurs.
Enfin et surtout, chaque instance individuelle peut avoir besoin d'une propriété spéciale, ce qui signifie que votre arbre se retrouve avec une configuration pour chaque serveur de toute façon, ce qui en fait une solution peu optimale.
J'apprécierais grandement si vous avez des suggestions / idées d'une meilleure architecture de gestion de configuration.