Enterprise-grade data protection with defense-in-depth architecture. Every layer encrypted, every access audited, every byte accounted for.Proteccion de datos de nivel empresarial con arquitectura de defensa en profundidad. Cada capa encriptada, cada acceso auditado, cada byte contabilizado.
End-to-End EncryptionCifrado de Extremo a Extremo
✓TLS 1.3 on all endpoints — zero plaintext transmissionTLS 1.3 en todos los endpoints — cero transmision en texto plano
✓AES-256 encryption at rest for all stored dataAES-256 cifrado en reposo para todos los datos almacenados
✓HMAC-SHA256 webhook signatures for integrity verificationHMAC-SHA256 firmas de webhooks para verificacion de integridad
✓NVMe RAID-1 mirrored storage — zero single point of failureNVMe RAID-1 almacenamiento espejado — cero punto unico de falla
✓R2 WAL — write-ahead log with 11 nines durability, zero data loss guaranteeR2 WAL — write-ahead log con 11 nueves de durabilidad, garantia cero perdida de datos
✓Self-healing monitor — 4 health probes every 60s, auto-remediation via systemctl restartMonitor auto-reparable — 4 probes de salud cada 60s, auto-remediacion via systemctl restart
Role-Based Access ControlControl de Acceso Basado en Roles
✓JWT authentication with short-lived tokens + auto-refreshAutenticacion JWT con tokens de corta vida + auto-renovacion
✓Multi-tenant isolation — partners never see other partners' dataAislamiento multi-tenant — partners nunca ven datos de otros
✓Revenue masking — partners see commissions only, never revenueEnmascaramiento de revenue — partners solo ven comisiones
Granular Consent EngineMotor de Consentimiento Granular
✓8-bit consent bitmask per device — 7 independent consent flagsBitmask de consentimiento de 8 bits por dispositivo — 7 flags independientes
✓Query-level enforcement: DSP exports, cross-client data, and personalization gated by consentEnforcement a nivel de query: exportaciones DSP, datos cross-client y personalizacion controlados por consentimiento
✓LFPDPPP compliant (Mexico) + GDPR-ready architectureCumple con LFPDPPP (Mexico) + arquitectura lista para GDPR
✓No PII stored — only hashed identifiers in identity graphSin PII almacenado — solo identificadores hasheados en el grafo de identidad
Compression & StorageCompresion y Almacenamiento
✓ZSTD(3) + Delta + Dictionary encoding — 8-10x compression on event dataZSTD(3) + Delta + Dictionary encoding — 8-10x compresion en datos de eventos
✓~16 bytes stored per event (vs ~130 bytes raw) — columnar analytics engine~16 bytes almacenados por evento (vs ~130 bytes crudos) — motor analitico columnar
✓Automatic TTL: 24-month retention with configurable per-consent extensionTTL automatico: retencion de 24 meses con extension configurable por consentimiento
✓Tiered storage: hot data on NVMe, cold data on distributed object storeAlmacenamiento escalonado: datos calientes en NVMe, frios en object store distribuido
Zero Data Loss ArchitectureArquitectura de Cero Perdida de Datos
✓3-tier failover: Edge buffer → KV recovery (30s) → Object store DLQ (60s)Failover de 3 niveles: Buffer en edge → recovery KV (30s) → DLQ object store (60s)
✓Warm standby — automatic failover receiver with disk-based event bufferStandby en caliente — receptor de failover automatico con buffer en disco
✓Automated daily backups to geographically distributed object storageBackups diarios automatizados a object storage geograficamente distribuido
✓Health monitoring with 5-min intervals + instant webhook alertsMonitoreo de salud con intervalos de 5 min + alertas webhook instantaneas
Audit Trail & ComplianceRegistro de Auditoria y Cumplimiento
✓Full access logging — every API call recorded with user, IP, and actionRegistro completo de acceso — cada llamada API registrada con usuario, IP y accion
✓Commission rate change history with user attribution and timestampsHistorial de cambios de comision con atribucion de usuario y timestamps
✓Payment state machine — validated transitions prevent invalid payment statesMaquina de estados de pagos — transiciones validadas previenen estados invalidos
✓Fraud detection engine — ML-powered scoring with automatic flaggingMotor de deteccion de fraude — scoring con ML y flagging automatico
High Availability & Disaster RecoveryAlta Disponibilidad y Recuperacion ante Desastres
Multi-layered resilience deployed March 2026 — from process-level watchdogs to full disaster recovery drills. Every failure mode tested, every recovery automated.Resiliencia multicapa desplegada en marzo 2026 — desde watchdogs a nivel de proceso hasta simulacros completos de recuperacion ante desastres. Cada modo de fallo probado, cada recuperacion automatizada.
DEPLOYED 2026-03-19
RPO ~0 / RTO <2min
LIVE
Systemd Watchdog ProtectionProteccion Watchdog de Systemd
Process-level health monitoring with automatic restartMonitoreo de salud a nivel de proceso con reinicio automatico
What It Protects AgainstContra Que Protege
›Deadlocked Go service — goroutine leak or mutex contention freezes event processingServicio Go bloqueado — fuga de goroutines o contention de mutex congela el procesamiento
›Out-of-memory (OOM) — memory spike from large batch causes process to become unresponsiveSin memoria (OOM) — pico de memoria por lote grande hace que el proceso no responda
›Silent hangs — service appears running but stops processing eventsBloqueos silenciosos — el servicio parece activo pero deja de procesar eventos
How It WorksComo Funciona
✓WatchdogSec=120 — systemd kills the process if no heartbeat received within 120 secondsWatchdogSec=120 — systemd mata el proceso si no recibe heartbeat en 120 segundos
✓Restart=always — automatic restart on any exit, with 5-second cooldown between attemptsRestart=always — reinicio automatico ante cualquier fallo, con 5 segundos de espera entre intentos
✓Zero manual intervention — operates at OS level, independent of application codeCero intervencion manual — opera a nivel de SO, independiente del codigo de la aplicacion
✓Recovery time: <10 seconds — process killed and restarted before next health check cycleTiempo de recuperacion: <10 segundos — proceso eliminado y reiniciado antes del siguiente ciclo de salud
LIVE
External Health MonitorMonitor de Salud Externo
Independent monitoring from Cloudflare Workers cron — survives total server failureMonitoreo independiente desde cron de Cloudflare Workers — sobrevive a fallo total del servidor
What It Protects AgainstContra Que Protege
›Complete server crash — if the Go service crashes, its internal health monitor dies with itCaida total del servidor — si el servicio Go se cae, su monitor interno muere con el
›Network partitions — server is up but unreachable from the internetParticiones de red — el servidor esta activo pero inaccesible desde internet
›Tunnel failures — Cloudflare Tunnel disconnects, isolating the backendFallos de tunel — el Tunnel de Cloudflare se desconecta, aislando el backend
How It WorksComo Funciona
✓CF Workers cron trigger — runs on Cloudflare's global edge, completely independent of HetznerCron trigger de CF Workers — corre en el edge global de Cloudflare, completamente independiente de Hetzner
✓Dual-target probes — checks both primary (Hetzner) and fallback (VPS) health endpointsProbes de doble objetivo — verifica endpoints de salud tanto del primario (Hetzner) como del fallback (VPS)
✓Email alerts via Mailgun — instant notification when either endpoint is unreachableAlertas por email via Mailgun — notificacion instantanea cuando cualquier endpoint es inaccesible
✓Layered with internal monitor — Go's own 60-second probes handle component-level issues; external catches total outagesEn capas con monitor interno — los probes de 60s del Go manejan problemas por componente; el externo detecta caidas totales
LIVE
WAL Integrity VerificationVerificacion de Integridad del WAL
Regular validation of Write-Ahead Log files in R2 object storageValidacion regular de archivos Write-Ahead Log en almacenamiento de objetos R2
What It Protects AgainstContra Que Protege
›Silent data corruption — WAL files written with truncated or malformed JSON go undetectedCorrupcion silenciosa de datos — archivos WAL escritos con JSON truncado o malformado pasan desapercibidos
›Compression failures — gzip decompression issues discovered only during disaster recoveryFallos de compresion — problemas de descompresion gzip descubiertos solo durante recuperacion
›Unusable backups — discovering WAL is corrupt when you need it most defeats the purpose of having itBackups inutilizables — descubrir que el WAL esta corrupto cuando mas se necesita anula su proposito
How It WorksComo Funciona
✓Downloads and decompresses WAL files from R2 storage (gzipped NDJSON format)Descarga y descomprime archivos WAL del almacenamiento R2 (formato NDJSON gzipped)
✓Validates JSON integrity — parses every line as JSON, verifying required fields (event_id, event_time, client_id)Valida integridad JSON — parsea cada linea como JSON, verificando campos requeridos (event_id, event_time, client_id)
✓Reports statistics — total files checked, events validated, corruption percentage per runReporta estadisticas — total archivos verificados, eventos validados, porcentaje de corrupcion por ejecucion
✓Catches corruption early — detects issues days or weeks before a disaster recovery scenario occursDetecta corrupcion temprano — identifica problemas dias o semanas antes de que ocurra un escenario de recuperacion
LIVE
DLQ Depth MonitoringMonitoreo de Profundidad de DLQ
Real-time Dead Letter Queue depth counters via /health endpointContadores de profundidad de Dead Letter Queue en tiempo real via endpoint /health
What It Protects AgainstContra Que Protege
›Queue overflow — DLQ events accumulate faster than they are replayed, eventually losing dataDesbordamiento de cola — eventos DLQ se acumulan mas rapido de lo que se reprocesan, perdiendo datos
›Stalled replay — recovery process hangs without warning, letting the backlog grow silentlyReplay estancado — el proceso de recuperacion se bloquea sin aviso, dejando crecer el backlog
›Persistent failures — repeated edge worker failures continuously feeding the DLQ without resolutionFallos persistentes — fallos repetidos de edge workers alimentando continuamente el DLQ sin resolucion
How It WorksComo Funciona
✓Counters exposed via GET /health — S2S DLQ depth and Pixel DLQ depth reported in real-timeContadores expuestos via GET /health — profundidad de DLQ de S2S y Pixel reportada en tiempo real
✓Early warning system — alerts trigger when DLQ depth exceeds configurable thresholdsSistema de alerta temprana — alertas se disparan cuando la profundidad DLQ excede umbrales configurables
✓Separate counters per source — S2S proxy (relo-s2s-dlq) and Pixel (relo-pixel-dlq) tracked independentlyContadores separados por fuente — proxy S2S (relo-s2s-dlq) y Pixel (relo-pixel-dlq) rastreados independientemente
✓Integrates with health monitor — both internal (60s probes) and external (CF cron) check DLQ depthSe integra con monitor de salud — tanto interno (probes 60s) como externo (cron CF) verifican profundidad DLQ
LIVE
Disaster Recovery TestingPruebas de Recuperacion ante Desastres
Automated DR drill script (drp-test.sh) — validates all failure modesScript automatizado de simulacro DR (drp-test.sh) — valida todos los modos de fallo
Failure Scenarios TestedEscenarios de Fallo Probados
›ClickHouse failure — database process killed, validates auto-restart and event buffering during downtimeFallo de ClickHouse — proceso de base de datos eliminado, valida reinicio automatico y buffering de eventos
›DragonflyDB failure — cache/identity store killed, verifies graceful degradation and recoveryFallo de DragonflyDB — cache/store de identidad eliminado, verifica degradacion y recuperacion
›Go service crash — ingest process killed, confirms systemd watchdog restart and WAL integrityCrash del servicio Go — proceso de ingesta eliminado, confirma reinicio por watchdog de systemd e integridad WAL
›Combined failures — multiple components down simultaneously, validates full recovery chainFallos combinados — multiples componentes caidos simultaneamente, valida la cadena completa de recuperacion
What It ValidatesQue Valida
✓Auto-restart timing — confirms all services recover within their target RTO (<2 minutes)Tiempo de reinicio automatico — confirma que todos los servicios se recuperan dentro del RTO objetivo (<2 minutos)
✓Data buffering during outage — events sent during downtime are captured by WAL and DLQ, not lostBuffering de datos durante caida — eventos enviados durante la caida son capturados por WAL y DLQ, no se pierden
✓WAL file integrity — verifies R2 WAL files are valid gzipped NDJSON with parseable JSON linesIntegridad de archivos WAL — verifica que archivos WAL de R2 son NDJSON gzipped validos con lineas JSON parseables
✓Zero data loss verification — event counts before and after drill match, proving RPO ~0Verificacion de cero perdida de datos — conteos de eventos antes y despues del simulacro coinciden, probando RPO ~0
✓Monthly execution recommended — can be run as a cron job for continuous verification of DR readinessEjecucion mensual recomendada — puede ejecutarse como cron job para verificacion continua de preparacion DR
Defense-in-Depth: 5 Layers of ProtectionDefensa en Profundidad: 5 Capas de Proteccion
L1
Systemd Watchdog
Process-level restart <10sReinicio de proceso <10s
L2
Internal MonitorMonitor Interno
4 probes every 60s + auto-fix4 probes cada 60s + auto-fix
Consent Bitmask ArchitectureArquitectura de Bitmask de Consentimiento
8-bit per-device consent flags — enforced at query level on every data access8 bits de consentimiento por dispositivo — aplicados a nivel de query en cada acceso a datos
Bit 0 (0x01)
Analytics
Bit 1 (0x02)
Personalization
Bit 2 (0x04)
DSP Export
Bit 3 (0x08)
Cross-Client
Bit 4 (0x10)
Email
Bit 5 (0x20)
Push
Bit 6 (0x40)
Extended RetentionRetencion Extendida
LFPDPPP
Mexico Privacy LawLey de Privacidad Mexico
GDPR-Ready
EU Data ProtectionProteccion de Datos UE
TLS 1.3 + AES-256
End-to-End EncryptionCifrado de Extremo a Extremo
24mo TTL
Automatic Data RetentionRetencion Automatica de Datos
Regulatory ComplianceCumplimiento Regulatorio
How RELO complies with international data protection regulations — with real technical controls, not just policies.Como RELO cumple con regulaciones internacionales de proteccion de datos — con controles tecnicos reales, no solo politicas.
COMPLIANTCUMPLE
🇲🇽
LFPDPPP
Ley Federal de Proteccion de Datos Personales en Posesion de los Particulares
What It RequiresQue Requiere
›Opt-out consent model — data collection allowed by default with privacy noticeModelo opt-out — recoleccion permitida por defecto con aviso de privacidad
✓Per-bit consent revocation — users can disable analytics, DSP, email, etc. individuallyRevocacion por bit — usuarios desactivan analytics, DSP, email, etc. individualmente
✓24-month automatic TTL — data auto-deletes after retention periodTTL automatico de 24 meses — datos se auto-eliminan tras periodo de retencion
✓No PII storage — only hashed device IDs (IDFA/GAID/email) in identity graphSin PII almacenado — solo IDs hasheados (IDFA/GAID/email) en grafo de identidad
LIVE
🇪🇺
GDPR
General Data Protection Regulation (EU)
What It RequiresQue Requiere
›Opt-in consent — explicit user agreement before any data collectionConsentimiento opt-in — acuerdo explicito antes de cualquier recoleccion
›Right to erasure (Art. 17) — users can request complete data deletionDerecho al olvido (Art. 17) — usuarios pueden solicitar eliminacion total
›Data portability (Art. 20) — export personal data in machine-readable formatPortabilidad (Art. 20) — exportar datos personales en formato legible
›Records of processing (Art. 30) — maintain audit trail of all data activitiesRegistro de procesamiento (Art. 30) — mantener registro de todas las actividades
How RELO CompliesComo Cumple RELO
✓Consent engine supports opt-in mode — bitmask can start at 0x00 (no consent)Motor de consentimiento soporta opt-in — bitmask puede iniciar en 0x00 (sin consentimiento)
✓Art. 17 Deletion API (LIVE) — POST /api/gdpr/erase deletes from ClickHouse events + MVs, DragonflyDB identity graph, and Supabase product_sales + app_eventsAPI de Eliminacion Art. 17 (LIVE) — POST /api/gdpr/erase elimina de ClickHouse events + MVs, DragonflyDB identity graph, y Supabase product_sales + app_events
✓TTL-based auto-purge — events, audiences, and user profiles expire automatically (24-month ClickHouse TTL)Auto-purga basada en TTL — eventos, audiencias y perfiles expiran automaticamente (TTL de 24 meses en ClickHouse)
✓Immutable audit trail — access logs, commission changes, and payment events recordedRegistro de auditoria inmutable — accesos, cambios de comision y pagos registrados
✓Query-level consent enforcement — bitAnd(consent_flags, N) on every data readEnforcement de consentimiento a nivel query — bitAnd(consent_flags, N) en cada lectura
ARCHITECTURE READYARQUITECTURA LISTA
🇺🇸
CCPA / CPRA
California Consumer Privacy Act + California Privacy Rights Act
What It RequiresQue Requiere
›Right to know — disclose what personal data is collected and whyDerecho a saber — revelar que datos se recolectan y por que
›Right to delete — consumer request to erase personal dataDerecho a eliminar — solicitud del consumidor para borrar datos
›Opt-out of sale — "Do Not Sell My Personal Information" signalOpt-out de venta — senal "No Vender Mi Informacion Personal"
›Sensitive data (CPRA) — additional protections for precise geolocation, biometricsDatos sensibles (CPRA) — protecciones adicionales para geolocalizacion, biometricos
How RELO CompliesComo Cumple RELO
✓DSP export consent flag (Bit 2) — data sharing gated by explicit consent bitFlag de consentimiento DSP (Bit 2) — compartir datos controlado por bit de consentimiento
✓Identity graph uses only hashed IDs — no raw PII storedGrafo de identidad usa solo IDs hasheados — sin PII crudo almacenado
✓Multi-tenant data isolation — client_id enforced on every query, no cross-client leakageAislamiento multi-tenant — client_id en cada query, sin fuga de datos cross-client
✓Automatic data lifecycle — TTL-based deletion, no manual purge neededCiclo de vida automatico — eliminacion por TTL, sin purga manual
BUILT-ININTEGRADO
ePrivacy + ATT
EU ePrivacy Directive + Apple App Tracking Transparency
What It RequiresQue Requiere
›ATT (iOS 14.5+) — prompt required before accessing IDFAATT (iOS 14.5+) — prompt requerido antes de acceder al IDFA
›ePrivacy — consent for non-essential cookies and device trackingePrivacy — consentimiento para cookies no esenciales y tracking
›SKAdNetwork — Apple's privacy-preserving attribution frameworkSKAdNetwork — framework de atribucion de Apple con privacidad
How RELO CompliesComo Cumple RELO
✓IDFA field is Nullable — gracefully handles ATT denial (null, not empty)Campo IDFA es Nullable — maneja correctamente la denegacion ATT (null, no vacio)
✓Probabilistic identity resolution — fingerprint-based fallback when IDFA unavailableResolucion probabilistica de identidad — fallback por fingerprint cuando IDFA no disponible
✓Server-side event tracking — web pixel + CAPI reduce dependency on client-side cookiesTracking server-side — pixel web + CAPI reducen dependencia de cookies del navegador
Technical Implementation SummaryResumen de Implementacion Tecnica
bitAnd()
Every query checks consent flags at the database engine level — impossible to bypassCada query verifica flags de consentimiento a nivel motor de base de datos — imposible de bypass
TTL
Automatic data expiration: 24mo events, 90d audiences, 90d user profiles — no manual cleanupExpiracion automatica: 24m eventos, 90d audiencias, 90d perfiles — sin limpieza manual
SHA-256
All identifiers hashed before storage — device IDs, emails, and fingerprints are one-way hashesTodos los identificadores hasheados antes de almacenar — IDs, emails y fingerprints son hashes unidireccionales
RLS
Row-Level Security on relational DB — database-enforced tenant isolation, even if application logic failsSeguridad a Nivel de Fila en BD relacional — aislamiento de tenant a nivel DB, incluso si la logica falla