Decoupled
Decoupled
Decoupled
What is Decoupled config?
What is Decoupled config?
Configuration is externalized from the source code. No hard coded config.
Configuration is externalized from the source code. No hard coded config.
Why Decoupled config?
Why Decoupled config?
Run the same code in different environments using parameterized config.
Implement independent "code and config change" lifecycles.
Distinguish "code changes" from "config changes."
Run the same code in different environments using parameterized config.
Implement independent "code and config change" lifecycles.
Distinguish "code changes" from "config changes."
Benefits
Benefits
Isolate root causes from code changes vs config changes.
Frequently need to change config independently from code.
Enforce best practice to redeploy/restart on config change.
Isolate root causes from code changes vs config changes.
Frequently need to change config independently from code.
Enforce best practice to redeploy/restart on config change.
Examples
Examples
An application needs a tweak to run better in production, e.g., the number of threads in an application server. With decoupled config, the ops team can make the change to that config without having to go through the development lifecycle.
A multi-purpose service that can behave and serve different use cases depending on its configuration. Decoupled and externalized config allows you to quickly provision a new instantiation of this service with an alternate config. E.g., a custom data store service for which you need a new instance for each app.
An application needs a tweak to run better in production, e.g., the number of threads in an application server. With decoupled config, the ops team can make the change to that config without having to go through the development lifecycle.
A multi-purpose service that can behave and serve different use cases depending on its configuration. Decoupled and externalized config allows you to quickly provision a new instantiation of this service with an alternate config. E.g., a custom data store service for which you need a new instance for each app.