In my organization we have a micro-services architecture. Up until now, it was fairly easy to manage and work with as the configurations are rather limited, and often independent of specific tenant (we have multi-tenant system).
But recently the number of tenant specific configuration has steadily increased and we need a central service to manage all the configurations specific to each client per service.
For example, a client can have a configuration for minimum number of tokens after which classification triggers. It might be 2 for tenant A or 4+ for tenant B.
What I am looking for is if there is already an available system, which people use in production, capable enough to handle generic types of configuration? The configurations can be complex JSON structures, YAML files or something similar (note: we are willing to write the layer for transformation), java properties files, ini files etc.
We have already considered zookeeper, etcd, consul etc. as an agent and a wrapper on top of it, but we might have to store some data as well, which would cause performance issue, and overall it is not useful in our case.
We have built something in-house for managing tenant configurations very similar to what you have described. It does layering and overrides, and there's a client that attaches to applications and picks up config changes dynamically. So no restarts are required when you change configurations.
I've been looking for out of the box solutions for the same and found Spring Cloud Config. Check it out. cloud.spring.io/spring-cloud-config
Check out Tweek. We use it for feature flags/AB tests but it can be used for the scenario you are describing.
I haven't tested everything so this is a biased answer, but I used Consul (and am slowly introducing it in my new company) to centralize and manage configs and it's always a pleasure to work with this. (In a Kubernetes world, I used Helm to inject config from templates and that was also really nice, but different flows).
I don't remember the max size for records of the Consul key value store, but it can store pretty much any config (I used it mostly for Json, ini and NGINX templates, which are just text files).
I am not 100% sure, but I have heard good things about Terraform. Do you think it will fit your needs?
Zortos
Hello After 4+ years could you please share your findings and opinions?
We are also looking for a solution for "Configuration as a service" for several microservices. Very new to this topic. What are the most modern solutions?