In een industrie waar snelle, betrouwbare en iteratieve ontwikkelingscycli het succes bepalen, is de mogelijkheid om software te implementeren terwijl de risico’s geminimaliseerd worden van onschatbare waarde. Feature flags zijn een essentieel onderdeel geworden van de moderne toolkit van ontwikkelaars, en bieden een flexibele benadering voor het dynamisch in- en uitschakelen van functies.
Laten we eens kijken naar hoe het Microsoft .NET team, in combinatie met Azure, nieuwe functie-releases efficiënt beheert zonder terug te vallen (heruitrollen) in het geval van regressies.
De uitdagingen bij traditioneel functiebeheer
Handmatig functies beheren was altijd een pijnpunt voor ontwikkelaars. Hardcoderen of afhankelijk zijn van lokale configuratiebestanden wordt moeilijk te beheren in complexe omgevingen. Deze benadering introduceert vaak uitdagingen zoals:
- Schaalbaarheidsproblemen: Het is moeilijk om consistentie te behouden over meerdere omgevingen zoals ontwikkeling, staging en productie, en het leidt vaak tot configuratieafwijkingen.
- Implementatie-afhankelijkheid: Het wijzigen van functie-staten vereist heruitrol, wat de downtime en operationele risico’s verhoogt.
- Beperkte controle: Basisopstellingen missen geavanceerde targeting of de mogelijkheid om uitrol geleidelijk te beheren.
De oplossing van Azure: Een uniforme benadering
Azure Feature Management vereenvoudigt deze uitdagingen door een gecentraliseerd systeem te bieden dat naadloos integreert met .NET 8 en hoger. Dit robuuste kader zorgt ervoor dat ontwikkelaars zich kunnen concentreren op innovatie terwijl ze de controle over de levenscyclus van functies behouden.
Wat maakt het bijzonder?
- Dynamische configuratie: Wijzig de status van functies on-the-fly zonder de codebasis aan te raken en geen herimplementaties meer.
- Granulaire targeting: Richt functies op specifieke gebruikerssegmenten op basis van geografische locaties of pas zelfs aangepaste regels toe.
- Naadloos schalen: Ontworpen voor gedistribueerde systemen en microservices, waardoor het perfect geschikt is voor cloud-native applicaties.
Stapsgewijze handleiding voor het implementeren van feature flags
1. Azure App Configuration instellen
Begin met het maken van een gecentraliseerde configuratiebron in Azure:
- Navigeer naar het Azure-portaal en selecteer de App Configuration-bron.
- Maak een App Configuration-bron en vul de details in die in de dialoog worden vermeld.
- Zodra de bron is aangemaakt, klik op Operaties om uit te vouwen en navigeer naar het tabblad Feature Manager. Maak een feature flag met de naam
NewSearchExperience
zoals weergegeven in de onderstaande screenshot.
2. Uw .NET 8-toepassing configureren
Het integreren van uw toepassing met de feature management-tools van Azure is eenvoudig:
Installeer de vereiste pakketten:
dotnet add package Microsoft.FeatureManagement.AspNetCore
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
Werk uw program.cs-bestand bij:
using Microsoft.FeatureManagement;
var builder = WebApplication.CreateBuilder(args);
// Add Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => options.Connect("<Your_Connection_String>") .UseFeatureFlags());
// Register Feature Management services builder.Services.AddFeatureManagement();
var app = builder.Build();
// Use middleware to integrate with Azure App Configuration app.UseAzureAppConfiguration();
app.MapGet("/", async context => {
var featureManager = context.RequestServices.GetRequiredService<IFeatureManager>();
if (await featureManager.IsEnabledAsync("NewSearchExperience"))
{
await context.Response.WriteAsync("The new search experience is enabled.");
}
else
{
await context.Response.WriteAsync("The new search experience is disabled.");
}
});
app.Run();
3. Het testen van de toggle in real-time
- Start uw applicatie en controleer de reactie op basis van de status van de toggle.
- Wijzig de
NewSearchExperience
feature flag om te schakelen tussen ingeschakeld en uitgeschakeld in het Azure-portaal om real-time wijzigingen te observeren zonder de applicatie opnieuw op te starten.
Een praktische use case: Gepersonaliseerde aanbevelingen
Stel je voor dat je een functie voor gepersonaliseerde aanbevelingen toevoegt aan je e-commerce site. Hier is hoe je het zou kunnen implementeren:
- Maak een toggle in Azure en noem de functie
PersonalizedRecommendations
. - Wijzig razor-pagina’s of weergaven:
@inject IFeatureManager FeatureManager
@if (await FeatureManager.IsEnabledAsync("PersonalizedRecommendations"))
{
<div>Check out these recommendations just for you!</div>
......
}
else
{
<div>Browse our best-selling products.</div>
}
- Schakel de functie in of uit om de gebruikerservaring dynamisch bij te werken.
Best practices voor featurebeheer
1. Ontkoppel bedrijfslogica
Gebruik services om feature-controles af te handelen, zodat zorgen gescheiden zijn en herbruikbaarheid wordt verbeterd.
public interface IFeatureToggleService {
Task<bool> IsFeatureEnabledAsync(string featureName);
}
public class FeatureToggleService : IFeatureToggleService
{
private readonly IFeatureManager _featureManager;
public FeatureToggleService(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
public async Task<bool> IsFeatureEnabledAsync(string featureName)
{
return await _featureManager.IsEnabledAsync(featureName);
}
}
2. Maak gebruik van incrementele uitrol
Breng functies uit naar subsets van gebruikers om risico’s te minimaliseren en vroegtijdige feedback van real-time gebruikers te verzamelen.
3. Monitoren en analyseren
Gebruik Azure Monitor om het gebruik en de prestaties van functies te volgen zodat u datagestuurde beslissingen kunt nemen.
Conclusie
Het benutten van feature flags in .NET 8 stelt ontwikkelaars in staat om software met precisie en vertrouwen te leveren. Door feature flags te adopteren, kunnen teams:
- Verminder implementatierisico’s.
- Voer functies geleidelijk in.
- Reageer direct op problemen zonder code wijzigingen.
Begin vandaag met het integreren van functieschakelaars en ontgrendel een eenvoudige manier om deze te beheren via het Azure-portal om elke functie in of uit te schakelen zonder opnieuw te implementeren.
Source:
https://dzone.com/articles/feature-flags-in-net-8-and-azure