측정 방식
- 결정론적 샘플링. 표본 포함 여부는
traceId만으로 결정됩니다. 누구든 같은 판정을 재계산할 수 있고, 우연은 개입하지 않습니다. - 캐시(Cache) 차원. 캐시된 규칙으로 실행된
HIT와 규칙을 새로 불러와 컴파일까지 수행한MISS(첫 호출, 배포 직후)는 의도적으로 분리된 분포로 관리합니다. 섞으면 두 신호가 모두 가려집니다. - 60초 구간. 관측은 60초 구간 단위로 집계됩니다. 비어 있는 구간은 결측 그대로 보여주고, 보간하지 않습니다.
- 정직한 백분위수. 모든 백분위수에는 측정 수(Samples)
n이 함께 제공됩니다. 각 백분위수는 그 등수 너머의 관측이 3개 이상일 때만 표시합니다 (n×(1−q) ≥ 3, p50은 6건, p95는 60건, p99는 300건부터). 미달이면 값을 지어내는 대신 유보합니다. API에서는null, 콘솔에서는–로 표시됩니다.
느린 규칙 판정 · 상대 기준만
같은 그룹, 버전, 구간(Phase), 캐시 상태 안에서 규칙의 p50이 규칙별 p50 중앙값의 10배 이상이면 느림(Slow)으로 판정합니다. 판정에는n ≥ 100인 규칙이 3개 이상 필요합니다. 이 판정
기준은 백분위수 표시 기준과 별개의 축이라, p99가 아직 유보된 규칙도 느림으로 판정될 수 있습니다.
의도된 선택 두 가지:
- 절대 임계값 없음. “느리다”의 기준은 도메인마다 다릅니다. 배치 파이프라인에서 50ms는 무난하지만 결제 경로에서는 치명적일 수 있습니다. LexQ는 어디에도 밀리초 기준값을 고정해 두지 않습니다.
- 평균이 아니라 중앙값. 규칙이 1, 1, 1, 1, 40ms일 때 평균 기준(8.8ms × 10 = 88ms)은 40ms 규칙이 자신이 끌어올린 평균 뒤에 숨게 합니다. 중앙값 기준(1ms × 10 = 10ms)은 잡아냅니다.
콘솔
정책 그룹 상세에서 성능(Performance) 탭을 엽니다.- 기간 프리셋 1h / 24h / 7d와 HIT / MISS 캐시 토글을 제공합니다. 백분위수별 색상(p50 / p95 / p99)은 카드·표·차트에서 동일하게 쓰입니다.
- 규칙 표에는 측정 수, 백분위수, 기준 대비 배율(
×1.2)이 표시되고, 판정되면 느림 배지가 함께 붙습니다. - 규칙을 클릭하면 상세 화면이 열립니다. 구간 × 캐시 상태별 요약과, 점 하나가 60초 구간 하나인 시계열을 보여줍니다. 점은 구간의 원본값이며, 빈 곳은 그 시간에 실행이 없었다는 뜻입니다.
API
파트너 API의 읽기 엔드포인트 2개입니다 (x-api-key 인증).
versionId(기본값: 운영 중 버전), from / to(ISO-8601 시각,
반개구간 [from, to), 기본값: 최근 24시간), cacheState(HIT | MISS, 기본 HIT,
개요 전용). 시작이 종료와 같거나 늦으면 P-035 오류가 반환됩니다.
응답에서 알아둘 규약:
- 표시 기준(
n×(1−q) ≥ 3) 미달인 백분위수 필드는null이며,n은 항상 포함됩니다. p50은 보이고 p99만null인 응답이 정상입니다. - 판정 가능한 규칙이 3개 미만이면
baselines[].status가INSUFFICIENT_COHORT입니다. droppedRows는 손상되어 건너뛴 기록 수입니다. 결손은 숨기지 않고 셉니다.
CLI & MCP
lexq_profile_overview, lexq_profile_rule.
오버헤드와 보존
프로파일링이 결정 경로를 방해하지 않도록 설계했습니다.- 기본 1% 샘플링에서 실측 오버헤드: 엔진 p50 기준 +0.12% (JMH, 규칙 20개 픽스처). 계측이 실패해도 격리해 집계할 뿐, 결정 경로로는 전파되지 않습니다.
- 구간 데이터는 35일간 조회 가능하며 이후 아카이브됩니다. 모든 플랜에서 제공됩니다.
규칙별 상세는 1% 표본에서 수집되므로 트래픽이 적은 그룹은 규칙 단위 백분위수가 천천히
쌓입니다. 전체 실행 시간은 모든 호출에서 기록됩니다.
–는 기능이 빠진 것이 아니라,
시스템이 추측을 거부한다는 표시입니다.
