Imagine um sistema que tenha um grande número de servidores. Cada um deles tem várias configurações:
- Alguns específicos para o servidor
- Alguns específicos para a região
- Alguns comuns em todos eles
- Talvez você possa ter alguns agrupamentos personalizados, como este grupo de servidores apenas para leitura
- etc.
A prática atual que tenho em mente é uma estrutura de propriedades simples com habilidades primordiais.
Vamos usar os servidores do Google para os fins do exemplo. Cada um deles tem uma lista de configurações para carregar.
Por exemplo, o servidor de Londres pode ter:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
, Etc.
Onde cada arquivo contém um conjunto de propriedades e a sequência de carregamento permite substituir propriedades, quanto mais você avançar.
Por exemplo: rootsettings.properties
pode ter accessible=false
como padrão, mas é substituído searchengine.properties
poraccessible=true
O problema que estou tendo com essa estrutura é que é muito fácil sair do controle. Ele não está estruturado, o que significa que você pode definir qualquer propriedade em qualquer nível e muitos itens podem se tornar obsoletos.
Além disso, a alteração do nível intermediário torna-se impossível à medida que a rede cresce, pois agora você afeta um número muito grande de servidores.
Por último, mas não menos importante, cada instância individual pode precisar de 1 propriedade especial, o que significa que sua árvore acaba com uma configuração para cada servidor, tornando a solução não muito ideal.
Eu apreciaria muito se você tiver alguma sugestão / idéia de uma melhor arquitetura de gerenciamento de configuração.