How to move configuration into cloud with Ajustee
Hello. My name is Richard and I’m here to introduce Ajustee. If you’re in software development, you deal with app settings or parameters management. Some of you store settings in files (web config, app config or external), others — in databases. And, if you have multiple instances or some DevOps practices like delivery pipelines, you know how challenging it can be to manage different values for multiple instances.
Ajustee is designed to fix this problem. It’s a cloud-based solution that hosts configuration parameters of your software products with an ability to pass different values for all environments, applications, tenants, or anything else. The service has a UI for managing parameters and API to accessing parameter values from your applications.
Ajustee is officially in BETA, it has all the features you need to manage configuration and, because its BETA, early adopters will get it free of charge by the end of February, 2020.
Here is an example. In this post I’ll create a new project, define couple configuration parameters and built a simple client application that uses app setting keys created earlier.
Creating a project
For starters, you need to have an Ajustee account. Enrollment is very straightforward, just fill out a form, validate your email address and that’s it. Once you have an account, you need to create a project. Projects in Ajustee are different software items. For example, Google has Search, Maps, Gmail and so many more, each of them is a separate project.
To proceed, fill out just few details, a name, description, and list of environments you want. UI has a set of pre-defined envronments for you. I’ll name mine “Demo Project”, leave description empty and keep all default environments.
Creating configuration keys
Once your project is created, you’ll see it in a left navigation menu. Each project has its own sub-menu. Open configuration. The grid is empty for now, let’s go ahead and create a new configuration key. You can pick any string value for configuration key; the only limitation is that a key should be unique within a project. Ajustee recommends using slashes to define “namespaces”. They will come handy later. For now, let’s create a simple “feature toggle” key called “myAwesomeFeature/IsEnabled” with a default value “False” — we don’t want to have a new feature enabled on production environment by default. I’ll keep rest of fields as they are now and come back to those in future posts.
I’ve added few more configuration keys:
- “myAwesomeFeature/Title”, string, “My Awesome Feature”
- ”myAwesomeFeature/Number”, number, 10
Accessing configuration keys
To access configuration keys via REST API, I’ll generate an application key on “Applications” screen. To create an app, I need to specify an environment this app will belong. Note, applications belong to environments, not projects. Each environment may have multiple applications, everyone with different settings. I’ll create a “Demo Application” in “Development” environment using default settings.
Ajustee provides a tool to test existing API keys and settings it returns. You can access it at “App Debug” screen. Open it, select an application, and hit “Get the keys” button. You see a table view of settings available for this application. You can also check a raw JSON view of return data.
Using cloud settings in an example application
As a result, we have three configuration keys and one application id. Now, let’s create a client application that will use those keys. I’ll create a simple C# Console App.
Before writing any code, let’s install Ajustee Client NuGet package. You can use terminal or UI to do that.
Once the package installed, we can start writing the code. To access cloud settings, we need AjusteeClient. To initialize it we must pass AjusteeConnectionSettings object into client constructor. Just specify API URL address, which we got from Ajustee UI and application key we have generated previously.
Once we have a settings object, we can create a client and read configuration settings. We can query all settings at once or one by one by passing configuration path into a request. I’ll read all values with one request.
That’s simple. Define connection object, create a client, and read setting values. After you get a collection of settings, you can read those one by one.
Having an ability to change configuration values easily with no direct access to database is especially important nowadays, especially when all computing moves into cloud. With containers or functions every development needs an external storage to host configuration that can be used by any number of clients.
Ajustee is a perfect place to store such values, it handles simple cases when you need to host few settings or complex solution when clients store thousands of configuration keys.
Ajustee allows to “override” values of config keys based on incoming data. I’ll cover this functionality in a next post. Feel free to subscribe to an account to get more details on the best ways to manage configuration for your products in a cloud.