I'm employee in IT company the offers a solution for many customers, there are about 100 sites build on the top of our product code and all of them are hosted in the company DC.
The thing is we have a long hierarchy of XML configurations that used for each site to set different variables that enable/disable features, pass values there and a lot of other usages, the hierarchy is something like the top parent one for default values of all XML, then another XML for the sites in specific env, then the site itself, (Actually it's longer than so).
We have customized registry module to read this config and hierarchy, each site query any config by using that module and passing XPATH for the aimed feature and assign it to variables there , but the problem is the config are getting increase more and more, for now the final set of config for most of the sites exceed 500 values, not to mentioned that any change on XML required the product to be restarted to get the config again be because they are loaded at initialization time.
I need to know if any other has faced this situation to know if there is a better solution to handle this since the tree of XML is very complicated right now and I need to come up with better solution,especially the DevOps team do that frequent configuration changes since the XML files for different env in the DC are DevOps responsibility.
Is there any existent tool for such problem?
If no, then I have an idea to do so.
My idea now is to separate the config to set of features each feature has its own json object with set of related values. Will take out the registry module from the product code and create nodejs API that the site read from its config for each feature. The API will let the developers create new feature json config and set the types of each value there. The AM will see the feature created by developers and set the config there to enable/disable or assign any other values there.
So for so good, but that is milestone change and it's in the platform level, so I need to know:
any has experienced this situation before and how they handled it if there was? Can anyone give me his opinion about what I proposed above?