Abstract
Feature flags are configuration settings that enable the dynamic toggling of features andmodifying 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 Award | 2025 |
|---|---|
| Original language | English |
| Supervisor | Johann Heinzelreiter (Supervisor) & Harald Bittermann (Supervisor) |
Studyprogram
- Software Engineering