Reputation: 4338
If you are building a large cloud based platform, you will have so many different modules/components within that platform. This ranges from web service configurations (address, ports,...) to domain specific configurations for every component that you have. One can configure such system by giving every component in the system a tockenized config file and then have a big tocken resolving file for the entire platform. This gets messy in no time!
I was thinking that maybe a better approach to centralize the whole platform configuration into a web service as the central configuration system for the platform and then every component in the system come to this web service and request their configuration settings by providing their id or a unique config name.
I even think that such configuration must be type safe so that all the system component refer to their desired configuration explicitly vs a key-value way approach.
Another important feature of this central configuration system should be the ability to make configuration values dependent on the server side so that I would be able to say
component1Config.LogServiceAddress = someMasterConfig.Address;
at the server side. So only the central configuration system knows about the above logic and component1 simply gets a value for its LogServiceAddress without knowing how that was resolved by the central configuration system.
My question is, does such central configuration system already exist? Is there any open source software out there providing such central configuration system capabilities?
Upvotes: 2
Views: 573
Reputation: 4407
Chef/Puppet are the standard ways to centralize provisioning of multiple stacks on various machines. The central server can bring up remote nodes, and then push required stack on that machine. While I have seen usage of same for provisioning of software, I think it very well can be extended to fulfill your needs!
Upvotes: 1
Reputation: 374
Make a service and when a service announces, it adds to the list of services. Use Metadata to serve up configuration settings and such.
To be fair, there is also Mono.Zeroconf which requires bonjour(apple).
Upvotes: 0