While we were moving towards the Microservices path at Goodvidio, we were in the need of keeping in a central place the configuration of our system. Thus, we created the Configuration Service.

The Configuration Service exposes a REST API (like all of our services) and provides a place to store configuration variables and values to all of our developers. Each Service of our infrastructure can have a record stored in the Configuration Service. Those records will then be consumed and manipulated by a front end screen, so that even non technical people can alter their values.

As a developer that I am working in a feature and I want to make use of the Configuration Service, I must first make sure that there isn't already a record for the Service that I work on and if there isn't I have to create it.

GET /v1/configurations/ONBOARDING

If the above call return an empty array, I can create it by POSTing a body:

{
  "_id": "ONBOARDING",
  "configuration": {
    "free_trial_duration" : "43800"
  }
}

This way we keep all the configuration of our System in a central place and even the marketing team can decide some day to change the duration of the free trial period.

That means fewer deployments, thus faster involvement.