이 자습서에서는 Python 애플리케이션에서 원격 분석을 사용하여 기능 플래그 평가 및 사용자 지정 이벤트를 추적합니다. 원격 분석을 사용하면 기능 관리 전략에 대해 정보에 입각한 결정을 내릴 수 있습니다. 기능 플래그에 대한 원격 분석 사용 설정 개요에서 만들어진 원격 분석을 사용하는 기능 플래그를 활용합니다. 계속하기 전에 원격 분석이 활성화된 구성 저장소에서 Greeting이라는 기능 플래그를 만들어야 합니다. 이 자습서는 Python 애플리케이션에서 변형 기능 플래그를 사용하기 위한 자습서를 기반으로 합니다.
필수 조건
- 원격 분석이 활성화된 변형 기능 플래그는 기능 플래그에 대한 원격 분석 활성화에서 설정됩니다.
- Python 애플리케이션에서 변형 기능 플래그를 사용하는 애플리케이션입니다.
Python 애플리케이션에 원격 분석 추가
pip를 사용하여 필요한 패키지를 설치합니다.
pip install azure-appconfiguration-provider pip install featuremanagement["AzureMonitor"] pip install azure-monitor-opentelemetryapp.py를 열고 Application Insights에 연결하여 원격 분석을 게시하도록 코드를 구성합니다.import os from azure.monitor.opentelemetry import configure_azure_monitor # Configure Azure Monitor configure_azure_monitor(connection_string=os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING"))app.py추가로 App Configuration에서 기능 플래그를 로드하여 기능 관리에 통합합니다.FeatureManager는publish_telemetry콜백 함수를 사용하여 Azure Monitor에 원격 분석을 게시합니다.from featuremanagement.azuremonitor import publish_telemetry feature_manager = FeatureManager(config, on_feature_evaluated=publish_telemetry)코드를 열고
routes.py업데이트하여 애플리케이션에서 사용자 고유의 이벤트를 추적합니다.track_event호출되면 사용자 지정 이벤트가 제공된 사용자와 함께 Azure Monitor에 게시됩니다.from featuremanagement import track_event @bp.route("/heart", methods=["POST"]) def heart(): if current_user.is_authenticated: user = current_user.username # Track the appropriate event based on the action track_event("Liked", user) return jsonify({"status": "success"})코드를 열고
index.html업데이트하여 좋아요 단추를 구현합니다. 좋아요 단추는 클릭할 때 엔드포인트에/heartPOST 요청을 보냅니다.<script> function heartClicked(button) { var icon = button.querySelector('i'); // Toggle the heart icon appearance icon.classList.toggle('far'); icon.classList.toggle('fas'); // Only send a request to the dedicated heart endpoint when it's a like action if (icon.classList.contains('fas')) { fetch('/heart', { method: 'POST', headers: { 'Content-Type': 'application/json', } }); } } </script>
앱 빌드 및 실행
Application Insights 리소스에 연결하려면 연결 문자열이 필요합니다. 환경 변수를
APPLICATIONINSIGHTS_CONNECTION_STRINGApplication Insights 리소스의 연결 문자열로 설정합니다.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"PowerShell을 사용하는 경우 다음 명령을 실행합니다.
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"macOS 또는 Linux를 사용하는 경우 다음 명령을 실행합니다.
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'애플리케이션을 실행하고 변형 기능 플래그 사용의 2단계를 참조하세요.
10명의 다른 사용자를 만들고 애플리케이션에 로그인합니다. 각 사용자로 로그인하면 일부 사용자에 대해 다른 메시지 변형이 표시됩니다. 약 50%의 경우는 메시지를 가져오지 못합니다. 25%의 경우 "안녕하세요!"라는 메시지를 가져오고, 25%의 경우 "하루를 즐겁게 해 주길 바랍니다."라는 메시지를 가져옵니다.
일부 사용자는 좋아요 단추를 선택하여 원격 분석 이벤트를 트리거합니다.
Azure Portal에서 Application Insights 리소스를 열고 모니터링에서 로그를 선택합니다. 쿼리 창에서 다음 쿼리를 실행하여 원격 분석 이벤트를 확인합니다.
// Step 1: Get distinct users and their Variant from FeatureEvaluation let evaluated_users = customEvents | where name == "FeatureEvaluation" | extend TargetingId = tostring(customDimensions.TargetingId), Variant = tostring(customDimensions.Variant) | summarize Variant = any(Variant) by TargetingId; // Step 2: Get distinct users who emitted a "Like" let liked_users = customEvents | where name == "Liked" | extend TargetingId = tostring(customDimensions.TargetingId) | summarize by TargetingId; // Step 3: Join them to get only the evaluated users who also liked let hearted_users = evaluated_users | join kind=inner (liked_users) on TargetingId | summarize HeartedUsers = dcount(TargetingId) by Variant; // Step 4: Total evaluated users per variant let total_users = evaluated_users | summarize TotalUsers = dcount(TargetingId) by Variant; // Step 5: Combine results let combined_data = total_users | join kind=leftouter (hearted_users) on Variant | extend HeartedUsers = coalesce(HeartedUsers, 0) | extend PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%") | project Variant, TotalUsers, HeartedUsers, PercentageHearted; // Step 6: Add total row let total_sum = combined_data | summarize TotalUsers = sum(TotalUsers), HeartedUsers = sum(HeartedUsers) | extend Variant = "All", PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%") | project Variant, TotalUsers, HeartedUsers, PercentageHearted; // Step 7: Output combined_data | union (total_sum)
견적 페이지가 로드될 때마다 하나의 "FeatureEvaluation"이 표시되고, 좋아요 단추를 클릭할 때마다 하나의 "좋아요" 이벤트가 표시됩니다. "FeatureEvaluation" 이벤트에는 평가된 기능 플래그의 이름으로 호출
FeatureName된 사용자 지정 속성이 있습니다. 두 이벤트 모두 따옴표를 좋아하는 사용자의 이름을 따서TargetingId라는 사용자 지정 속성이 있습니다.