Уявіть систему, яка має велику кількість серверів. Кожен з них має ряд налаштувань:
- Деякі специфічні для сервера
- Деякі специфічні для регіону
- Деякі поширені в усіх них
- Можливо, у вас можуть бути спеціальні групування, як-от ця група серверів призначена лише для читання
- тощо.
Сучасна практика, яку я маю на увазі, - це проста структура властивості, яка має переважні здібності.
Давайте візьмемо сервери Google для прикладу. Кожен з них має список налаштувань для завантаження.
Наприклад, лондонський сервер може мати:
rootsettings.properties
, europesettings.properties
, londonsettings.properties
, searchengine.properties
І т.д.
Якщо кожен файл містить набір властивостей, і послідовність завантаження дозволяє переосмислити властивості, тим далі ви йдете.
Наприклад: rootsettings.properties
може бути accessible=false
за замовчуванням, але перекриватися в searchengine.properties
сaccessible=true
Проблема, з якою у мене виникає ця структура, - це дуже легко вийти з-під контролю. Він зовсім не структурований, тобто ви можете визначити будь-яку властивість на будь-якому рівні, і багато елементів можуть застаріти.
Крім того, зміна середнього рівня стає неможливою у міру зростання мережі, оскільки зараз ви впливаєте на дуже велику кількість серверів.
І останнє, але не менш важливо, кожному окремому екземпляру може знадобитися 1 спеціальне властивість, тобто дерево у будь-якому випадку має конфігурацію для кожного сервера, що робить його не дуже оптимальним рішенням.
Я дуже вдячний, якщо у вас є якісь пропозиції / ідеї щодо кращої архітектури управління конфігурацією.