개요
Datadog Real User Monitoring(RUM)에서 여정은 결제, 로그인, 검색과 같이 애플리케이션의 주요 사용자가 경험하는 영역을 나타냅니다. 각 여정에는 사용자 경험을 원활하게 만드는 중요한 기술적 단계인 작업이 포함됩니다.
- 비즈니스 팀은 여정을 사용하여 사용자 전환을 추적하고 개선합니다.
- 엔지니어링 팀은 작업을 사용하여 주요 사용자 순간에 영향을 미치는 기술적 실패를 모니터링하고 최소화합니다.
RUM SDK API를 사용하거나, Datadog에서 직접, 또는 Datadog API를 사용하여 프로그래밍 방식으로 작업을 생성할 수 있습니다.
예를 들어, 전자상거래 플랫폼의 결제 과정도 하나의 여정입니다. 그 안에 결제 정보 입력, 결제 수단 저장, 구매 완료 작업 등이 포함될 수 있습니다. 작업을 생성하면 Datadog RUM은 실행 볼륨, 완료율, 실패율을 포함하여 각 작업의 성능을 측정합니다. 작업의 상태를 측정하면 사용자가 여정에서 전환되지 않는 정확한 시점과 이유를 파악할 수 있습니다.
다음 표는 업종별 추가 여정 예시와 관련 여정 작업을 보여줍니다.
| 업종 | 여정 | 여정 작업 |
|---|
| 소셜 네트워크 | 프로필 | 사용자가 프로필을 로드할 수 있음 사용자가 사진을 업로드할 수 있음 사용자가 상태를 업데이트할 수 있음 |
| 전자상거래 | 결제 | 사용자가 결제 정보를 입력할 수 있음 사용자가 결제 수단을 저장할 수 있음 사용자가 결제할 수 있음 |
| 스트리밍 | 검색 | 사용자가 검색 결과를 찾을 수 있음 사용자가 타이틀 설명을 로드할 수 있음 사용자가 예고편 시청을 시작할 수 있음 |
| CRM | 견적 | 사용자는 새 견적을 시작할 수 있음 사용자는 견적에 품목을 추가할 수 있음 사용자는 수신자에게 견적을 보낼 수 있음 |
전제 조건
- RUM without Limits가 조직에서 활성화되어 있어야 합니다.
- SDK API를 사용하여 작업을 생성하려면 클라이언트 측 API가 포함된 지원되는 Datadog RUM SDK 버전을 다운로드하여 작업을 정의하세요.
SDK API로 작업 생성
SDK API를 사용하여 작업을 정의하세요.
작업 시작
모든 작업은 startOperation을 호출하여 시작해야 합니다(일부 SDK는 이 API의 이전 이름인 startFeatureOperation을 사용할 수 있습니다).
DD_RUM.init({
...,
enableExperimentalFeatures: ["feature_operation_vital"], // you need to have this flag turned on for the API to work
})
startFeatureOperation: (
name: string,
options?: {
operationKey?: string,
context?: Context,
description?: string,
}) => void
GlobalRumMonitor.get().startOperation(
name: String,
operationKey: String?,
options: OperationOptions,
attributes: Map<String, Any?>
)
RUMMonitor.shared().startOperation(
name: String,
operationKey: String?,
attributes: [AttributeKey: AttributeValue]?,
options: OperationOptions?
)
DdRum.startFeatureOperation(
name: string,
operationKey?: string,
attributes?: Record<string, any>
)
DatadogSdk.instance.rum?.startFeatureOperation(
String name, {
String? operationKey,
Map<String, Object?> attributes = const {},
}
)
Flutter Web에서 작업을 사용하려면 Browser SDK에서 feature_operation_vital 실험적 기능을 활성화하세요.
m.global.datadogRumAgent@.startOperation(
name as string,
operationKey = invalid as dynamic, ' optional: string or invalid for unkeyed operations
context = {} as object ' optional: AssocArray of custom attributes
)
해당 작업의 이름에는 문자, 숫자 또는 다음 문자( - _ . @ $)만 포함될 수 있으며, 공백은 포함될 수 없습니다.
성공적으로 작업 중지
시작된 모든 작업은 중지되어야 합니다. succeedOperation을 사용하여 성공적인 결과로 작업을 중지하세요(일부 SDK는 이 API의 이전 이름인 succeedFeatureOperation을 사용할 수 있습니다).
succeedFeatureOperation: (
name: string,
options?: {
operationKey?: string,
context?: Context,
description?: string,
}) => void
GlobalRumMonitor.get().succeedOperation(
name: String,
operationKey: String?,
attributes: Map<String, Any?>
)
RUMMonitor.shared().succeedOperation(
name: String,
operationKey: String?,
attributes: [AttributeKey: AttributeValue]?
)
DdRum.succeedFeatureOperation(
name: string,
operationKey?: string,
attributes?: Record<string, any>
)
DatadogSdk.instance.rum?.succeedFeatureOperation(
String name, {
String? operationKey,
Map<String, Object?> attributes = const {},
}
)
Flutter Web에서 작업을 사용하려면 Browser SDK에서 feature_operation_vital 실험적 기능을 활성화하세요.
m.global.datadogRumAgent@.succeedOperation(
name as string,
operationKey = invalid as dynamic, ' optional: string or invalid for unkeyed operations
context = {} as object ' optional: AssocArray of custom attributes
)
operationKey 은(는) 시작 및 종료 작업 이벤트에서 동일해야 합니다.
실패 상태로 작업 중지
시작된 모든 작업은 중지되어야 합니다. failOperation을 사용하여 실패로 처리하고 작업을 중지하세요(일부 SDK는 이 API의 레거시 이름인 failFeatureOperation을 사용할 수 있습니다).
DD_RUM.init({
...,
enableExperimentalFeatures: ["feature_operation_vital"], // this flag needs to be enabled for the API to work
})
failFeatureOperation: (
name: string,
failureReason: FailureReason, //'error' | 'abandoned' | 'other'
options?: {
operationKey?: string,
context?: Context,
description?: string,
}) => void
GlobalRumMonitor.get().failOperation(
name: String,
operationKey: String?,
failureReason: FailureReason, // ERROR, ABANDONED, OTHER
attributes: Map<String, Any?>
)
RUMMonitor.shared().failOperation(
name: String,
operationKey: String?,
reason: RUMFeatureOperationFailureReason, // .error, .abandoned, .other
attributes: [AttributeKey: AttributeValue]
)
m.global.datadogRumAgent@.failOperation(
name as string,
failureReason as string, ' "error", "abandoned", or "other"
operationKey = invalid as dynamic, ' optional: string or invalid for unkeyed operations
context = {} as object ' optional: AssocArray of custom attributes
)
DdRum.failFeatureOperation(
name: string,
operationKey?: string,
reason: FeatureOperationFailure, // 'ERROR' | 'ABANDONED' | 'OTHER'
attributes: Record<string, any>
)
DatadogSdk.instance.rum?.failFeatureOperation(
String name,
RumFeatureOperationFailureReason failureReason, // .error, .abandoned, .other
{
String? operationKey,
Map<String, Object?> attributes = const {},
}
)
Flutter Web에서 작업을 사용하려면 Browser SDK에서 feature_operation_vital 실험적 기능을 활성화하세요.
병렬화
사용자가 여러 여정 작업을 병렬로 시작하는 경우가 있을 수 있습니다. 이를 개별적으로 추적하려면 operationKey를 호출할 때 정의한 startOperation을 사용하세요. 나중에 다른 API에서(예: succeedOperation 호출 시) 동일한 operationKey를 재사용해야 합니다.
시작되었지만 명시적으로 중지되지 않은 작업은 RUM 세션이 만료되면 자동으로 종료됩니다. 이러한 작업은 @operation.failure_reason:timeout과(와) 함께 실패로 표시됩니다.
애초에 시작되지 않은 작업 중지 API가 호출된 경우, SDK에서 발생한 중지 이벤트는 수집 시 삭제됩니다.
Datadog에서 작업 생성
작업 카탈로그 또는 여정 세부 정보 보고서에서 작업을 생성할 수 있습니다.
- 작업 카탈로그: RUM > Operations로 이동한 다음 New Operation을 클릭합니다.
- Journey Monitoring: Digital Experience > Journey Monitoring로 이동하여 여정을 선택하고 해당 Details Report로 이동한 다음 New Operation을 클릭합니다.
각 RUM 애플리케이션은 UI 또는 API를 통해 Datadog에서 생성된 작업을 최대 1000개까지 지원합니다. Datadog에서 직접 생성된 작업에는 조직 전체 제한이 없습니다.
1단계: 작업 세부 정보를 입력하고 작업 범주를 선택합니다.
작업의 RUM 애플리케이션을 선택하고 표시 이름을 입력합니다. 필요에 따라 작업에 설명을 추가할 수 있습니다.
작업의 범주를 선택하여 시작, 성공 및 실패 조건과 호환되는 RUM 이벤트 유형을 결정하세요.
| 작업 범주 | 요약 | 지원되는 이벤트 유형 |
|---|
| 구성 요소 로딩 | 사용자가 시작한 액션이 완료되는 데 걸리는 시간 측정 | 시작: 액션 성공: 리소스 또는 사용자 지정 액션 실패: 리소스, 오류 또는 사용자 지정 액션 |
| 양식 제출 | 양식 제출 또는 변경이 성공하는 데 걸리는 시간 측정 | 시작: 액션 성공: 리소스, 뷰 또는 사용자 지정 액션 실패: 리소스, 오류 또는 사용자 지정 액션 |
| 페이지 또는 화면 로드 | 페이지 또는 화면이 데이터를 로드하고 표시하는 데 걸리는 시간 측정 | 시작: 뷰 성공: 리소스, 뷰 또는 사용자 지정 액션 실패: 리소스, 오류 또는 사용자 지정 액션 |
| 페이지 또는 화면 탐색 | 한 페이지나 화면에서 다른 페이지나 화면으로 탐색이 성공하는 데 걸리는 시간 측정 | 시작: 액션 또는 뷰 성공: 리소스, 뷰 또는 사용자 지정 액션 실패: 리소스, 오류 또는 사용자 지정 액션 |
| 사용자 지정 | 이벤트 유형 조합으로 사용자 지정 작업 정의 | 시작: 액션 또는 뷰 성공: 리소스, 뷰 또는 사용자 지정 액션 실패: 리소스, 오류 또는 사용자 지정 액션 |
2단계: 시작 이벤트 정의
각 작업에는 시작 RUM 이벤트가 있어야 합니다. 작업은 선택한 작업 범주에 따라 액션 또는 조회 이벤트로 시작할 수 있습니다.
3단계: 성공 조건 정의
각 작업에는 성공 상태로 종료되기 위한 조건이 있어야 합니다. 작업은 선택한 작업 범주에 따라 리소스, 뷰 또는 사용자 지정 액션 이벤트와 함께 성공적으로 종료될 수 있습니다.
4단계: 실패 조건 정의
각 작업에는 실패 상태로 종료되기 위한 조건이 있어야 합니다.
- 오류 실패는 리소스, 오류 또는 사용자 지정 액션과 함께 종료될 수 있습니다.
- 중단 작업이 완료되기 전에 사용자가 시작 보기에서 다른 곳으로 이동하는 경우 실패로 처리될 수 있습니다.
UI 또는 API를 통해 Datadog에서 작업을 생성한 후 메트릭이 작업 카탈로그에 나타나기까지 최대 15분이 소요될 수 있습니다.
Datadog API로 작업 생성
작업은 Datadog API를 통해서도 생성할 수 있습니다.
작업 편집
작업 카탈로그에서 연필 아이콘을 클릭하여 작업을 편집하세요. 생성 방식과 관계없이 모든 작업의 설명을 편집할 수 있습니다. UI 또는 API를 통해 생성된 작업은 설명을 비롯한 모든 부분을 편집할 수 있습니다.
Datadog에서 가용성 모니터링
RUM SDK API를 사용하거나, Datadog에서 직접 또는 Datadog API를 사용하여 작업을 생성한 후 RUM > Performance Monitoring > Operations로 이동하여 모니터링하세요.
Datadog은 이름이 같은 모든 작업을 카탈로그로 그룹화합니다.
각 작업에는 샘플링되지 않은 수집된 전체 트래픽에 대해 계산되는 두 가지 기본 제공 메트릭이 있습니다.
rum.measure.operation은 Datadog에 보고된 작업의 볼륨을 계산합니다.rum.measure.operation.duration은 Datadog에 보고된 모든 작업의 시작과 끝 사이의 경과 시간을 측정합니다.
두 메트릭 모두 15개월 동안 보존되며 여러 디멘션을 포함합니다.
operation.name: 클라이언트 측에서 정의됩니다.operation.status: 성공 또는 실패입니다.operation.failure_reason: 오류, 중단 또는 기타일 수 있습니다.
이러한 메트릭은 RUM Measure 가격에 포함되어 있으며 하나 이상의 작업을 정의하는 모든 RUM without Limits 고객이 사용할 수 있습니다.
AI로 근본 원인 조사
Operations 페이지에서 직접 단일 작업에 대한 에이전트 기반 조사를 실행할 수 있습니다. 에이전트는 작업의 성공률과 대기 시간을 분석하여 각 실패 모드(오류, 시간 초과, 포기) 및 대기 시간 회귀에 대한 집중 조사를 제공합니다. 자세한 정보는 Operation AI 조사를 참조하세요.
Operations는 RUM의 새로운 이벤트 유형입니다. Operations는 RUM Session에 바인딩되지만 여러 RUM 조회에 스팬됩니다. Operations는 보존 필터에서 타겟팅할 수 있습니다. 이를 통해 사용자 경험의 초석이 되는 여정에 맞춰 보존 전략을 조정할 수 있습니다. 예를 들어, 특정 작업이 실패했거나 원하는 것보다 오래 걸리는 RUM 세션을 프로그래밍 방식으로 유지할 수 있습니다.
메트릭과 마찬가지로 이러한 이벤트에는 보존 필터에서 사용할 수 있는 특정 속성이 포함되어 있습니다.
@operation.name@operation.status@operation.failure_reason@operation.duration@operation.start_view.name@operation.end_view.name
추가 자료