How We Unified Configuration Distribution Across Systems at Uber

Ahmed Magdy, Jacob Damgaard
12 min readintermediate
--
View Original

Overview

This article discusses how Uber unified its configuration distribution across various systems through the Unified Configuration Distribution Platform (UCDP). It highlights the challenges faced with existing systems and the efficiencies gained by consolidating multiple distribution pipelines into a single, push-based architecture.

What You'll Learn

1

How to implement a unified configuration distribution system using UCDP

2

Why push-based distribution improves scalability in configuration management

3

When to apply incremental rollout strategies for configuration changes

Prerequisites & Requirements

  • Understanding of configuration management concepts
  • Experience with distributed systems(optional)

Key Questions Answered

What are the main issues with existing configuration distribution pipelines?
The existing configuration distribution pipelines at Uber faced several issues including scalability due to pull-based mechanisms, high resource consumption from multiple pipelines, lack of propagation latency guarantees, and inadequate support for incremental rollouts. These challenges necessitated a unified approach to streamline operations.
How does the UCDP improve configuration distribution efficiency?
The Unified Configuration Distribution Platform (UCDP) improves efficiency by consolidating multiple distribution pipelines into a single push-based system, reducing network load by approximately 25% and significantly decreasing configuration propagation latency. This allows for faster and more reliable configuration updates across Uber's infrastructure.
What is the architecture of the UCDP?
The UCDP architecture consists of three layers: global, zonal, and host. The global layer manages the API for configuration updates, the zonal layer distributes updates to specific availability zones, and the host layer manages the workloads that consume the configurations, ensuring efficient data handling.
What measures are in place to isolate stakeholders in UCDP?
To prevent any single stakeholder from overloading the system, UCDP implements several isolation measures, including a rate limiter to control excessive load, an outbound data limiter to manage data flow, and a structured approach to Zookeeper nodes to ensure stability and performance across different configuration domains.

Key Statistics & Figures

Number of hosts running UCDP
150,000+
This scale demonstrates the extensive infrastructure that UCDP supports.
Weekly configuration deploys
400,000+
This high frequency of updates illustrates the dynamic nature of Uber's configuration management needs.
Data distributed weekly
350TiB
This statistic highlights the significant volume of configuration data handled by the UCDP.
Configuration domains stored
277
This indicates the complexity and variety of configurations managed within the system.
Configuration namespaces
71,000
This reflects the granularity of configuration management at Uber.

Technologies & Tools

Backend
Apache Zookeeper
Used for coordinating goalstate updates between distributor instances.

Key Actionable Insights

1
Implement a push-based configuration distribution system to enhance scalability and reduce network load.
Transitioning from pull-based to push-based systems can significantly alleviate network saturation issues, especially in large-scale environments like Uber, where configuration changes are frequent.
2
Utilize incremental rollout strategies to minimize risk during configuration updates.
By allowing changes to be distributed gradually, teams can monitor the impact of configurations on system performance and user experience, reducing the likelihood of widespread issues.
3
Incorporate caching mechanisms to improve startup times for services.
Caching configuration data on disk can drastically reduce the time it takes for services to become operational after restarts, enhancing overall system reliability and availability.

Common Pitfalls

1
Failing to implement proper isolation measures can lead to performance degradation.
Without safeguards like rate limiters, a single stakeholder's actions could overwhelm the system, affecting all users. It's crucial to design systems that can handle high loads without compromising overall performance.

Related Concepts

Configuration Management
Distributed Systems
Microservices Architecture