Safe configuration changes in production are viable with Ajustee

Ajustee
5 min readJun 30, 2021

Configuration changes are challenging, especially in production environments. Just remember, how many times you have faced a problem when your product doesn’t start after you have changed something in app config. But this is in the past now, since Ajustee allows to change settings in production with no app restarts in safe and reliable way.

It is common in development languages to use numbers instead of words to describe predefined set of options — called enumerations. That is because that numbers consume less memory than regular characters. So, let’s take for example, Level of Logging within a solution — which would be described as a number instead of word.

Microsoft .NET offers seven different log levels; each has its own name and associated numeric value. Developers, based on personal preferences, may write a code that expects this configuration option to be in just name, just numeric value, or can support both. To make things even more complex, in case of name option, is it case sensitive or not? Can you write “error” instead of “Error”? Does system take case of leading or following blank spaces in configuration “ error” or “error ”?

Now, imagine you having troubles on production environment and current log level is low for you to understand details. So, you must increase it, but main developer, who knows how to do it is on vacation enjoying Mai Tai. For you to change the log level, you have to get access to production environment, open that file or database, find settings section, locate config key and update that value. The tricky part is if you use an incorrect value, system won’t start — meaning you’re not only haven’t fixed the issue with log levels but completely stopped production environment. You don’t want this to happen. So, to avoid this situation, your team may prioritize and allocate some resources to build admin forms to make such changes. That would eliminate the need to access production environment directly or fail it. But it does take dev team resources that ideally should be spend working on addressing business cases.

Development resources should be spent on addressing business cases and not wasted on creating common functionality.

Ajustee offers easy to follow user friendly configuration forms that don’t require any development. Any team member can use intuitive console access to create a configuration form, choose configs to edit and describe the experience. Instead of free text entry that accepts everything, you can build a form that displays a drop down with supported options — which eliminates human factor and production failures because of invalid config changes. It’s easy to create such form using the same example with Log Level setting.

First, we need to ensure we have such config key. In my settings, this is a config key with “string” data type — meaning it can accept any characters.

Example of “LogLevel” configuration option, declared as string value.

Now, let’s open “Forms” menu item for a project and create a new form by hitting “Add new form” button. After you fill in form name and optional description, add a config key to that form. In addition to config keys, there is another option to add a paragraph. Those are useful if you want to add more context for admin users on how a setting works.

Creating config forms with Ajustee

Once form has been created, any user can go to “Edit keys” menu item to start editing config values. You can see what this form does and helpful details on logic behind a configuration option. Drop down has support only set of values so there is no way for user to break something by editing setting values using this form.

Example of configuration form that controls Log level setting for a system.

Different data types have different options to render an edit element. “String” config keys may be rendered as regular text entry with optional validation rules like email or URL address, or a regex to match your use case; as multiline text entry that highlights JSON, XML or HTML within an editor; as drop down of radio button lists with predefined option. “Numeric” config keys may be rendered as simple numeric entry field; as slider with min/max value; as drop down with set of predefined options. Specific config data types as “Boolean” or “Secret” have only one option to be rendered as toggles or secret fields, respectively.

Examples of different render options for config keys with different data types.

Ajustee console allows user to choose an environment to change a value. If it’s “Global”, a form changes default value within a project itself.

Example of form scope selection to apply values.

User may also choose an environment or an override to change value for all users within that environment or a subset of users that match override rules.

Ajustee “Forms” is an effortless but safe way to create configuration forms around existing raw config keys. Each field supports extra validation to ensure that only proper values are saved. With multiple config forms per project, you can create your own configuration experience. Create different forms for Tech Support, Marketing and Product teams to ensure they got access to most important settings with no distraction.

Editing values via forms trigger are the same events as editing values in raw view, meaning that you still get Slack notifications, change events in Web Sockets and full train within Audit.

Ajustee is a cloud-based software configuration and management solution. Ajustee deals with issues caused by common config storage solution list files or database: edits are error-prone, direct access to config files or database is unsecure, rigid configuration or application’s downtime to apply changes. By simple change in your code, you get:

  • Real time configuration changes with no downtime
  • Dynamic targeted setting values to support multi-tenancy, text localization and experimentation
  • Automatic audit log, backups, and rollbacks of configuration changes
  • Safe configuration changes in production with user-friendly forms

--

--

Ajustee

Centralized Application Configuration Storage & Management Solution — https://ajustee.com