ユーザーエクスペリエンス SLI(次のステップ)
This page contains information related to upcoming products, features, and functionality.
It is important to note that the information presented is for informational purposes only.
Please do not rely on this information for purchasing or planning purposes.
The development, release, and timing of any products, features, or functionality may be
subject to change or delay and remain at the sole discretion of GitLab Inc.
| Status | Authors | Coach | DRIs | Owning Stage | Created |
|---|---|---|---|---|---|
| proposed | hmerscher | reprazent
andrewn | team Observability | 2025-03-24 |
動機
ユーザーエクスペリエンス SLIからの作業を継続して、この補足資料はユーザーエクスペリエンストラッカーという新しいサービスを導入することで、ユーザーエクスペリエンスフレームワークの拡張に焦点を当てています。このサービスにより、途中でエラーが発生して完了しない(またはその期待される生存期間内に完了しない)ユーザーエクスペリエンスを追跡する機能が追加されます。
これは変更される可能性があるため、メインのブループリントとは別に保持されています。ここに提示されている内容は志向的なものにすぎません。
スコープ
ユーザーエクスペリエンストラッカーは、ユーザーエクスペリエンスのタイムアウト検証を担当します——特に非同期ユーザーエクスペリエンス SLI の追跡に関連しています。
SDK が統合されたら、イベント発行の機能をこのサービスに移動して一元化し、SDK からの複雑さを取り除くことができます。
プロジェクトは以下で構成されます:
例:
flowchart LR
User((User))
subgraph ServiceA
subgraph ProcessA
LabKit
end
end
subgraph ServiceB
subgraph ProcessB
LabKitB
end
end
subgraph tracker[Tracker]
missing_end[Missing end event]
timeout_check{Timeout check}
timeout_action[Timeout action]
missing_end --> timeout_check
timeout_check --No timeout--> missing_end
timeout_check --Timeout reached--> timeout_action
end
User --Request--> ServiceA
LabKit --Checkpoint--> tracker
ServiceA --> ServiceB
LabKitB --Checkpoint--> trackerプロジェクトの作業アイテムはエピック #1540にスコープされています。
ユーザーエクスペリエンス SLI トラッカー
- 一元化されたユーザーエクスペリエンス SLI 状態追跡
- ユーザーエクスペリエンスの期間に対する合理的な TTL(Time to Live)しきい値
- 状態は Redis に保存・管理されます。設定されたしきい値後にタイムアウトする古くなったユーザーエクスペリエンスのクエリを可能にします。
- 認証
- デプロイ:
- GitLab.com 向けの Runway サービス
- Dedicated 向けの Runway ホスティングサービス
クライアントが生成したペイロードに応答するエンドポイントを提供します:
| フィールド | 型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| correlation_id | string (ULID) | はい | ユーザーエクスペリエンスの一意識別子 | “01JP0EM7HB39WSJNR4662MYZ6V” |
| user_experience_id | string | はい | ユーザーエクスペリエンスの識別 | “http_request” |
| checkpoint | string | はい | ライフサイクルのどのステップか | “start” | “end” | “intermediate” |
| checkpoint_category | string | いいえ | チェックポイントのドメイン固有のカテゴリ。TBD: 限定的なカーディナリティを課す。 | “authorize” |
| type | string | はい | イベントを生成するサービス/コンポーネント | “web”, “database” |
| feature_category | string | はい | GitLab の機能カテゴリ | “source_code_management” |
| urgency | string | はい | ユーザーの期待に基づいてプロセスがどのくらい速く完了する必要があるか | “sync_fast” |
| client_timestamp | string (ISO-8601) | はい | イベントが発生したときのタイムスタンプ | “2025-02-06T14:30:00Z” |
| server_timestamp | string (ISO-8601) | いいえ(レスポンスのみ) | サーバー処理タイムスタンプ | “2025-02-06T14:30:00.123Z” |
| meta | object | いいえ | i.e. https://docs.gitlab.com/development/logging/#logging-context-metadata-through-rails-or-grape-requests |
バックグラウンドプロセスがすべての古いユーザーエクスペリエンス SLI を確認し、クリアして失敗イベントを発行します。
同期ユーザーエクスペリエンスが与えられたコンポーネントのインタラクション:
sequenceDiagram
participant User
participant App as Service A
participant AppB as Service B
participant Tracker as User Experience Tracker
participant Redis
participant Event as Logs and Metrics
User->>App: Request
activate App
App->>Tracker: Checkpoint 1
Tracker->>Redis: Store Initial State
Tracker->>Event: Emit Start Event
Tracker-->>App: Response
App->>AppB: Forward Request
activate AppB
AppB->>Tracker: Checkpoint 2
Tracker->>Redis: Update State
Tracker->>Event: Emit Intermediate Event
Tracker-->>AppB: Response
AppB-->>App: Response
deactivate AppB
App->>Tracker: Checkpoint 3
Tracker->>Redis: Mark Complete
Tracker->>Event: Emit Success Event
Tracker-->>App: Response
App-->>User: Response
deactivate App
loop Expired User Experience
Tracker->>Redis: Check for Timeout
alt Timeout Reached
Tracker->>Redis: Mark Failed
Tracker->>Event: Emit Failure Event
end
end非同期ユーザーエクスペリエンスが与えられたコンポーネントのインタラクション:
sequenceDiagram
participant User
participant Web as Web Service
participant Worker
participant Tracker as User Experience Tracker
participant Redis
participant Event as Logs and Metrics
User->>Web: Request
activate Web
Web->>Tracker: Checkpoint 1
Tracker->>Redis: Store Initial State
Tracker->>Event: Emit Start Event
Tracker-->>Web: Response
Web->>Worker: Enqueue Job
Web-->>User: Response
deactivate Web
Note over Worker: Job wait in queue
Note over Worker: Job starts
activate Worker
Worker->>Tracker: Checkpoint 2
Tracker->>Redis: Update State
alt Success Case
Worker->>Tracker: End User Experience (Success)
Tracker->>Redis: Mark Complete
Tracker->>Event: Emit Success Event
else Failure Case
Worker->>Tracker: End User Experience (Failed)
Tracker->>Redis: Mark Failed
Tracker->>Event: Emit Failure Event
end
Tracker-->>Worker: Response
deactivate Worker
loop Expired User Experiences
Tracker->>Redis: Check for Missing End Events
alt Timeout Reached
Tracker->>Redis: Mark Failed
Tracker->>Event: Emit Failure Event
end
end認証
SDK とユーザーエクスペリエンス SLI トラッカー間の認証は、GitLab 機能の信頼性メトリクスを歪める可能性がある予期しないイベントの送信を防ぐために必要です。 例: ai-gateway の認証と認可。
SDK 要件
- 直接イベントをプッシュするのではなく、トラッカーに向けてイベントをトリガーする
- ユーザーエクスペリエンス SLI トラッカーへのイベント送信に指数バックオフを使用した自動リトライ
最終更新 June 14, 2026: Merge pull request #403 from kyama0/claude/cool-turing-ls6eck (
bfd74782)