In einer Branche, in der schnelle, zuverlässige und iterative Entwicklungszyklen den Erfolg bestimmen, ist die Fähigkeit, Software zu deployen und dabei Risiken zu minimieren, von unschätzbarem Wert. Feature-Flags sind ein wesentlicher Bestandteil des modernen Entwickler-Toolkits geworden, da sie einen flexiblen Ansatz zum dynamischen Aktivieren und Deaktivieren von Funktionen bieten.
Lassen Sie uns untersuchen, wie das Microsoft .NET-Team in Kombination mit Azure neue Funktionsveröffentlichungen effizient verwaltet, ohne im Falle von Regressionen zurückzusetzen (neu zu deployen).
Die Herausforderungen im traditionellen Funktionsmanagement
Das manuelle Verwalten von Funktionen war für Entwickler immer ein Schmerzpunkt. Hardcodierung oder das Verlassen auf lokale Konfigurationsdateien wird in komplexen Umgebungen schwierig zu verwalten. Dieser Ansatz bringt oft Herausforderungen mit sich, wie:
- Skalierbarkeitsprobleme: Es ist schwierig, Konsistenz über mehrere Umgebungen hinweg, wie Entwicklung, Staging und Produktion, aufrechtzuerhalten, und es führt oft zu Konfigurationsdrift.
- Bereitstellungsabhängigkeit: Das Ändern von Funktionszuständen erfordert Neubereitstellungen, was die Ausfallzeiten und betrieblichen Risiken erhöht.
- Begrenzte Kontrolle: Grundlegende Setups fehlen fortschrittliche Zielgruppenansprache oder die Fähigkeit, Rollouts schrittweise zu verwalten.
Die Lösung von Azure: Ein einheitlicher Ansatz
Azure Feature Management vereinfacht diese Herausforderungen, indem es ein zentrales System bereitstellt, das nahtlos mit .NET 8 und höher integriert ist. Dieses robuste Framework sorgt dafür, dass Entwickler sich auf Innovationen konzentrieren können, während sie die Kontrolle über die Lebenszyklen von Funktionen behalten.
Was unterscheidet es?
- Dynamische Konfiguration: Ändern Sie die Zustände von Funktionen im Handumdrehen, ohne den Code zu berühren und ohne weitere Bereitstellungen.
- Granulare Zielgruppenansprache: Richten Sie Funktionen gezielt auf bestimmte Benutzersegmente basierend auf geografischen Standorten oder wenden Sie benutzerdefinierte Regeln an.
- Nahtloses Skalieren: Entwickelt für verteilte Systeme und Microservices, was es zu einer perfekten Lösung für cloud-native Anwendungen macht.
Schritt-für-Schritt-Anleitung zur Implementierung von Feature-Flags
1. Einrichten von Azure App Configuration
Beginnen Sie mit der Erstellung einer zentralen Konfigurationsressource in Azure:
- Navigieren Sie zum Azure-Portal und wählen Sie die Ressource App Configuration aus.
- Erstellen Sie eine App Configuration-Ressource und füllen Sie die im Dialogfeld angegebenen Details aus.
- Sobald die Ressource erstellt ist, klicken Sie auf Operationen, um zu erweitern, und navigieren Sie zum Tab Feature Manager. Erstellen Sie ein Feature-Flag mit dem Namen
NewSearchExperience
, wie im Screenshot unten gezeigt.
2. Konfigurieren Ihrer .NET 8-Anwendung
Die Integration Ihrer Anwendung mit den Feature-Management-Tools von Azure ist unkompliziert:
Installieren Sie die erforderlichen Pakete:
dotnet add package Microsoft.FeatureManagement.AspNetCore
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
Aktualisieren Sie Ihre program.cs-Datei:
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. Prüfung des Umschalters in Echtzeit
- Starten Sie Ihre Anwendung und überprüfen Sie die Reaktion basierend auf dem Umschaltezustand.
- Ändern Sie das
NewSearchExperience
-Feature-Flag in der Azure-Portal, um zwischen aktiviert und deaktiviert zu wechseln und Echtzeitänderungen zu beobachten, ohne die Anwendung neu zu starten.
Ein praktischer Anwendungsfall: Personalisierte Empfehlungen
Stellen Sie sich vor, Sie fügen Ihrem E-Commerce-Website eine personalisierte Empfehlungsfunktion hinzu. So könnten Sie es umsetzen:
- Erstellen Sie einen Umschalter in Azure und benennen Sie das Feature
PersonalizedRecommendations
. - Ändern Sie Razor-Seiten oder Ansichten:
@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>
}
- Schalten Sie das Feature ein oder aus, um die Benutzererfahrung dynamisch zu aktualisieren.
Best Practices für das Feature-Management
1. Entkoppeln der Geschäftslogik
Verwenden Sie Dienste, um Feature-Checks durchzuführen, um eine Trennung der Anliegen und eine verbesserte Wiederverwendbarkeit sicherzustellen.
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. Nutzen von inkrementellen Rollouts
Veröffentlichen Sie Funktionen für Teilgruppen von Benutzern, um Risiken zu minimieren und frühzeitig Feedback von Echtzeitbenutzern zu sammeln.
3. Überwachen und Analysieren
Verwenden Sie Azure Monitor, um die Nutzung und Leistung von Funktionen zu verfolgen und datengesteuerte Entscheidungen zu treffen.
Fazit
Durch den Einsatz von Feature-Flags in .NET 8 können Entwickler Software präzise und selbstbewusst bereitstellen. Durch die Übernahme von Feature-Flags können Teams:
- Reduzieren Sie die Risiken bei der Bereitstellung.
- Führen Sie Funktionen schrittweise ein.
- Reagieren Sie sofort auf Probleme, ohne Codeänderungen.
Beginnen Sie noch heute mit der Integration von Feature-Flags und eröffnen Sie eine einfache Möglichkeit, diese über das Azure-Portal zu steuern, um jede Funktion ohne erneute Bereitstellung zu aktivieren oder zu deaktivieren.
Source:
https://dzone.com/articles/feature-flags-in-net-8-and-azure