Stellen Sie sich ein System mit einer großen Anzahl von Servern vor. Jeder von ihnen hat eine Reihe von Einstellungen:
- Einige spezifisch für den Server
- Einige spezifisch für die Region
- Einige, die allen gemeinsam sind
- Möglicherweise können Sie einige benutzerdefinierte Gruppierungen festlegen, da diese Servergruppe nur zum Lesen bestimmt ist
- etc.
Die derzeitige Praxis, die ich vor Augen habe, ist eine einfache Eigenschaftsstruktur mit übergeordneten Fähigkeiten.
Nehmen wir zum Zweck des Beispiels die Google-Server. Jeder von ihnen hat eine Liste der zu ladenden Einstellungen.
Beispielsweise kann der Londoner Server Folgendes haben:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
, Usw.
Wenn jede Datei eine Reihe von Eigenschaften enthält und Sie mit der Ladereihenfolge Eigenschaften überschreiben können, müssen Sie weitere Schritte ausführen.
Zum Beispiel: rootsettings.properties
kann accessible=false
als Standard, ist aber außer Kraft gesetzt in searchengine.properties
mitaccessible=true
Das Problem, das ich mit dieser Struktur habe, ist, dass es sehr leicht ist, außer Kontrolle zu geraten. Es ist überhaupt nicht strukturiert, dh Sie können jede Eigenschaft auf jeder Ebene definieren und viele Elemente können veraltet sein.
Außerdem wird das Ändern einer mittleren Ebene unmöglich, wenn das Netzwerk wächst, da Sie jetzt eine sehr große Anzahl von Servern betreffen.
Zu guter Letzt benötigt jede einzelne Instanz möglicherweise eine spezielle Eigenschaft, was bedeutet, dass Ihr Baum sowieso eine Konfiguration für jeden Server hat, was die Lösung nicht optimal macht.
Ich würde mich sehr freuen, wenn Sie Vorschläge / Ideen für eine bessere Konfigurationsmanagement-Architektur haben.