API 요청을 기록하고 추적하는 것이 중요한 이유
전체 기사
1) iGaming에서 로그와 추적조차하는 이유
돈과 명성. 합의의 손실/두 배는 직접 손실입니다. 작업이 한 번 이루어 졌다는 증거가 필요합니다.
규제. 보고, 분쟁, 조사-잡지가 없으면 "맹인" 입니다.
SLO와 사건. 대기 시간이 늘어나고 있습니까? 예금 변환 하락? 트레일에는 병목 현상이 나타납니다.
보안 및 사기. 비정상적인 패턴, 재생, 스크립팅 공격은 원격 측정에서 볼 수 있습니다.
결론: 관찰 가능성은 "최종 터치" 가 아니라 돈 디자인의 일부입니다.
2) 정확히 추적하고 기록해야 할 사항
2. 1 체인 전체의 상관 관계
'trace _ id' -에지 → 도메인 서비스의 요청 당 하나 → 버스 → 소비자.
'span _ id' -각 홉마다 'parent _ span _ id' 가 있습니다.
비즈니스 키: 'tenit _ id/brand _ id/region', 'player _ id' (별칭), 'setion _ id', 'round _ id', 'bet _ id', 'relation _ id', 'idempotency _ key'.
2. 2 로그에 쓸 내용 (구조)
시간대가 포함 된 타임 스탬프 ISO-8601.
방법/경로/상태, 지속 시간 (ms), 페이로드 크기 (바이트).
결과 및 오류 클래스 ('business/4xx/5xx'), 코드 ('RG _ BLOCK', 'DUPLICATE', 'IDEMPOTENCY _ MISMATCH').
호스트/존/빌드 버전, 서비스 이름 및 환경 ('prod/eu-west-1').
네트워크 특성: IP/ASN (집계), 사용자 에이전트 (절단/정규화).
2. 3 층-레이어 별
Edge/API 게이트웨이: 인증, 속도 제한, 지리/봇 필터.
도메인 (월렛/보너스/RGS): 명령/이벤트, 사가 상태, 데이터베이스/캐시 대기 시간.
버스/대기열: 지연, 재 시도, DLQ, 데드 업.
Kacca/PSP: 승인, 3-DS, 판매자/경로.
3) 형식: 구조화 된 로그 만
무료 텍스트는 검색 및 경고에 쓸모가 없습니다. JSON 문자열 (하나의 항목-하나의 문자열) 을 사용하십시오.
예 (잘림):json
{
"ts": "2025-10-23T16: 21:05. 481Z "," env ":" prod "," service ":" wallet "," version ":" 1. 14. 3, "" 레벨 ":" INFO "," 이벤트 ":" 베팅. "" trace _ id ":" tr _ a1b2c3 "," span _ id ":" sp _ 01 "," tenent _ id ":" brand-7 "," region ":" EU "," bet _ id ":" b _ 001 "," round _ id ":" r _ 8c12 "," idempotency _ key "정착:" _ r "8c12 _ 1", 대기 시간 _ ms ": 124," 상태 ":" 크레딧 "," 윈 _ 마이너 ": 1460," 통화 ":" EUR "
}4) 추적: 표준으로서의 OpenTelemetry
사가 ('승인 → 커밋 → 정산 → 크레딧') 에서 해/gRPC/DB/캐시 계측 + 사용자 정의 범위.
맥락 전파: 웹 후크-헤더에서 W3C 추적 컨텍스트 ('traceparent', 'tracestate').
수하물: PII가 아닌 브랜드/지역/추적 플래그 만.
샘플링:- 총 트래픽의 경우 기본 1-10%, 화폐 오류/대기 시간> SLO의 경우 항상 100%, 사고시 동적 인 샘플링.
5) WORM 감사 및 불변성
중요한 조치 (한계 변경, 키 회전, 잭팟 구성 요소, 수동 지원 작업) -WORM 스토리지 (많은 글을 한 번 읽으십시오).
요구 사항: 불변성, 서명/해시, 독립적 인 준수 액세스, 법률 별 유지 (예: 5-7 년).
6) PII 및 로그 보안
PAN, CVV, 문서 ID, 전자 메일/전화를 명확한 텍스트로 기록하지 마십시오. 마스크/토큰 화.
로그에서 플레이어의 의사 식별자 (안정적인 해시) 를 사용하십시오.
비밀/토큰은 로그에 들어 가지 않습니다 (SDK/에이전트 레벨의 필터).
데이터 레지던트: 별도의 액세스 역할 (RBAC/ABAC) 이있는 해당 지역의 저널 및 트레일 (EU/UK/BR...).
휴식/운송 중 암호화, 임시 토큰으로 액세스, 최소 권리의 원칙.
7) 플랫폼을 고정하는 메트릭 및 SLO
주요 엔드 포인트 별 대기 시간 p95/p99: '베팅. ',' 베팅을 승인하십시오. ',' 지갑을 정산하십시오. 신용 ',' 계산원. 예금 '.
클래스 및 코드 별 오류율.
대기열/소비자 지연 (타이어), 퇴각% 및 "폭풍".
지연 (결과에서 신용까지), PSP/geo의 예금 성공률.
주제별로 웹 후크 지연 p99.
경고 - "SLO 예산" 에 따라 (창 → 사고의 오류/대기 시간 예산을 초과 함).
8) 조사 및 분쟁: 최소 섭취
크로스 레퍼런스 'trace _ id warder 이벤트 _ id warder demempotency _ key witternation _ id'.
사가 상태의 시간 스냅 샷.
요청/웹 후크의 서명/해시 (비 거부).
'ts' 에 의한 구성 스크린 샷/스냅 샷 (보너스/잭팟 규칙 버전).
9) 저장 및 비용
핫 (7-14 일): 사건 및 사후 검색.
따뜻한 (30-90 일): 제품 분석 및 사기 패턴.
콜드/아카이브 (체 1 년): 법적/규제 요구.
필터와 샘플링을 적용하고 장치를 저장하고 TTL을 켜고 압축합니다. (PHP 3 = 3.0.6, PHP 4)
10) 점검표
플랫폼/연산자
- 모든 곳에 'trace _ id', 'demempotency _ key', '테넌트/브랜드/지역' 태그가 있습니다.
- 구조화 된 JSON 로그; HTT/gRPC/DB/cash/bus의 OpenTelemetry.
- 크리트 동작에 대한 WORM 감사; 규제에 의한 유지.
- PII/비밀 마스킹; 잡지와 산책로-지역별.
- SLO 대시 보드: p95/p99, 오류율, 대기열 지연, 결제 지연, 웹 후크 지연.
- SLO 예산에 대한 경고; 열화중인 자동 샘플링 트레일.
- DR/xaoc 운동: 이중 배달, 지역 가을, 지갑 지연.
- 로그 및 트랙에 대한 액세스 - RBAC/ABAC, "4 개의 눈" 수출.
공급자 (RGS/live/JP)
- 모든 통화 및 웹 후크에 'trace _ id' 및 'deidempotency _ key' 를 보내거나 스캔하십시오.
- 통나무-구조화; 오류 코드/클래스가 커밋됩니다.
- 웹 후크 서명; '이벤트 _ id' 와 중복 제거를 저장합니다.
- 결과/결제를 추적하고 'settle _ lag' 를 측정하십시오.
- PII 마스킹; 토큰/키가 기록되지 않았습니다.
- 샘플링을 합리적으로 만듭니다 (오류 및 금전적 이상은 100%).
11) 반 패턴 (적기)
구조와 'trace _ id' 가없는 텍스트 로그.
쓰기 작업 로그에 'idempotency _ key' 가 없습니다.
PII/비밀 로그 작성, 베어러 토큰 작성.
구별없이 하나의 버킷에있는 모든 지역의 로그.
크리켓 활동을위한 WORM 부족; "편집 가능한" 감사.
이벤트는 Outbox/CDC → "잃어버린" 작업을 우회하여 게시됩니다.
필터없이 블라인드 100% 추적 (스토리지 파멸, 노이즈).
대시 보드 SLO/경고 없음; 조사는 몇 시간 동안 지속됩니
12) 단계별 구현 (현실적)
1. 모든 계약 (REST/gRPC/webhooks) 에서 단일 'trace _ id' 및 'deidempotency _ key' 를 입력하십시오.
2. JSON으로 번역 로그; 필요한 필드 (서비스, 버전, 지역, 타임 스탬프, 코드) 를 추가하십시오.
3. OpenTelemetry 및 컨텍스트 전파를 연결합니다. 돈 방법에 대한 최소 추적.
4. SLO 대시 보드 및 경고 설정; 예산을 정의하십시오.
5. 중요한 행동에 대한 WORM 감사 사용; 유지를 결정하십시오.
6. PII/비밀 마스킹, 로그 액세스 제한을 소개합니다.
7. 혼돈 사건과 운동을 추가하고 사후 연습.
8. 스토리지 최적화: 샘플링, TTL, 아카이브.
13) 결론
로그 및 추적은 "편리한" 것이 아니라 플랫폼 및 iGaming 제공 업체의 취소 할 수없는 의무입니다. 구조화 된 로그, 엔드 투 엔드 트레일, WORM 감사, PII 보호 및 SLO 관찰 가능성은 사고를 관리 가능한 이벤트로 바꾸고 분쟁을 재현 가능한 사례로 만듭니다. 이러한 기초에서 돈은 한 번 움직이고 언제든지보고가 재현되며 팀은 토너먼트가 절정에 달하거나 릴리스 중에도 빠르고 침착합니다.
