Immagina un sistema che ha un gran numero di server. Ognuno di loro ha una serie di impostazioni:
- Alcuni specifici per il server
- Alcuni specifici per la regione
- Alcuni comuni a tutti loro
- Forse puoi avere alcuni raggruppamenti personalizzati, come questo gruppo di server è di sola lettura
- eccetera.
La pratica corrente che ho in mente è una struttura di proprietà semplice con abilità prevalenti.
Prendiamo i server di Google ai fini dell'esempio. Ognuno di essi ha un elenco di impostazioni da caricare.
Ad esempio, il server di Londra potrebbe avere:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
, Etc.
Laddove ogni file contiene un set di proprietà e la sequenza di caricamento consente di sovrascrivere le proprietà, più si procede.
Ad esempio: rootsettings.properties
può avere accessible=false
come impostazione predefinita, ma viene sostituito searchengine.properties
conaccessible=true
Il problema che sto riscontrando con questa struttura è che è molto facile sfuggire al controllo. Non è affatto strutturato, il che significa che puoi definire qualsiasi proprietà a qualsiasi livello e molti articoli possono diventare obsoleti.
Inoltre, la modifica di un livello intermedio diventa impossibile man mano che la rete cresce, poiché ora si influenza 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 comunque con una configurazione per ciascun server, rendendola una soluzione non molto ottimale.
Gradirei molto se avessi suggerimenti / idee per una migliore architettura di gestione della configurazione.