This topic describes the terms related to configuration management.
When developers develop a system, they usually extract some parameters or variables that need to be modified from the code and save the parameters in a separate configuration file. This enables the static system artifacts or deliverables such as WAR and JAR packages to better fit with the physical operational environment. Configuration management is usually a part of system deployment. System administrators or O&M engineers are in charge of configuration management. Configuration modification is an efficient way to adjust the behavior of a system that is running.
Configuration management refers to all activities that are related to configurations. These activities include modifying, storing, and distributing configurations, managing updates, controlling versions, and auditing modifications.
Dynamic configuration and static configuration
System configurations can be static or dynamic.
- Static configuration: The version of the configuration is bound to the version of the software.
- Dynamic configuration: The configuration can be modified as many times as needed when the software of a specific version is deployed and running.
For example, the
build-version: 1.0.0 configuration is static because it is bound to the version of the software. The configuration
that defines the size of the thread pool is dynamic because the configuration can
be modified as many times as needed when the software is running.
The configuration management system usually needs to distribute configuration updates to other relevant systems. Configuration push refers to the procedure from when the configuration updates are distributed to when the configuration updates are applied.
Push tracking is a process that is used to track how configuration updates are submitted, pushed, and applied. Push tracking allows you to find the applications and machines where a configuration update is applied, when the configuration update is applied, and the impacts of the update.
Your software systems can register listeners in the configuration management system by using SDKs or other methods to monitor and apply configuration updates.
A configuration item refers to a configurable parameter with its value range. A configuration
item is typically expressed in the param-key=param-value format. For example, the
logLevel=INFO|WARN|ERROR configuration that is used to specify the level of the printed log entries is a configuration
A configuration set is a set of configuration items. These configuration items can be correlated or not. A system configuration file is usually considered a configuration set. The file contains configurations that are related to the system. For example, a configuration set may contain configuration items such as data sources, thread pools, and log levels.
Data IDs in the configuration management system are IDs of configuration sets. Data
ID is one of the dimensions in which configurations are organized. In most cases,
data IDs are used to classify system configuration sets. A system or application can
have multiple configuration sets. You can identify these configuration sets by assigning
an informative name to each of them. Data IDs usually use a naming convention similar
to that for Java packages, such as
com.taobao.tc.refund.log.level to ensure global uniqueness. The naming convention is not mandatory.
In the configuration management system, configuration sets can be classified into groups. Group is one of the dimensions in which configurations are organized. Typically, informative strings, such as "Buy" and "Trade", are used as group names to classify configuration sets. You can use groups to distinguish configuration sets that have the same data ID. When you create a configuration, if you do not specify a group name, DEFAULT_GROUP is used. Groups are applicable to scenarios where configurations of the same type are applied to different applications or components, such as the database_url and MQ_topic configurations.
Namespaces are used to isolate configurations by tenant. Different namespaces can contain configurations that belong to the same group or use the same data ID. Namespaces are applicable to scenarios where you want to isolate configurations of different environments. For example, you want to isolate the configurations of the staging environment from those of the production environment.
The configuration management client SDK automatically creates configuration snapshots on your on-premises machine. You can use configuration snapshots to recover the system when the client cannot connect to the configuration management server. Configuration snapshots are similar to local commits in Git or cache. Cache is updated at an appropriate time. However, unlike cache, configuration snapshots do not expire.