APM 트레이스 보강은 APM 트레이스에 기능 플래그 평가 데이터를 자동으로 연결합니다. 추적된 요청 중에 기능 플래그가 평가되면 SDK는 어떤 플래그가 평가되었고 어떤 변형이 반환되었는지 기록합니다. 이 데이터는 루트 스팬에 작성되고 서버 측에서 처리되므로 사용자가 다음을 수행할 수 있습니다.
@feature_flags.<flag_key>:<variant> 패싯을 사용하여 Trace Explorer에서 - 플래그 변형별로 트레이스를 필터링합니다.
오류 발생 시 활성화 상태였던 플래그를 확인하여 - 플래그 관련 문제를 디버깅합니다.
보강 환경 변수는 지원되는 모든 서버 측 SDK에서 지원됩니다. 코드를 변경할 필요가 없습니다. 이 변수를 활성화하면 Datadog OpenFeature 공급자가 초기화될 때 보강 후크가 자동으로 활성화됩니다. Node.js는 아래의 언어 탭에 나와 있는 대로 코드 수준 구성을 추가적으로 지원합니다.
언어별 구성
추가 코드 구성은 필요하지 않습니다. DatadogProvider가 초기화될 때 DD_EXPERIMENTAL_FLAGGING_PROVIDER_SPAN_ENRICHMENT_ENABLED 환경 변수가 스팬 보강을 활성화합니다.
main.go
packagemainimport("log""github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"ddopenfeature"github.com/DataDog/dd-trace-go/v2/openfeature""github.com/open-feature/go-sdk/openfeature")funcmain(){tracer.Start()defertracer.Stop()provider,err:=ddopenfeature.NewDatadogProvider(ddopenfeature.ProviderConfig{})iferr!=nil{log.Fatalf("Failed to create provider: %v",err)}ifddProvider,ok:=provider.(*ddopenfeature.DatadogProvider);ok{deferddProvider.Shutdown()}iferr:=openfeature.SetProviderAndWait(provider);err!=nil{log.Fatalf("Failed to set provider: %v",err)}client:=openfeature.NewClient("my-service")// Flag evaluations now enrich APM spans automatically}
추가 코드 구성은 필요하지 않습니다. DD_EXPERIMENTAL_FLAGGING_PROVIDER_SPAN_ENRICHMENT_ENABLED 환경 변수가 스팬 보강을 활성화합니다. Java는 대안으로 시스템 속성 -Ddd.experimental.flagging.provider.span.enrichment.enabled=true도 지원합니다.
트레이스를 열고 루트 스팬에서 @feature_flags.<flag_key> 특성을 찾습니다.
SDK는 압축된 인코딩형 태그(ffe_flags_enc, ffe_subjects_enc, ffe_runtime_defaults)를 루트 스팬에 작성합니다. Datadog 백엔드는 이를 디코딩하여 사람이 읽을 수 있는 @feature_flags.<flag_key> 패싯을 생성합니다. 이 처리에는 스팬이 수집된 후 몇 초 정도 걸립니다.
백엔드 처리 후 루트 스팬에는 다음 예시와 같은 특성이 포함됩니다.
예시 특성
예시 값
@feature_flags.checkout-flow
treatment
@feature_flags.dark-mode
control
각 특성 키는 @feature_flags.<flag_key>이며 값은 평가를 통해 반환된 변형입니다.
문제 해결
@feature_flags.<flag_key> 특성이 트레이스에 나타나지 않는 경우:
스팬 보강이 활성화되어 있는지 확인합니다(DD_EXPERIMENTAL_FLAGGING_PROVIDER_SPAN_ENRICHMENT_ENABLED=true).
애플리케이션이 추적된 요청 중 플래그를 평가하고 있는지 확인합니다. 보강은 트레이스가 활성화된 상태에서 플래그가 평가될 때만 발생합니다.
스팬이 수집된 후 몇 초 정도 기다립니다. @feature_flags.<flag_key> 패싯은 백엔드 처리를 통해 파생되며 원시 스팬 메타데이터에 나타나지 않습니다.
디버깅을 위해 ffe_flags_enc 태그에 대한 원시 스팬 메타데이터를 검사합니다. 이 태그가 있으면 SDK가 보강 데이터를 내보내고 있는 것입니다. 백엔드가 아직 처리하지 않았거나 조직에 기능 플래그 게이트가 활성화되지 않았을 수 있습니다.