Feature Flagging Approaches for Queries in Distributed Database Systems

  • Sebastian Zahrhuber

    Studienabschlussarbeit: Masterarbeit

    Abstract

    Feature-Flags sind Konfigurationseinstellungen, die das dynamische Umschalten von
    Funktionen und die Änderung des Systemverhaltens ohne Code-Änderung ermöglichen.
    Sie erleichtern das Deployment, indem sie das Aktivieren oder Deaktivieren von Funktionen im laufenden Betrieb sowie Canary Releasing und A/B-Tests ermöglichen. FeatureFlags erhöhen die Komplexität von Microservice-Architekturen, in denen Anfragen von
    mehreren nachgeschalteten Services bearbeitet werden. Daher ist es wichtig, die richtige
    Feature-Flag-Strategie zu implementieren, um Testbarkeit und minimalen PerformanceOverhead zu gewährleisten.
    Diese Masterarbeit konzentriert sich auf die Analyse und Bewertung aktueller FeatureFlagging-Implementierungen innerhalb einer gegebenen Microservice-Architektur. Es
    werden Strategien und Ansätze zur effektiven Implementierung von Feature-Flagging in
    verteilten Datenbanksystemen untersucht, mit besonderem Augenmerk auf das OpenFeature-Framework. Das Konzept reicht von der Architektur der benötigten Komponenten über die Evaluierungsmethodik bis hin zur Definition und Validierung der Konfigurationen. Laufzeitanalysen unter Verwendung des Benchmark-Frameworks Java Microbenchmark Harness werden verwendet, um die Leistung der Ansätze zu evaluieren.
    Es wird gezeigt, dass die Verwendung eines zentralen Services zur Verwaltung der
    Feature-Flags in Kombination mit geeigneten Caching-Strategien und der Verwendung
    von gRPC-Streams die beste Performance bietet. Aufgrund des hohen Implementierungsaufwands, wird ein hybrider Ansatz vorgestellt, der die Vor- und Nachteile zweier
    Ansätze kombiniert. Darauf basierend wird die Definition und Validierung der Konfigurationen diskutiert, wobei Fehler in der JSON-Syntax zu einem Fehlschlagen des
    Helm-Renderings führen sollten und eine Validierung gegen das JSON-Schema des verwendeten OpenFeature-Providers durchgeführt werden sollte. Die JUnit-OpenFeatureErweiterung wird verwendet, um Features zu testen, die von Feature-Flags beeinflusst
    werden, obwohl einige Erweiterungen noch implementiert werden müssen.
    Das Thema verteilter konsistenter Feature-Flag-Evaluierungen mit serviceübergreifenden, gemeinsamen Feature-Flags wird untersucht, wobei verschiedene Implementierungsansätze entwickelt werden. Die Verwendung von Baggage-Headern erweist sich als die
    beste Lösung für aktuelle Implementierungen. Ein Spezialfall ist das Execute/PollMuster. Es werden zwei Lösungen für die Verwendung von Caches in möglicher Kombination mit dem OFREP-Protokoll entwickelt, um die Konsistenz der Auswertungen
    entlang der Servicekette auch unter diesen Anforderungen zu gewährleisten.
    Datum der Bewilligung2025
    OriginalspracheEnglisch
    Betreuer/-inJohann Heinzelreiter (Betreuer*in) & Harald Bittermann (Betreuer*in)

    Studiengang

    • Software Engineering

    Zitieren

    '