17
Why it’s important to move configuration to cloud.
Every software product has settings. Those can have many forms and types. Some settings are sensitive security keys, like database connection string, an API subscription key or push notifications endpoints. Others are business settings that relate to particular use cases, like amount of processing items per batch, supported data types, or communication settings, like email server settings. There are UI related settings like URLs to logos, fonts, and colors. Even text within an app may be considered as a setting, especially if application supports multiple localizations. Feature toggles are also popular configuration keys that can modify system behavior without changing code.
A feature toggle is a technique in software development that attempts to provide an alternative to maintaining multiple branches in source code, such that a software feature can be tested even before it is completed and ready for release. A feature toggle is used to hide, enable, or disable the feature during runtime.
Feature toggle — Wikipedia
Let’s look on the example below. It’s a simple web app that returns weather current conditions & forecasts. Entire application fits into shy thirty lines of code, including comments.
The code is simple, just look closer to line 9, the app reads sensitive configuration key from a config file. At line 8 there is an URL address to original weather REST API where app takes the data. This should be moved to settings. As a result, there are thirty lines of code and several places where application reads configuration values.
Each company deals with configuration storage separately. Some companies store settings in code or config files like app\web configs, others store settings in database. All those options have severe limitations. Settings stored in source code is build type configuration that requires to recompile & redeploy application to apply changes, configs in files are runtime but require access to hosting machine and application restart — which is a security issue and bad user experience. Settings stored in database are more dynamic, changes can be applied in runtime with no application restarts, but still require access to database and compromise security — to address that companies develop admin UI that executed CRUD operations.
With modern ways to develop software and continuous delivery practices, software businesses must be very flexible and support real time configuration changes.
- retrieve single configuration key, subset of keys or entire configuration set
- set up default values for entire product, plus different values for environments
- override config values for a subset of users based on myriad of application parameters, including percentage redirect & schedule
- build setting forms with rich data validation rules to ensure there are no typos or other human errors that easy to make and difficult to troubleshoot
- automated audit log to review who has accessed the system or what operations have been performed
- automatic scheduled backups to restore to previous configuration sets at any time
- retrieve slack notifications every time there is a change in configuration values
- Secure access to settings based on IP addresses and configuration namespaces
- Secure access to web console with two-factor authentication and IP address restrictions
This article was first published on Medium
Visit Ajustee Blog for more articles on how to manage configuration.
17