Feature Flagging Approaches for Queries in Distributed Database Systems

  • Sebastian Zahrhuber

    Student thesis: Master's Thesis

    Abstract

    Feature flags are configuration settings that enable the dynamic toggling of features and
    modifying system behaviour without changing code. They facilitate easier deployment
    by allowing features to be rolled out or disabled on the fly and they also enable Canary
    Releasing and A/B testing. Feature flags add complexity to microservice architectures
    where requests are handled by multiple services downstream. Therefore, it is extremely
    important to implement the right feature flagging strategy to ensure testability and
    minimal performance overhead.
    This master thesis focuses on analysing and assessing the current state of feature flagging within a given microservice architecture. It explores strategies and approaches for
    effectively implementing feature flagging in distributed database systems, with particular emphasis on the OpenFeature framework. The concept ranges from the architecture of the required components, through the evaluation methodology, to the definition and validation of feature flagging configurations. Microbenchmarks using the Java
    Microbenchmark Harness are used to evaluate and compare the performance of the
    approaches.
    It is shown that the use of a central feature flagging service in combination with appropriate caching strategies and the use of gRPC streams provides the best performance.
    However, as this requires a lot of implementation effort, a hybrid approach is explained
    that combines the advantages and disadvantages of both suitable approaches. The service uses a custom OpenFeature provider based on the flagging OpenFeature provider.
    Based on the hybrid approach, the definition and validation of feature flagging configurations is discussed, where errors in the JSON syntax should lead to a failure of
    the Helm rendering, and a validation against the JSON schema of the OpenFeature
    provider used should be performed. The JUnit OpenFeature extension is used to test
    features that are influenced by feature flags, although some extensions still need to be
    implemented.
    The topic of distributed consistent feature flagging with the use of cross-service shared
    feature flags is examined in more detail, with different implementation approaches being developed. The use of baggage headers proves to be the best solution for current
    implementations. A special case is the Execute/Poll pattern, for which the concept is
    extended. Two solutions were developed on how caches can be used in possible combination with the OFREP protocol to make the evaluations along the service chain
    consistent even under these requirements.
    Date of Award2025
    Original languageEnglish
    SupervisorJohann Heinzelreiter (Supervisor) & Harald Bittermann (Supervisor)

    Studyprogram

    • Software Engineering

    Cite this

    '