메트릭 아키텍처
메트릭 아키텍처
메트릭 아키텍처는 모호하지 않은 정의, 재현 가능한 계산, 투명한 액세스 및 조직 전체의 안정적인 지표 작동을 제공하는 규칙, 아티팩트 및 서비스 시스템입니다. 목표는 "MAU", "Retention D30" 또는 "ARPPU" 가 모든 대시 보드, 실험 및 보고서에서 동일하게 간주되는 것입니다.
1) 원칙
1. 공식 및 참고 서적에 대한 단일 진실의 근원.
2. 구현과 의미론의 분리: 비즈니스 정의는 모든 SQL/랩톱이 아닌 의미 계층에 있습니다.
3. 관리되는 히스토리 마이그레이션으로 메트릭, 스키마 및 공식 (v1 → v2) 을 수정합니다.
4. 재현성 및 테스트 가능성: 계산은 결정 론적이며 테스트에서 다룹니다.
5. 관찰 가능성: SLO 및 경고와 함께 신선도, 충만, 일관성 및 드리프트.
6. 보안 및 개인 정보 보호: PII 최소화, RLS/CLS, 감사.
7. 코드로서의 운영 체제: CI/CD가있는 저장소의 정의, 변환, 정책.
2) 아키텍처 레이어
소스 데이터: 이벤트/트랜잭션, 참고 서적, 모델 로그/인프라.
통합 및 청소: CDC/증분 하중, 제거, 시간대 통일.
데이터 모델 (DWH): 별/눈송이, 천천히 변화하는 측정 (SCD), 대리 키.
시맨틱 메트릭 계층: 균일 한 정의, 집계, 필터, 타임 그레인, 롤업 로직.
디자인 레이어: 배치/마이크로 패치/스트림; 창문, 워터 마크, 열쇠.
카탈로그 및 사전: "여권 지표", 계보, 소유자, 권리.
액세스 및 소비: BI/대시 보드, API 메트릭, 업로드, 실험/AB.
3) 데이터 및 메트릭 계약
소스 계약 (이벤트/테이블)
스키마: 필드, 유형, nullity, 기본 키.
SLA: 신선도 (예: "지연 10 분 지연"), 주파수, 최대 지연 도착.
품질: 주요 고유성, 유효한 값 도메인, 시간대, demempotency.
변경: 계획 진화 정책 (뒤로/앞으로), 편차 계획.
미터 계약
이름/ID: 'RET _ D30 _ v2'
Domaine/소유자: 제품 분석
정의 (인간 언어)
공식: SQL/pseudocode + 입력 상점/시맨틱 객체
세분성/시간적 논리: 주간/주; 포인트 인 타임 규칙, 시간대
기본 세그먼트/필터
단위 및 통화 (전환율/날짜)
SLO: 신선도
버전/기록 변경/유효 날짜
가드 레일: 유효한 범위, Winzorization 규칙 p1/p99
4) 시맨틱 메트릭 레이어
계층의 작업은 정의 및 집계 규칙을 중앙에 저장하는 것입니다
요소: 치수 (날짜, 국가, 플랫폼), 사실 (이벤트, 수익), 지표 (ARPU, 유지 D30), 계산 된 필드, 일정 (일/주말, 공휴일).
시간 동작: 캘린더 테이블, 지연, 코호트, "슬라이딩" 창 (7/30/90).
롤업 및 일관성: 이중 계산 (별개의 사용자) 을 제외하고 일 = 월 단위로 계산하십시오.
혼합 조정: 정직한 YoY를 위해 채널/국가의 지속적인 혼합으로 정규화.
다중 요금/가로: 거래일에 기본 통화로 조정; 로컬 및 "표준" UTC 슬라이스.
5) 계산: 배치, 마이크로 패치, 스트림
배치: 야간/시간별 작업, 전체/증분 재 계산, demempotency 제어.
Microbatch: 작동 대시 보드의 경우 1-15 분 창.
스트림: 타이어를 통한 이벤트; 창 (텀블링/슬라이딩/세션), 워터 마크 (늦은 데이터), 정확히 한 번 의미론 (교착 상태 + 오프셋 저장소).
- 작동 KPI를위한 'HOP 5m, WINDOW 1 h';
- 일일 지표에 대한 'TUMBLE 1d';
- 세션을위한 'SESSION 30m'.
6) 품질과 검증 가능성
데이터 테스트: 회로도, 도메인 (범위), 참조 링크.
측정 항목 테스트: 불변 (DAU 계수 MAU), 비어 있지 않은 세그먼트, 단조로운 기대 (누적).
조정: 의미 계층과 참조 보고서/회계 사이.
데이터 상태: 신선도, 완전성, 중복, 분수, 비정상적인 점프.
드리프트 메트릭: 주요 기능, 특히 ML 메트릭의 PSI/KL/JS.
7) 이주 및 이주
포뮬러 버전은 'METRIC _ 이름 _ vN' 입니다. 버전을 변경하지 않고 정의를 "조용히" 변경하는 것은 금지되어 있습니다.
마이그레이션 전략:- 나란히: v1과 v2는 병렬로 계산됩니다. 사용자의 화해 및 교육이 수행됩니다.
- 컷오버: 낮은로드 창에서 소비자를 v2로 전환; 압축 파일 v1.
- 역사의 재 계산: 과거 데이터에 따른 백필; 차이 프로토콜 (diff report).
- 커뮤니케이션: 변경 로그, 입국 날짜, 영향을받는 사람, 지침.
8) 측정 데이터 모델
사실: 곡물 (이벤트 _ id, 트랜잭션 _ id, 사용자 _ day), 이벤트 시간, 합계/값.
차원: 사용자, 장치, 지리, 채널, 제품, 캘린더; 역사를위한 SCD 유형.
키: 대리 ID, 안정적인 비즈니스 키, 매핑 테이블.
중복 방지: 신원 규칙 (사용자 병합), 세션 "접착" 창.
9) 단위, 통화, 계절성
단위/형식: 명시 적 단위, 반올림, 스케일 (로그/선형).
다중 요율: 거래일에 환율로 전환; "원시" 및 정규화 된 금액을 모두 저장하십시오.
계절성: YoY 및 계절 지수; 별도의 "휴일" 효과.
10) 보안 및 액세스
RLS (Row-Level Security): 국가/브랜드/파트너 별 메트릭에 대한 액세스.
칼럼 레벨 보안 (CLS) -마스킹 PII/금융 분야.
감사: 누가 메트릭을 요청했는지, 어떤 필터가 데이터를 내보냈는지.
API 차별화: "역할별 집계" 대 "상세 업로드".
11) 관찰 및 SLO
SLO 신선도: 예를 들어 "작동 KPI-매일 15 분 지연-현지 시간 06: 00까지".
가용성 SLO: 099입니다. API/시맨틱 레이어의 경우 9% 입니다.
경고: SLO 연체율, 메트릭 점프, NLE/중복 성장, 분산 v1 v2> X%.
런북: 저하 될 때해야 할 일-RCA 단계, 대체 (예: 마지막 유효한 "스냅 샷 메트릭" 으로 전환).
12) 실험 및 지표
가드 레일 지표: 대기 시간, 복원력, FPR/FNR 득점.
A/B에 대한 균일 한 정의: 동일한 의미 계층을 통한 변환, 보존, NSM.
최소 구별 효과 (MDE), 전력 분석: 메트릭 카드에 매개 변수를 저장합니다.
인과 적 속성: 혼합 조정 및 제어 그룹별 정책.
13) API 지표 및 소비
"GET/metrics/{ Name}?" = 2025-09-01 & to = 2025-10-01 & dims = country, platform & filters = channel: pay '.
정책: 한계, 캐시, 페이지 매김, demotent "수출".
버전: 'X-Metric-Version: v2' 헤더, 제거 경고.
14) 패턴 및 아티팩트
메트릭 패스포트 (예)
코드/버전: 'ARPPU _ v3'
정의: 해당 기간 동안 유료 사용자 당 평균 수익
(PHP 3 = 3.0.6, PHP 4)
세분성: 일; 롤업: 주/월 = 분자 합계/분모 합계
출처: 'fact _ paymes _ v2', 'dim _ users _ sc'
단위: 통화 'base _ ccy'; 현재 환율에서 전환
기본 필터: 활성 시장, 테스트 트랜잭션 제외
SLO: 신선도 API가 99 개 이상입니다 9%
가드 레일: ARPPU 방어 [0; 10 000]; vinzorization p1/p99
소유자: 수익 분석; 개정 날짜: 2025-10-01
체크리스트 메트릭 릴리스
- 정의와 공식이 동의하고 테스트로 다룹니다
- 시맨틱 객체 생성; 계보 문서화
- 백필 및 참조 완료
- SLO/경고가 구성됩니다. 런북 준비
- 권리 및 RLS 구성; PII 숨겨진
- 대시 보드/실험으로 대체 된 오래된 버전
- Changelog/통신 전송
시점별 SQL 의사 코드 (예: 유지 D30)
sql
WITH cohort AS (
SELECT user_id, MIN(event_date) AS signup_date
FROM fact_events
WHERE event_type = 'signup'
GROUP BY 1
),
activity AS (
SELECT user_id, event_date
FROM fact_events
WHERE event_type = 'app_open'
),
ret AS (
SELECT c. signup_date,
COUNT(DISTINCT CASE WHEN a. event_date = c. signup_date + INTERVAL '30 day' THEN a. user_id END) AS returned,
COUNT(DISTINCT c. user_id) AS cohort_size
FROM cohort c
LEFT JOIN activity a
ON a. user_id = c. user_id
AND a. event_date BETWEEN c. signup_date AND c. signup_date + INTERVAL '30 day'
GROUP BY 1
)
SELECT signup_date, returned / cohort_size AS retention_d30
FROM ret;
15) 빈번한 실수와 피하는 방법
조용한 공식 편집: 항상 버전과 변경 로그를 통해.
"모든 랩톱마다 다름" 메트릭: 시맨틱 레이어/API를 강제합니다.
일관되지 않은 우편 번호/통화: 중앙 일정 및 FX 테이블.
이중 사용자 회계: 롤업 규칙 및 고유 키.
불투명한 신선도: 지연/업데이트 시간을 분명히 보여줍니다.
한 엔지니어에 대한 의존성: 모든 것은 코드와 같으며 검토와 통화가 있습니다.
합계
메트릭 아키텍처는 사전 + 의미 계층 + 강력한 계산 + 거버넌스 및 SLO입니다. 설명 된 원칙 (계약, 테스트, 버전, 관찰 가능성, 안전) 을 따르면 "숫자 분쟁" 에서 지속 가능한 제품 및 비즈니스 관리 메커니즘으로 메트릭을 전환합니다.