Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Dieser Inhalt ist ein Auszug aus dem eBook, Architecting Cloud Native .NET Applications for Azure, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.
In Kapitel 1 haben wir bestätigt, dass cloud-native stark auf Schnelligkeit und Agilität ausgerichtet ist. Benutzer erwarten schnelle Reaktionsfähigkeit, innovative Features und null Ausfallzeiten.
Feature flags sind eine moderne Bereitstellungstechnik, die die Agilität für cloudnative Anwendungen erhöht. Sie ermöglichen es Ihnen, neue Features in einer Produktionsumgebung bereitzustellen, aber ihre Verfügbarkeit einzuschränken. Mit dem Streichen eines Schalters können Sie ein neues Feature für bestimmte Benutzer aktivieren, ohne die App neu zu starten oder neuen Code bereitzustellen. Sie trennen die Veröffentlichung neuer Features von ihrer Codebereitstellung.
Featurekennzeichnungen basieren auf bedingter Logik, die die Sichtbarkeit der Funktionalität für Benutzer zur Laufzeit steuern. In modernen cloudeigenen Systemen ist es üblich, frühzeitig neue Features in der Produktion bereitzustellen, aber testen Sie sie mit einer begrenzten Zielgruppe. Da sich das Vertrauen erhöht, kann das Feature inkrementell für breitere Zielgruppen bereitgestellt werden.
Weitere Anwendungsfälle für Featurekennzeichnungen sind:
- Beschränken Sie premium-Funktionen auf bestimmte Kundengruppen, die bereit sind, höhere Abonnementgebühren zu zahlen.
- Stabilisieren Sie ein System, indem Sie ein Problemfeature schnell deaktivieren und die Risiken eines Rollbacks oder sofortigen Hotfixes vermeiden.
- Deaktivieren Sie ein optionales Feature mit hohem Ressourcenverbrauch während spitzen Nutzungszeiträumen.
- Prüfen Sie die Machbarkeit und Beliebtheit, indem Sie
experimental feature releasesmit kleinen Benutzersegmenten durchführen.
Featureflags fördern auch die trunk-based Entwicklung. Es handelt sich um ein Modell zur Verzweigung der Quellcodeverwaltung, bei dem Entwickler an Features in einer einzelnen Verzweigung zusammenarbeiten. Der Ansatz minimiert das Risiko und die Komplexität der Zusammenführung einer großen Anzahl zeitintensiver Featurebranches. Features sind bis zur Aktivierung nicht verfügbar.
Implementieren von Feature-Flags
Im Kern ist eine Featurekennzeichnung ein Verweis auf ein einfaches decision object. Es gibt einen booleschen Zustand von on oder off zurück. Das Flag umschließt in der Regel einen Codeblock, der eine Featurefunktion kapselt. Der Status des Flags bestimmt, ob dieser Codeblock für einen bestimmten Benutzer ausgeführt wird. Abbildung 10-11 zeigt die Implementierung.
if (featureFlag) {
// Run this code block if the featureFlag value is true
} else {
// Run this code block if the featureFlag value is false
}
Abbildung 10-11 : Implementierung einfacher Featurekennzeichnungen.
Beachten Sie, wie dieser Ansatz die Entscheidungslogik vom Featurecode trennt.
In Kapitel 1 haben wir die Twelve-Factor App erörtert. Die Anleitung empfiehlt, Konfigurationseinstellungen außerhalb des ausführbaren Codes der Anwendung beizubehalten. Bei Bedarf können Einstellungen aus der externen Quelle gelesen werden. Feature-Flag-Konfigurationswerte sollten ebenfalls unabhängig von ihrer Codebasis sein. Durch das Externalisieren der Kennzeichnungskonfiguration in einem separaten Repository können Sie den Flagstatus ändern, ohne die Anwendung zu ändern und erneut bereitzustellen.
Die Azure App-Konfiguration bietet ein zentrales Repository für Featurekennzeichnungen. Damit definieren Sie verschiedene Arten von Featurekennzeichnungen und bearbeiten ihre Zustände schnell und sicher. Sie fügen Ihrer Anwendung die Clientbibliotheken für die App-Konfiguration hinzu, um Featurekennzeichnungsfunktionen zu aktivieren. Verschiedene Programmiersprachenframeworks werden unterstützt.
Featurekennzeichnungen können einfach in einem ASP.NET Core-Dienst implementiert werden. Durch die Installation der .NET-Featureverwaltungsbibliotheken und des App-Konfigurationsanbieters können Sie Ihrem Code deklarativ Featurekennzeichen hinzufügen. Sie aktivieren FeatureGate-Attribute, sodass Sie if-Anweisungen nicht manuell in Ihrem Code einfügen müssen.
Nach der Konfiguration in der Startup-Klasse können Sie Feature-Flag-Funktionalität auf Controller-, Aktions- oder Middleware-Ebene hinzufügen. Abbildung 10-12 zeigt Controller- und Aktionsimplementierung:
[FeatureGate(MyFeatureFlags.FeatureA)]
public class ProductController : Controller
{
...
}
[FeatureGate(MyFeatureFlags.FeatureA)]
public IActionResult UpdateProductStatus()
{
return ObjectResult(ProductDto);
}
Abbildung 10-12 : Implementierung von Featurekennzeichnungen in einem Controller und einer Aktion.
Wenn ein Feature-Flag deaktiviert ist, erhält der Benutzer einen Statuscode 404 (Nicht gefunden) ohne Antworttext.
Featurekennzeichnungen können auch direkt in C#-Klassen eingefügt werden. Abbildung 10-13 zeigt die Einfügung von Feature-Flags:
public class ProductController : Controller
{
private readonly IFeatureManager _featureManager;
public ProductController(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
}
Abbildung 10-13 : Featurekennzeichnungseinfügung in eine Klasse.
Die Featureverwaltungsbibliotheken verwalten den Lebenszyklus der Featurekennzeichnung hinter den Kulissen. Um z. B. eine hohe Anzahl von Aufrufen an den Konfigurationsspeicher zu minimieren, werden die Cachekennzeichen der Bibliotheken für eine bestimmte Dauer zwischengespeichert. Sie können die Unveränderlichkeit von Flagzuständen während eines Anforderungsaufrufs garantieren. Sie bieten auch eine Point-in-time snapshot. Sie können den Verlauf eines beliebigen Schlüsselwerts rekonstruieren und den letzten Wert jederzeit innerhalb der vorherigen sieben Tage angeben.