URI Driven Configuration
Automated Deployments empower teams to eliminate errors and streamline their builds, and Highly Configurable Software uses centralized URI based key configuration points (KCPs) to ensure maintainability after deployment. A URI based configuration point is a key value pair where the key is the URI, and the value is the data returned. In Highly Configurable Software, these URI based configuration points must be centralized, through a Service Oriented Architecture (SOA), in order to increase configuration sharing across projects, environments, organizations and between organizations.
Similarly, The Spring Foundation has created an implementation of this design through their Spring Cloud Config project. This project allows the URI based key configuration points to be stored in a remote service and accessed via REST URI endpoints. Please see the Spring Cloud Config project pages for more information.
In addition to URI based configuration points, highly configurable software must incorporate Hierarchical Key Configuration Points within a similar centralized configuration service to further improve this model for complex environments. The hierarchy determines the default values across each environment. The combination of URI base key configuration points and hierarchical key configuration points produces the most efficient and effective software configuration model seen to date.
Using this approach, applications scale horizontally with minimal configuration. Every application points to the centralized service for its configuration at startup, easily enabling Automated Deployments. Furthermore, a simple application restart can update any currently running application with new configuration; thus eliminating the need for new builds and deployments to change configuration(s). As an example, Spring Cloud Config allows for dynamic remote restart of the application after a KCP has been changed. This also solves the problem where KCPs must be managed during post deployment. These after-automation manipulations tend not to be stored using any configuration management, which can lead to further error. By keeping all configuration changes centralized, and removing the need for post deployment tweaks per environment, Highly Configurable Software leverages automation in conjunction with the configuration service to remove this obstacle and remove additional configuration headaches.
With URI based and hierarchical configuration points, Highly Configurable Software achieves the best of both worlds. URI based key configuration points allow applications to pick up new changes during an application restart, while hierarchical configuration points provide self-resolving, unique configuration across the enterprise. By leveraging automation with URI based configuration points, Highly Configurable Software continues to push applications to their configurable limits.