URI Driven Configuration
Highly configurable software uses centralized URI based key configuration points to dynamically configure applications at startup. A URI based configuration point is a key value pair where the key is the URI, and the value is the data returned. Highly configurable software calls for these URI based configuration points to be centralized, through a Service Oriented Architecture (SOA), so that each application’s configuration will be loaded from the centralized service. A centralized configuration service increases configuration sharing across projects, environments, organizations and even 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 above for more information.
We suggest highly configurable software incorporate Hierarchical Properties 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 properties 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). In conclusion, highly configurable software achieves the best of both worlds when combining URI based properties with hierarchical properties. URI based key configuration points allow applications to pick up new changes during an application restart, while hierarchical properties provide self-resolving, unique configuration across the enterprise. The next trend in highly configurable software is configuration sharing across organizations, product teams, and products. This centralization and broader configuration sharing is discussed in detail as part of our next article, Classifying Configuration Points.