Imagina un sistema que tiene una gran cantidad de servidores. Cada uno de ellos tiene una serie de configuraciones:
- Algunos específicos del servidor
- Algunos específicos de la región
- Algunos comunes en todos ellos
- Tal vez puedas tener algunas agrupaciones personalizadas, como este grupo de servidores es solo para lectura
- etc.
La práctica actual que tengo en mente es una estructura de propiedades simple con habilidades primordiales.
Tomemos los servidores de Google para el propósito del ejemplo. Cada uno de ellos tiene una lista de configuraciones para cargar.
Por ejemplo, el servidor de Londres puede tener:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
, etc.
Cuando cada archivo contiene un conjunto de propiedades y la secuencia de carga le permite anular las propiedades, cuanto más lejos vaya.
Por ejemplo: rootsettings.properties
puede tener accessible=false
como predeterminado, pero se sobrescribe en searchengine.properties
con accessible=true
El problema que tengo con esta estructura es que es muy fácil salirse de control. No está estructurado en absoluto, lo que significa que puede definir cualquier propiedad en cualquier nivel y muchos elementos pueden quedar obsoletos.
Además, cambiar un nivel medio se vuelve imposible a medida que la red crece, ya que ahora afecta a una gran cantidad de servidores.
Por último, pero no menos importante, cada instancia individual puede necesitar 1 propiedad especial, lo que significa que su árbol termina con una configuración para cada servidor de todos modos, por lo que no es una solución muy óptima.
Le agradecería enormemente si tuviera alguna sugerencia / idea de una mejor arquitectura de administración de la configuración.