통계 및 분석 API: 이벤트, 집계, 유지
전체 기사
1) 외부 분석 API가있는 이유
파트너/제공자: SLA 컨텐츠 모니터링, RTP, 참여.
마케팅/CRM: 지표 (DAU, 예금 깔때기) 를 기반으로 한 캠페인을 트리거하십시오.
운영/금융: 거의 실시간 GGR/NGR, 결제 성공, 웹 후크 지연.
제품: 인앱 통계 위젯, A/B 패널.
목표는 이해할 수있는 의미론과 SLA로 이벤트와 집계를 안전하고 예측 가능하게 돌려주는 것입니다.
2) 손가락 아키텍처
생산자 (PAM/Wallet/RGS/Payments/Kafka/CDC)
│
섭취 API -스트림 (Kafka/Pulsar) -레이크 하우스 (델타/아이스 버그)
(PHP 3 = 3.0.6, PHP 4)
안녕하세요 - 안녕하세요 - 안녕하세요 - 안녕하세요 - 안녕하세요
(캐시, RBAC/RLS, 속도 제한)이벤트: 적어도 한 번은 '이벤트 _ id/dedempotency _ key' 의 할아버지.
집계: 사전 계산 된 롤업 (1m/5m/1h/1d) + 즉석.
Retenchen: Gold Marts 위의 코호트 엔진.
자리를 잡으려면 서버를 선택하십시오.
3) 이벤트 모델: 최소 표준
3. 공통 필드 1 개
json
{
"이벤트 _ id": "uIS", "이벤트 _ 유형": "베팅. "" arched _ at ":" 2025-10-23T16: 21: 05Z "," inested _ at ":" 2025-10-23T16: 21: 06Z "," tenant _ id ":" brand-7 "," region ":" EU "," 플레이어 _ id ":" p _ 19f3 "/
"trace _ id": "tr _ a1b2c3", "skima _ version": "1. 3. 0, "" 페이로드 ": {...}
}규칙: UTC 타임 스탬프, 'player _ id' - 별칭, 사소한 단위의 돈.
3. 2 가지 핵심 유형
4) 섭취 API (타사 소스 용)
일련의 이벤트 보내기
POST/v1/이벤트: 배치
헤더: X-Idempotency-Key: ev _ 20251023 _ 001
[
{"이벤트 _ id": "...," 이벤트 _ 유형 ":" 베팅. 배치,...}, {"이벤트 _ id": "...," 이벤트 _ 유형 ":" bet. 정착, "..}
]
→ 202 {"수락": 2, "중복": 0, "trace _ id": "tr _ a1b2"}보증: 적어도 한 번; 복제본은 '이벤트 _ id' 로 은색으로 필터링됩니다.
5) 집계 API: 시계열 및 슬라이스
5. 1 타임 시리즈 (시간 지표)
GET/v1/분석/타임 시리즈
? metric = ggr//ggr, ngr, dau, deposits _ success, rtp
세분성 = 5m//1m/5m/1h/1d
= 2025-10-22T00: 00: 00Z & to = 2025-10-23T00: 00: 00Z
(PHP 3, PHP 4)
(PHP 3 = 3.0.6, PHP 4)
→ 200 {
"메트릭": "ggr", "세분성": "5m", "시리즈": [
{"ts": "2025-10-22T00: 00: 00Z", "brand _ id": "brand-7", "값 _ minor": 120030}, {"ts": "2025-10-22T00: 05: 00Z" "brand-7", 값 _ 20}
(PHP 3 = 3.0.6, PHP 4)
}5. 슬라이스/탑 2 개 (그룹 별)
GET/v1/분석/슬라이스
? metric = rtp & dim = game _ id & from = 2025-10-22 & to = 2025-10-23
(PHP 3 = 3.0.6, PHP 4)
→ 200 {"항목": [{"game _ id": "g _ 01", "값": 0. 956},...] }5. 깔때기 3 개
POST/v1/분석/깔때기
{
"단계": [
{"이벤트": "지불. 의도 "}, {" 이벤트 ":" 지불. 승인 된 "}, {" 이벤트 ":" 지불. "}, {" 이벤트 ":" 지갑. 신용, "" 이유 ":" 예금 "}
], "창 _ sec": 3600, "필터": {"region": "EU", "brand _ id": "brand-7"}
}
→ 200 {
"총": 12450, "단계": [
{"이름": "의도", "수": 12450, "비율": 1. 0}, {"이름": "승인", "수": 11020, "비율": 0. 885}, {"이름": "캡처", "카운트": 10110, "레이트": 0. 811}, {"이름": "크레딧", "카운트": 10050, "레이트": 0. 807}
]
}5. 한계 및 캐시 4 개
토큰/브랜드/지역당 요율 제한.
'ETag' to 응답; '무 일치' 지원.
TTL 캐시는 세분성에 따라 다릅니다 (예: 5m → TTL 60-120 s).
6) 유지 및 코호트: 규칙 및 API
6. 1 정의 (규칙)
DAU/WAU/MAU: 활성화 된 경우. '또는' 지갑 배치. 크레딧 (예금) 'и독점' 세션. (PHP 3 = 3.0.6, PHP 4)
첫 번째 입금 (종종 LTV) 또는 등록 (참여) 별 코호트.
보존 D1/D7/D30: 코호트의 비율이 브랜드 시간대별 당일 창 +/-공차로 돌아 왔습니다.
창에서 고유 한 'player _ id' 를 반복해서 방문하는 것을 고려합니다.
6. 2 개의 API 코호트
POST/v1/분석/보존
{
"집단": "첫 번째 _ 예금", "시작 _ 날짜": "2025-09-01", "종료": "2025-09-30", "return _ event": "bet. 배치, "일": [1,7,14,30], "필터": {"region": "EU", "brand _ id": "brand-7"}
}
→ 200 {
"코호트": "첫 번째 _ 예금", "행": [
{"cohort _ date": "2025-09-01", "크기": 1820, "d1": 0. 36, "d7": 0. 22, "d14": 0. 18, "d30": 0. 12}, {"cohort _ day": "2025-09-02", "크기": 1714, "d1": 0. 35, "d7": 0. 23, "d14": 0. 19, "d30": 0. 13}
]
}6. 3 LTV/누적
GET/v1/analytics/ltv? 코호트 = 첫 번째 _ 예금 및 통화 = EUR & 수평선 = 90d
→ 200 {"cohorts": [{"날짜": "2025-09-01", "ltv _ minor": [0,150,230,280,...]}]}7) 지표 의미론 (논쟁하지 말 것)
모두-UTC에서 통화 및 사소한 단위로; 멀티 커런시는 고정 FX를 Data Lake로 변환하여 해결됩니다.
8) 버전, 필터 및 호환성
경로: '/v1/... '; 새로운 메트릭/필드-옵션.
차이나, 브랜드, 지역, 공급자 _ id, 게임 _ id, 방법, 통화, 장치, 지오 '.
페이지 기반: 커서 기반 ('다음 _ 커서').
깨기 → '/v2 '+ 거부/일몰 헤더 및 변경 로그.
9) 보안 및 액세스
OAuth2 클라이언트 자격 증명 (단기 토큰), B2B 용 mTLS.
RBAC/ABAC: 메트릭/슬라이스 권한; '브랜드/지역' 별 RLS 필터.
PII: API는 PII를 제공하지 않으며 필요한 경우 집계/의사 ID 만 제공합니다.
거주: 해당 지역으로의 라우팅 요청; 지역 간 데이터-허용되지 않습니다.
요율 제한 및 할당량, 남용 방지; 액세스에 대한 WORM 감사.
10) SLO 및 관찰 가능성
SLO 벤치 마크:- 'GET/timeseries gran = 5m' p95 묻은 500-800 ms, 'GET/슬라이스'
- 지표: 대기 시간 p50/p95/p99, 오류율 (4xx/5xx), 캐시 적중, 요청/스캔 바이트 (OLAP), 각 롤업 지연에 대한 신선도 지연.
- 로그: 구조화 된 'trace _ id', 쿼리 필터 (PII 제외), 스캔 수.
11) 현금, 예비 계산, 비용
롤업 테이블: 키 메트릭으로 1m/5m/1h/1d → fast 'timeseries'.
무거운 섹션/코호트에 대한 재료보기.
ETag + max-age; 늦은 사건의 장애는 점진적으로 발생합니다.
전략 "핫/콜드": 핫 쿼리-OLAP 창고; 보관소 - 호수에.
요청 당 "스캔 바이트" 제한; 스케줄러에 대한 힌트.
12) 임베디드 및 수출
RLS 토큰이 포함 된 서명 된 IM/iFrame을 통한 내장 위젯.
크기 제약 조건 및 임시 참조를 사용하여 작업 (작업 API) 별로 차출하십시오.
업로드 준비 상태에 대한 웹 후크 알림.
13) 점검표
건축
- 통합 이벤트 스키마, 시버, 레지스트리; '이벤트 _ id' 의 할아버지.
- 롤업과 주요 사례에 대한 실질적인 견해.
- RLS/RBAC/ABAC, 거주, 단기 토큰.
- 캐시 (ETag/TTL), 요율 제한, 할당량.
시맨틱
- GGR/NGR/RTP/DAU/보존 정의가 문서화되어 있습니다.
- 통화-사소한 단위; 이벤트 시점에 FX가 수정되었습니다.
- 디스플레이의 브랜드 시간대를 고려하여 UTC 별 유지.
작업
- SLO/신선도 및 대기 시간 대시 보드.
- 액세스/수출에 대한 WORM 감사.
- DR/xaoc 연습: 롤업 지연, 요청의 혼란, 늦은 사건.
14) 반 패턴 (적기)
"Raw" OLTP 테이블은 API에 직접 제공됩니다.
명령 간의 일관되지 않은 메트릭 정의.
중복 제거 및 워터 마크 → 이중/손실 이벤트 없음.
캐시/할당량이없는 즉시 제한되지 않은 집계 → 비싸고 느린 요청.
거주 정책이없는 지역 간 집계.
PII/플레이어 세부 정보를 공개 응답으로 반환하십
'/v2 '및 우울증이없는 조용한 브레이킹 체인지.
15) 미니 스펙 (TL; DR)
이벤트: '/v1/이벤트: 배치 '(적어도 한 번은' 이벤트 _ id '로 디업).
타임 시리즈: '/v1/분석/타임 시리즈? 메트릭 =... & 세분성 =... (롤업 + к함수).
슬라이스: '/v1/분석/슬라이스? metric =... & dim =... '.
깔때기: '/v1/분석/깔때기 '(창, 단계, 필터).
보존/코호트: '/v1/분석/보존 '(+ LTV).
보안: 브랜드/지역 토큰 당 OAuth2 + mSL, RLS, WORM 감사.
SLO: p95 λ0. 5-2 초; 신선함은 2-5 분 정도입니다.
통계 및 분석 API는 "SELECT FROM, big _ table" 이 아니라 안정적인 이벤트, 사전 읽기 및 캐시 된 집계, 엄격하게 정의 된 보존 및 코호트, 보안 (RLS/RBAC) 및 SLO가 이해할 수있는 거주지 등 메트릭 계약입니다. 따라서 논란의 여지가없고 누출 또는 저장 과부하의 위험없이 파트너, 제품 및 BI에 신속하고 저렴하며 예측 가능하게 데이터를 제공합니다.
