프러스트레이션 시그널(Frustration Signals)

[!tldr] 한줄 요약 Datadog RUM이 Rage Click, Dead Click, Error Click 3가지 클릭 패턴으로 사용자 좌절을 자동 감지하여, 코드 버그와 UX 결함을 빠르게 찾아내는 기능이다.

핵심 내용

프러스트레이션 시그널은 RUM(Real User Monitoring)의 하위 기능으로, 사용자가 직접 피드백하지 않아도 클릭 행동 패턴만으로 어디서 좌절감을 느끼는지 파악할 수 있다.

3가지 시그널 유형

유형정의의미
Rage Click같은 요소를 1초 내에 3회 이상 클릭버튼이 반응하지 않거나 로딩이 느려 사용자가 답답해하는 상황
Dead Click클릭했지만 아무 동작도 일어나지 않음클릭 가능해 보이지만 실제로는 아닌 요소 (misleading UX)
Error Click클릭 직후 JavaScript 에러 발생클릭 액션이 런타임 에러를 유발하는 버그

시그널 간 관계와 우선순위

Rage Click은 대부분 Dead Click이나 Error Click의 결과물이다. 전형적인 에스컬레이션 패턴:

클릭 → 반응 없음(Dead Click) → 재시도 → 또 반응 없음 → 연타 → Rage Click
클릭 → 에러 발생(Error Click) → 재시도 → 또 에러 → 연타 → Rage Click

따라서 대응 우선순위는:

  1. Error Click — 기능이 깨져 있으므로 버그 수정이 급함
  2. Dead Click — UX 설계 결함. 클릭 가능해 보이는데 아닌 요소 수정
  3. 순수 Rage Click — Dead/Error 없이 발생. 기능은 정상이지만 응답이 느리거나 피드백이 부재

Error Click과 Dead Click을 먼저 잡으면 Rage Click의 대부분이 자연스럽게 줄어든다. 순수 Rage Click은 로딩 인디케이터 추가, 응답 속도 개선 등 UX 피드백 강화로 해결한다.

SDK 설정

Browser SDK v4.14.0 이상이 필요하다:

datadogRum.init({
  trackUserInteractions: true,  // 클릭, 입력 등 사용자 상호작용 추적
  trackFrustrations: true,      // 프러스트레이션 시그널 활성화
  sessionReplaySampleRate: 20,  // Session Replay와 결합 가능
  defaultPrivacyLevel: 'mask-user-input'
});

[!tip] 최신 SDK 최신 SDK에서는 trackUserInteractions: true만 설정하면 frustration signals도 자동 수집된다.

RUM Explorer에서 분석

목적검색 쿼리
Rage Click만 보기action.frustration.type:rage_click
Dead Click만 보기action.frustration.type:dead_click
Error Click만 보기action.frustration.type:error_click
좌절 1회 이상 세션session.frustration.count:>1
좌절 많은 페이지view.frustration.count:>10

Options > Add Column에서 @session.frustration.count를 추가하면 세션별 좌절 횟수를 한눈에 볼 수 있다. Frustration Type 패싯으로 유형별 필터링도 가능하다.

연계 기능과 풀스택 워크플로우

Frustration Signals는 단독으로도 유용하지만, 다른 Datadog 기능과 결합하면 발견 → 원인 분석 → 해결 → 예방의 전체 루프를 완성한다:

flowchart TD
    A[Frustration Signal 감지] --> B[Session Replay로 재현]
    B --> C{원인 유형?}
    C -->|Error Click| D[Error Tracking에서 에러 그룹 확인]
    C -->|느린 응답| E[APM 트레이스 → 로그 확인]
    C -->|Dead Click| F[UX 설계 수정]
    D --> G[원인 수정]
    E --> G
    F --> G
    G --> H[Synthetic Test로 재발 방지]

예시

Datadog 자체 팀의 실제 활용 사례:

Session Replay + Frustration Signals 분석으로 사용자가 "임시 대시보드를 만들어 1~2개 그래프만 보고 버리는" 패턴을 발견했다. Dashboard List 방문 직후 새 대시보드 생성 → 그래프 1~2개 추가 → 이후 재방문 없음. 이 행동 데이터를 기반으로 Quick Graphs 기능(아무 페이지에서 G 키로 즉석 그래프 생성)을 개발하여 불필요한 대시보드 생성을 줄였다.

[!example] 핵심 교훈 사용자가 "불편하다"고 직접 말하지 않아도, 행동 데이터(Frustration Signals)로 문제를 발견하고 제품 개선으로 연결할 수 있다. 직접 피드백에는 무의식적 편향(unconscious bias)이 있지만, 행동 데이터는 필터 없는 진실을 보여준다.

참고 자료

관련 노트