Application Configuration Management (ACM) allows you to centralize the management of application configurations. This makes for more convenient management of configurations and enhances service capabilities for such scenarios as microservices, DevOps, and big data. ACM's predecessor was Diamond, the internal configuration center for Alibaba's Taobao.
Stable and Reliable Services
Enjoy 99.99% server uptime plus clients' disaster recovery capabilities.
Push configurations to large-scale distributed environment within few seconds. Consistency guaranteed.
Easy Operations and Maintenance
Make your life easier with one-click rollback, configuration modification audit, push tracking, and more.
Isolation for Security
Secure your sensitive configurations with tenant-level isolation of configurations.
ACM acts as a configuration center for distributed systems. It provides various tools for managing configurations, including configuration modification, configuration push services, version management, phased release, and configuration modification auditing. As such, ACM helps you centrally manage configurations across all application environments. This lowers the cost of managing configurations in distributed systems and reduces the risk of unavailability or failure caused by incorrect configuration changes.
In application lifecycle management, developers usually extract some of the configuration items or metadata of the application from the code and manage them in a separate configuration file. This is known as application configuration. Application configuration is a common method of managing changes to applications. After an application is released, O&M personnel and end-users can modify the configuration to adapt its behavior as required.
Configuration Management With Microservice Architectures
In a microservice architecture, managing configurations (such as DB_URL access information, service connection pooling, internal cache sizes of services, etc.) becomes more difficult as the number of applications and machines increases. Distributing configurations across multiple machines in a single application is challenging, as is managing configuration dependencies between applications.
When applications are released in conventional architectures, modifying even one configuration item requires the whole application to be repackaged and re-released. The process is complex and error-prone, as shown in the following figure.
For ACM microservice scenarios, important information about application configurations is sent to ACM. Releasing new configurations does not require repackaging. Once the new version of the configuration is released, it immediately takes effect for all applications, as shown in the following figure.
Using ACM as a configuration center provides the following advantages for microservices:
All configurations are centralized, which makes it easier to manage the configurations of multiple applications.
All configurations are released independently, which makes it easier to change configurations flexibly.
All configurations are released independently, which makes it easier to flexibly change configurations.
Service Administration for Distributed Architectures
For various types of distributed architecture, it is vital to carry out service administration effectively, based on the chosen RPC architecture (such as RESTful, HSF, or Dubbo). Service administration functions including service routing, rate limiting, service downgrading, and service authentication can all be performed using the configuration center.
Rate limiting and service downgrading are two examples. During Alibaba's 11-11 Global Shopping Festival, operations related to rate limiting or service downgrading require a response within seconds. This is all made possible thanks to ACM.
During this process, the server of each RPC monitors the rate limiting data of the corresponding service through ACM. When an application requires rate limiting, the administrator limits the rate using the service administration console. The service administration system then pushes the rate limiting data through ACM to the target application server. This enables the corresponding configuration to limit the rate.
Using ACM has the following advantages when performing service administration in distributed architectures:
High-performance. The product monitors service administration data using a configuration push service, without compromising performance.
Fast response time. Service administration data can be pushed within seconds.
Fast error correction. If rate limiting or service downgrading data is pushed accidentally, the original configuration can be rolled back and restored within seconds.
Algorithm Adjustments for Real Time Big Data Computing
When computing big data in real time, it is generally necessary to adjust the calculation parameters dynamically to acquire the most accurate calculation results.
Alibaba Cloud’s APM monitoring system is one example. To monitor the system in real time and calculate service alarms, the monitoring system dynamically adjusts service threshold values. The threshold value must be modified in real time and without causing application downtime. The calculation threshold values of the monitoring system are pushed based on ACM rules.
Using ACM for real time big data computing, the user can dynamically configure calculation parameters, which take effect quickly and with minimal impact on performance.
The procedure for using ACM consists of three steps:
Activate the ACM service.
Use the API to monitor configurations.
For details, please see this section of the documentation: Getting Started
1. Which regions are currently supported by ACM?
The ACM console supports the following regions during the public beta period:
It’s recommended that you access your configuration through the nearest region. If ACM is not supported in your region, you can access ACM in another region by entering the correct address when initializing the ACM connection. For specific connection addresses, see the sample code found in the console.
2. What languages does the ACM client support?
Currently, the ACM client supports the following programming languages: ACM Java Native SDK, Spring Cloud ACM, and Node.js. Other languages such as C++, Python, and PHP will be supported in the future.
ACM Java Native SDK: An ACM native Java SDK.
Spring Cloud ACM: API on top of Spring Cloud Config.
ACM Node.js SDK: A Node.js native SDK that can be used to get and listening for configurations in ACM.
ACM C++ SDK: A C++ SDK that can be used to obtain configurations and listen for configuration updates.
3. What languages does ACM client support?
Exception: Caused by: java.lang.RuntimeException: fail to get diamond-server serverlist! env:default
Reason: During the public beta, the ACM Java Native SDK or Spring Cloud ACM applications must be deployed in an Alibaba Cloud classic network or a VPC network to access the ACM configuration. This is out of security and QoS considerations. The access point for public networks may be available later.