GH GambleHub

Análisis en tiempo real

1) Propósito y valor empresarial

La analítica en tiempo real (RTA) proporciona reacciones en segundos en lugar de relojes:
  • AML/Antifraude: estructuración de depósitos, ataques velocity, transacciones de riesgo.
  • Juego responsable (RG): exceso de límites, patrones de riesgo, auto-exclusión.
  • SRE/Operaciones: detección temprana de degradación de SLA, picos de error, sobrecalentamiento de clústeres.
  • Producto y marketing: disparadores de personalización, misiones/misiones, segmentación real-time.
  • Informes operativos: near-real-time GGR/NGR, dashboards de salas/proveedores.

Puntos de referencia de destino: p95 end-to-end 0. 5–5 с, completeness ≥ 99. 5%, disponibilidad ≥ 99. 9%.


2) Arquitectura de referencia

1. Ingest/Edge — `/events/batch` (HTTP/2/3), gRPC, OTel Collector; validación de circuitos, anti-toma, geo-enrutamiento.
2. El bus de eventos es Kafka/Redpanda (lote por 'user _ id/tenant/market', DLQ, retoque de 3-7 días).
3. Procesamiento de streaming - Flink/Spark Structured Streaming/Beam: operadores de stateful, CEP, watermarks, allowed lateness, dedoop.
4. Enriquecimiento en línea - Redis/Scylla/ClickHouse lookups (límites RG, KYC, BIN→MCC, IP→Geo/ASN), llamadas asíncronas con timeout y fallback.
5. Serving - ClickHouse/Pinot/Druid (escaparates operativos de 1-5 minutos), Feature Store (señales en línea), webhooks/ticketing/SOAR.
6. Lakehouse - Bronze/Silver/Gold para la consolidación a largo plazo, la reproducción y la soldadura.
7. La observabilidad es métricas de paipelines, treising (OTel), logs, lineage y cost-dashboards.


3) Señales y taxonomía

Pagos: 'pago. deposit/withdraw/chargeback`.
Juegos: 'game. bet/payout ', sesiones.
Autenticación y comportamiento: 'auth. login/failure`, device-switch, velocity.
Quirófanos: latency, error-rate, reinicio de pods, saturation.
Cumplimiento: cribado de sanciones, banderas RG, eventos DSAR.

Cada tipo tiene un propietario (domain owner), un esquema, un SLO de frescura y una política de datos late.


4) Ventanas, watermarks y datos late

Ventanas: tumbling (fix.) , hopping (superposición), session (por inactividad).
Watermark: la frontera del «conocimiento en el tiempo» (generalmente 2-5 min).
Eventos tardíos: preemisiones de ajustes, bandera 'late = true', DLQ cuando llega muy tarde.

Ejemplo de Flink SQL (10-min de depósitos velocity):
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream.payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);

5) Agregaciones CEP y stateful

Clave: 'user _ id', 'device _ id', 'payment. account_id`.
Estado: contadores deslizantes/sumas, filtros bloom para dedup, TTL.
Patrones CEP: structuring (<umbral, ≥N veces, más allá de la ventana T), device-switch, RG-fatigue.

Seudocódigo CEP:
python if cnt_deposits(last=10MIN) >= 3 and sum_deposits(last=10MIN) > THRESH and all(d.amount < REPORTING_THRESHOLD):
emit_alert("AML_STRUCTURING", user_id, snapshot())

6) Exactly-Once, orden e idempotencia

Entrega en bus + dedoup por 'event _ id' en procesamiento (TTL 24-72 h).
Orden: lote de llaves (orden local garantizado).
Sink: commits transaccionales (2-phase) o idempotent upsert/merge.
Outbox/Inbox: publicación transaccional de eventos de dominio desde OLTP.


7) Enriquecimiento en línea y Feature Store

Lookup: límites RG, estados KYC, BIN→MCC, IP→Geo/ASN, mercados/impuestos, FX en el momento del evento.
Desafíos asíncronos: API sancionadores/RR con timauts; si el error es 'unknown' + retray/caché.
Feature Store: negociación online/offline; una base de código de transformación.


8) Exhibiciones en tiempo real y serving

ClickHouse/Pinot/Druid: unidades de segundo/minuto, vistas materializadas, SLA por latencia de 1-5 min.
API/GraphQL: baja latencia para dashboards/widgets.
Alertas: webhooks/Jira/SOAR con un contexto enriquecido (trace_id, eventos last).

Ejemplo de ClickHouse (GGR de minuto a minuto):
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream.game_events
GROUP BY ts_min, market, provider_id;

9) Métricas, SLI/SLO y dashboards

SLI/SLO recomendados:
  • p95 ingest→alert ≤ 2 s (reglas críticas), ≤ 5 c (otras).
  • Completeness de la ventana T ≥ 99. 5%; Schema validity ≥ 99. 9%; Trace coverage ≥ 98%.
  • Disponibilidad del servicio de streaming ≥ 99. 9%; late-ratio ≤ 1%.
Dashboards (mínimo):
  • Lag por lotes/topic; Tiempo de compra de los operadores; tamaño del estado.
  • Embudo «sobytiye→pravilo→keys», precision/recall por dominios.
  • Tarjeta térmica late/completeness; tarjeta de teclas «calientes».

10) Streaming DQ (calidad)

Validaciones de Ingest: schema/enums/size-limits, anti-toma.
En el hilo: completeness/dup-rate/late-ratio, corrección de ventanas (sin doble contabilización).
Políticas de reacción: critical → DLQ + pager; mayor/menor → teging + informe.

Ejemplo YAML:
yaml stream: payments rules:
- name: schema_valid type: schema severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
- name: dedup_window type: unique keys: [event_id]
window_minutes: 1440

11) Privacidad, seguridad y residencia

Minimización PII: seudonimización de ID, enmascaramiento de campos sensibles, tokenización PAN/IBAN.
Residencia de datos: transportadores regionales (EEA/UK/BR), claves KMS individuales.
DSAR/RTBF: edición selectiva en escaparates downstream; Legal Hold para casos/informes.
Auditoría: registros de acceso/cambios de reglas inmutables, registro de lanzamientos.


12) Economía y productividad

Charding/keys: evita las llaves «hot» (salting/composite), el equilibrio de lotes.
Estado: TTL, snapshots compactos, tuning RocksDB/state backend.
Preagregaciones: reducir en las primeras etapas para temas ruidosos.
Sampling: sólo para métricas no críticas (no transacciones/cumplimiento).
Chargeback: presupuestos para temas/jobs, cuotas de réplicas y peticiones pesadas.


13) Procesos y RACI

R: Streaming Platform (infra/lanzamientos), Domain Analytics (reglas/fichas), MLOps (scoring/Feature Store).
A: Head of Data/Risk/Compliance por dominios.
C: DPO/Legal (PII/retention), SRE (SLO/incidentes), Arquitectura.
I: Producto, Soporte, Marketing, Finanzas.


14) Hoja de ruta para la aplicación

MVP (2-4 semanas):

1. Kafka/Redpanda + 2 topics críticos (por ejemplo, 'payments', 'auth').

2. Flink-joba con watermark, dedoop y 1 regla CEP (AML o RG).

3. Escaparate en línea en ClickHouse/Pinot (1-5 min), dashboards lag/completeness.

4. Canal de incidentes (webhooks/Jira), SLO básicos y alertas.

Fase 2 (4-8 semanas):
  • Enriquecimiento en línea (Redis/Scylla), Feature Store, lookups asíncronos.
  • Control de reglas como código, canario/A-B, streaming DQ.
  • Regionalización de transportadores, procedimientos DSAR/RTBF, Legal Hold para casos.
Fase 3 (8-12 semanas):
  • Multi-región active-active, simulador «replay & what-if», calibración automática de umbrales.
  • Escaparates de oro-stream (GGR/RG/AML), informes near-real-time.
  • Costa-dashboards, chargeback, enseñanzas de DR.

15) Ejemplos (fragmentos)

Flink CEP — device-switch:
sql
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY event_time
MEASURES
FIRST(A.device_id) AS d1,
LAST(B.device_id) AS d2,
COUNT()      AS cnt
PATTERN (A B+)
DEFINE
B AS B.device_id <> PREV(device_id) AND B.ip_asn <> PREV(ip_asn)
) MR
Kafka Streams - Filtro idempotente:
java if (seenStore.putIfAbsent(eventId, now()) == null) {
context.forward(event);
}

16) Lista de verificación antes de la venta

  • Esquemas/contratos en Registry, pruebas de back-compat verde.
  • Se incluyen watermark/allowed lateness, dedoup y DLQ.
  • SLO y alertas personalizadas (lag/late/dup/state size).
  • Enriquecimiento con cachés y timautas; fallback «unknown».
  • RBAC/dual-control en reglas/modelos; el registro de cambios está habilitado.
  • Documentación de normas/escaparates; runbook 'y réplica/retroceso.

17) Errores frecuentes y cómo evitarlos

Ignora el momento del evento: sin watermarks, las métricas «flotan».
No hay dedo: alertas falsas, doble contabilidad.
Teclas calientes: distorsión de lotes → salting/resharding.
APIs externas sincrónicas en la ruta de acceso: sólo async + caché.
Costo no administrado: preagregaciones, estado TTL, cuotas, control de costos.
Falta de simulador: apagado sin «replay» → regresión.


18) Resultado

La analítica en tiempo real no es un «BI rápido», sino un circuito controlado con contratos, lógica estateful, CEP, watermarks, enriquecimiento en línea y estrictos SLO. Siguiendo estas prácticas, la plataforma recibe señales y soluciones precisas en segundos, manteniendo el cumplimiento, los escenarios de productos y la estabilidad operativa a un costo controlado.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.