In order to simplify, streamline, and robustify keeping configuration information up to date on thousands of disparate and separately managed servers, we've created a client/server configuration distribution system. This page gives an overview of the system, and describes how you can use it to make sure your configs are up to date across all clients.

The system consists of two decoupled pieces - the configuration servers, and a client library. The configuration servers expose a simple HTTP RESTesque API, which allows for consumption of configuration information by any client. In order to meet the known needs of existing MySpace servers and allow for easy adoption, we have also created a .Net client library.

The servers have the ability to read configuration files from their local file system or other sources via a plugin interface, as well as being able to give clients different configuration information depending on their IP address. The latter allows us to define environments so that a single config server installation can provide data for different stages of deployment, or give a particular set of servers a different configuration than the default.

Both the server and the client cache the configs they've received, which prevents one part of the system having downtime from affecting any of the others. The server also allows for providing a hash when requesting a section, so that if a client already has a copy it can simply check to see if it up to date.

For more information, please see the respective pages for

There are still a few sections which need to be completed or fleshed out, and there are certainly aspects of the system which deserve documentation which are not mentioned here. Specific questions about things that are unclear are always appreciated, and answers given will certainly be added here! A list of things that we know need doing is on the To Do page.

Last edited May 24, 2011 at 10:49 PM by eriknelson, version 8


No comments yet.