Optimising configurations @ Uber with dual store strategy
Most of the software services are driven by internal configurations. There is no one-size-fits-all solution for these configurations as they could be as simple as some basic flags to full-blown multi-page JSONs. One common pitfall across these services is that the configurations are hardcoded in the codebase as JSON, YAML files. Customizations are hard to maintain, difficult to change, and prohibitive for cross-team collaboration as they require re-deployment on the codebase for each update.
CO-Configurator acts as a centralized self-service platform with a dual storage mechanism. We get nanoseconds read latency with eventually consistent writes v/s reads over the network. This allows for a best of both worlds scenario based on the downstream service’s requirements and SLAs by also utilizing kafka notification bus to maintain the bookkeeping for all CRUD ops across configurations.
This helps us ensure a reliable experience across the Uber scale.