Server-side remote config
Server-side remote config means backend services read runtime values from a configuration service instead of hardcoding everything into deploy-time environment variables.
Nona is a strong fit for server-side remote config because it is:
- self-hosted
- plain HTTP accessible
- usable from backend services without a mobile SDK
- able to separate server-only values through scope
Good server-side remote config use cases
Section titled “Good server-side remote config use cases”Examples:
- feature flags for backend routes
- operational thresholds
- rollout gates for new implementations
- service behavior toggles
- JSON settings for modules or workers
Why backend teams use it
Section titled “Why backend teams use it”Server-side remote config helps when:
- a value needs to change without a redeploy
- production and staging should behave differently
- one service needs both feature flags and broader runtime settings
- operators need rollback and auditability for config changes
Why Nona fits the backend model
Section titled “Why Nona fits the backend model”Nona keeps the model simple:
- one project per app or service boundary
- one or more environments
- config entries with content types
serverscope for backend-only values- API keys that can be scoped narrowly
That gives backend teams a straightforward operating model without forcing them into a larger hosted platform.
Recommended patterns
Section titled “Recommended patterns”- use
serverscope for backend-only values - use
booleanentries for flags and kill switches - use
numberandjsonfor operational settings - keep environments aligned with real deployment stages
- scope keys to the environment they actually need
How to create the values
Section titled “How to create the values”In admin:
- open
Projects - open the backend service project
- select the target environment
- click
Add Parameter - create values such as
Features:UseLegacySearch,Limits:MaxItems, orApp:Settings - choose
serverscope
With the CLI:
nona entries set \ --project payments-api \ --environment production \ --key Limits:MaxItems \ --value 50 \ --scope server \ --content-type numberHow a backend reads the values
Section titled “How a backend reads the values”In .NET:
using Nona.Client;using System.Globalization;
using var client = new NonaClient( "https://nona.example.com", "production", apiKey: Environment.GetEnvironmentVariable("NONA_API_KEY"));
var maxItemsValue = await client.GetConfigValueAsync("Limits:MaxItems");var maxItems = int.Parse(maxItemsValue.Value, CultureInfo.InvariantCulture);For a full JSON example, see .NET client.
If the service is not in .NET, the same values can be fetched with HTTP.
Operating model
Section titled “Operating model”A practical backend remote-config flow looks like this:
- keep sensitive runtime values on
serverscope - read only the values the service actually needs
- verify one production-safe read path before widening usage
- use history and rollback when an operational change goes wrong
Related docs
Section titled “Related docs”What is server-side remote config?
Section titled “What is server-side remote config?”It means backend services read runtime values from a configuration service instead of hardcoding everything into deploy-time settings.
Should backend remote config use server scope?
Section titled “Should backend remote config use server scope?”Usually yes.
Backend-only values should stay on server scope whenever possible.
What is a good first server-side remote-config value?
Section titled “What is a good first server-side remote-config value?”A threshold such as Limits:MaxItems or a boolean flag such as Features:UseLegacySearch is usually a strong first example.
Why is Nona a good fit for server-side remote config?
Section titled “Why is Nona a good fit for server-side remote config?”Because it is self-hosted, plain HTTP accessible, and designed to separate server-only values clearly.