Feature Flags

You are viewing the English version of this page because it has not yet been fully translated. Interested in helping out? See Contributing.

The demo provides several feature flags that you can use to simulate different scenarios. These flags are managed by flagd, a simple feature flag service that supports OpenFeature.

Flag values can be changed through the user interface provided at http://localhost:8080/feature when running the demo. Changing the values through this user interface will be reflected in the flagd service.

There are two options when it comes to changing the feature flags through the user interface:

  • Basic View: A user friendly view in which default variants (the same options that need to be changed when configuring through the raw file) can be selected and saved for each feature flag. Currently, the basic view does not support fractional targeting.

  • Advanced View: A view in which the raw configuration JSON file is loaded and can be edited within the browser. The view provides the flexibility that comes with editing a raw JSON file, however it also provides schema checking to ensure that the JSON is valid and that the provided configuration values are correct.

Implemented feature flags

Feature FlagService(s)Description
adFailureAdGenerate an error for GetAds 1/10th of the time
adHighCpuAdTrigger high cpu load in the ad service. If you want to demo cpu throttling, set cpu resource limits
adManualGcAdTrigger full manual garbage collections in the ad service
cartFailureCartSend the selected percentage of EmptyCart calls to a failing cart store
emailMemoryLeakEmailSimulate a memory leak in the email service. The variant sets how much each confirmation email body is padded.
failedReadinessProbeCartForce the readiness probe to fail with unhealthy status, simulating a pod “NotReady” condition. Applicable for Kubernetes deployments only.
imageSlowLoadFrontendUtilizes envoy fault injection, produces a delay in loading of product images in the frontend. The variant sets the delay.
intlShippingSlowdownShippingDelay non-US shipping requests by the selected number of seconds, simulating overseas shipping latency. US addresses are unaffected.
kafkaQueueProblemsCheckout, Fraud DetectionOverloads Kafka queue while simultaneously introducing a consumer side delay leading to a lag spike.
loadGeneratorTrafficLoad GeneratorEnable synthetic traffic from the load generator. Turn it off to pause all load generator scenarios.
loadGeneratorVUsLoad GeneratorNumber of concurrent virtual users driving the load generator’s HTTP scenario. Changing it restarts k6 on the next poll.
paymentFailurePaymentGenerate an error for the selected percentage of charge calls.
paymentUnreachableCheckoutUse a bad address when calling the Payment service to make it seem like the Payment service is unavailable.
productCatalogFailureProduct CatalogGenerate an error for GetProduct requests with product ID: OLJCESPC7Z
recommendationCacheFailureRecommendationCreate a memory leak due to an exponentially growing cache. Roughly half of requests trigger growth.

Guided Debugging Scenario

The recommendationCacheFailure scenario has a dedicated walkthrough document to help understand how you can debug memory leaks with OpenTelemetry.

Feature Flag Architecture

Please see the flagd documentation for more information on how flagd works, and the OpenFeature website for more information on how OpenFeature works, along with documentation for the OpenFeature API.