이 자습서에서는 Node.js 애플리케이션에서 원격 분석을 사용하여 기능 플래그 평가 및 사용자 지정 이벤트를 추적합니다. 원격 분석을 사용하면 기능 관리 전략에 대해 정보에 입각한 결정을 내릴 수 있습니다. 기능 플래그에 대한 원격 분석 사용하도록 설정 개요에서 만들어진 원격 분석이 사용하도록 설정된 기능 플래그를 활용합니다. 계속하기 전에 원격 분석이 활성화된 구성 저장소에서 Greeting이라는 기능 플래그를 만들어야 합니다. 이 자습서는 Node.js 애플리케이션에서 변형 기능 플래그를 사용하기 위한 자습서를 기반으로 합니다.
필수 조건
- 원격 분석이 활성화된 변형 기능 플래그는 기능 플래그에 대한 원격 분석 활성화에서 설정됩니다.
- Node.js 애플리케이션에서 변형 기능 플래그를 사용하는 애플리케이션입니다.
Node.js 애플리케이션에 원격 분석 추가
다음 패키지를 설치합니다.
npm install @microsoft/feature-management-applicationinsights-nodeApplication Insights에 연결하여 원격 분석을 게시하기 위해 시작 부분에 다음 코드를 열고
server.js추가합니다.const appInsightsConnectionString = process.env.APPLICATIONINSIGHTS_CONNECTION_STRING; const applicationInsights = require("applicationinsights"); applicationInsights.setup(appInsightsConnectionString).start(); const express = require("express"); const server = express(); // existing code ...다음 가져오기를 추가합니다.
const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");FeatureManager를 초기화할 때 원격 분석 게시자를 만들고 등록합니다.// existing code ... const featureFlagProvider = new ConfigurationMapFeatureFlagProvider(appConfig); const publishTelemetry = createTelemetryPublisher(applicationInsights.defaultClient); featureManager = new FeatureManager(featureFlagProvider, { onFeatureEvaluated: publishTelemetry }); // existing code ...콜백은
publishTelemetry기능 플래그가 평가될 때마다 원격 분석 데이터를 보냅니다.사용자 상호 작용에 대한 사용자 지정 이벤트를 추적합니다.
/api/like사용자가 콘텐츠를 좋아할 때마다 Application Insights에 원격 분석 데이터를 보내도록 엔드포인트를 수정합니다. 이렇게 하면 어떤 기능 변형이 더 잘 수행되는지 분석할 수 있습니다.server.post("/api/like", (req, res) => { const { UserId } = req.body; if (UserId === undefined) { return res.status(400).send({ error: "UserId is required" }); } trackEvent(applicationInsights.defaultClient, UserId, { name: "Liked" }); res.status(200).send(); });
애플리케이션 실행
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'애플리케이션을 실행하고 변형 기능 플래그 사용의 4단계를 참조하세요.
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라는 사용자 지정 속성이 있습니다."FeatureEvaluation" 이벤트에 대한 자세한 내용은 기능 플래그 원격 분석 참조로 이동하세요.
추가 리소스
다음 단계
JavaScript 기능 관리 라이브러리의 전체 기능 개요는 다음 문서를 참조하세요.