I see all the articles and the trend to move to SOA/microservices, but I don't see anything related to how architectures provide app config and account data to components. To get our company to market, each app has its own config, we have duplicated account data and different formats everywhere. We are starting to design our central config system and was looking to get ideas on how others do this.
We are looking at the various database solutions and trying to decide between relational databases or NoSQL ones. Something like Redis seems great and we could make it fit our model and the API is simple (95% of our code is C) but it lacks querying/filtering.
Do architectures typically have a storage layer component? This seems valid to me for relational database, SQL queries spread all over seems muddy.
Some of our main requirements:
- Audit log of config changes
- Simple API from C (REST/JSON api is do-able)
- (Fine grain) notification of config changes, i.e. account 4 deposit limit has changed
- Overriding config on a specific server would be cool
- Highly available
Configuration data we will be holding:
- account data (very low count, < 50 accounts)
- ~25 properties per account
- sub-accounts do exist and need to "link" back to the parent account
- app config (various app specific flags, IP addresses etc..)
We started ours as just a config document stored in the NoSQL db, but found using a service like etcd or zookeeper is way better. This is especially true as the number of services increases and the complexity of configuration goes up.