Immagina un sistema con un numero elevato di server. Ognuno di questi ha un numero di impostazioni:
- Alcuni specifici per il server
- Alcuni specifici per la regione
- Alcuni comuni tra tutti loro
- Forse puoi avere alcuni raggruppamenti personalizzati, come questo gruppo di server è solo per la lettura
- ecc.
La pratica corrente che ho in mente è una semplice struttura di proprietà con capacità di override.
Consente di utilizzare i server di Google per lo scopo dell'esempio. Ognuno di loro ha un elenco di impostazioni da caricare.
Ad esempio, il server di Londra potrebbe avere:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
, ecc.
Dove ogni file contiene un insieme di proprietà e la sequenza di caricamento ti consente di ignorare le proprietà, più vai avanti.
Ad esempio: rootsettings.properties
può avere accessible=false
come valore predefinito, ma è sovrascritto in searchengine.properties
con accessible=true
Il problema che sto avendo con questa struttura è che è molto facile andare fuori controllo. Non è affatto strutturato, il che significa che è possibile definire qualsiasi proprietà a qualsiasi livello e molti elementi possono diventare obsoleti.
Inoltre, la modifica di un livello intermedio diventa impossibile con l'aumentare della rete, poiché ora influisce su un numero molto elevato di server.
Ultimo ma non meno importante, ogni singola istanza potrebbe aver bisogno di 1 proprietà speciale, il che significa che il tuo albero finisce con una configurazione per ogni server, il che lo rende una soluzione non ottimale.
Apprezzerei molto se avessi suggerimenti / idee su una migliore architettura di gestione della configurazione.