Azure App Configuration
Centralize application settings and feature flags with Azure App Configuration.
A Simple Analogy
Azure App Configuration is like a master control panel. Instead of scattered switches throughout a building, all controls are in one place. You can flip switches (feature flags), adjust dials (settings), and see everything at once without restarting the building.
What Is Azure App Configuration?
Azure App Configuration is a service that centralizes application settings and feature flags. It lets you manage configuration without redeploying code, enabling dynamic updates and A/B testing.
Why Use App Configuration?
- Centralized management: All settings in one place
- Dynamic updates: Change settings without redeploying
- Feature flags: Gradually roll out features
- Environment separation: Different configs for dev/staging/prod
- Version control: Track configuration history
- Integration: Works with Key Vault for secrets
Core Concepts
| Concept | Purpose | |---------|---------| | Key-Values | Simple configuration settings | | Feature Flags | Toggle features on/off dynamically | | Environments | Separate configs per deployment stage |
ASP.NET Core Setup
var builder = WebApplication.CreateBuilder(args);
// Add App Configuration
var settings = builder.Configuration;
var appConfigConnection = settings["AppConfig:Connection"];
builder.Configuration.AddAzureAppConfiguration(options =>
{
options.Connect(appConfigConnection)
.ConfigureKeyVaultSecrets(c =>
c.SetCredential(new DefaultAzureCredential()));
});
var app = builder.Build();
Using Key-Values
// In appsettings.json or App Configuration:
{
"AppName": "MyApp",
"Features:NewDashboard": "true",
"Logging:Level": "Information"
}
// In code:
public class HomeController : ControllerBase
{
private readonly IConfiguration _config;
public HomeController(IConfiguration config)
{
_config = config;
}
public string GetSettings()
{
var appName = _config["AppName"];
var level = _config["Logging:Level"];
return $"{appName} - {level}";
}
}
Feature Flags
// Define feature flags
public enum Features
{
NewCheckout,
BetaDashboard,
AnalyticsV2
}
public class FeatureService
{
private readonly IFeatureManager _featureManager;
public FeatureService(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
public async Task<bool> IsFeatureEnabledAsync(Features feature)
{
return await _featureManager.IsEnabledAsync(feature.ToString());
}
}
// Usage
if (await featureService.IsFeatureEnabledAsync(Features.NewCheckout))
{
// Show new checkout flow
}
Real-World Scenario
// A/B testing new feature
var isNewUiEnabled = await _config.IsEnabledAsync("UI:NewVersion");
if (isNewUiEnabled)
{
return View("NewCheckout.cshtml");
}
return View("LegacyCheckout.cshtml");
// Later: Enable for 50% of users, then 100%, then disable
// No code changes, no redeployment
Related Concepts to Explore
- Feature Management library
- Integration with Key Vault
- Configuration inheritance and overrides
- JSON configuration files
Summary
Azure App Configuration enables dynamic configuration management and feature flags without code changes. Use it to decouple settings from deployments and gradually roll out features with confidence.