Tema representativo de entrevista

¿Cómo diseñarías una plataforma de analítica y telemetría de producto que preserve la privacidad?

Diseño de sistemasDifícil
Equipo editorial de Offer.ccPublicado Actualizado

Pregunta

Un producto de escritorio necesita uso de funciones, categorías de fallos (*crashes*) y métricas de rendimiento aproximadas sin permitir que la plataforma reconstruya una línea de tiempo del comportamiento individual. Diseña la plataforma de telemetría de extremo a extremo, cubriendo minimización, protección en el cliente y servidor, granularidad de identidad y tiempo, desduplicación, presupuestos, agregación, latencia, pérdida, solicitudes de eliminación, controles contra abusos y verificación.

1. Planteamiento

Una empresa desea comprender el uso de funciones, las categorías de fallos por versión y las distribuciones de rendimiento a nivel regional para un cliente de escritorio. Cuenta con alrededor de 20 millones de dispositivos activos por día, con un máximo de 200 eventos de telemetría por dispositivo. Los equipos de producto necesitan tendencias agregadas en menos de 24 horas, mientras que los equipos de privacidad prohíben líneas de tiempo reconstruibles del comportamiento de los usuarios.

Diseña una plataforma de telemetría y analítica que preserve la privacidad. Cubre los límites de recolección en el cliente, el formato de eventos, la anonimización o aleatorización local, la privacidad diferencial central, los límites de contribución a nivel de usuario, las API de presupuesto y consultas, la confiabilidad, las solicitudes de eliminación, los permisos y la verificación. Indica claramente qué problemas no pueden resolverse mediante el hash de un ID.

2. Restricciones y aclaraciones

  • Prefiere un usuario o dispositivo como la unidad de privacidad en lugar de tratar cada evento como una persona independiente; explica los dispositivos compartidos y los usuarios con múltiples dispositivos.
  • Recolecta únicamente nombres de eventos registrados, versión, región aproximada, rangos (buckets) de rendimiento y categorías de error requeridas. No recolectes URLs sin procesar, texto libre, direcciones IP completas, ubicación precisa ni cargas útiles de contenido.
  • Publica estadísticas en ventanas de al menos 24 horas con supresión de grupos pequeños, un presupuesto de privacidad diferencial y una auditoría de consultas rastreable.
  • La pérdida y el retraso son aceptables, pero los reintentos, cachés y réplicas no deben amplificar la contribución de un usuario sin límite.

3. Arquitectura de alto nivel y flujo de datos

El SDK del cliente aplica una lista de permitidos de eventos, recorte de campos (field clipping), límites de valores y muestreo local antes de escribir lotes versionados en una cola de telemetría. La pasarela de ingesta verifica firmas, tamaño, ventana de tiempo y tasa sin utilizar un token de cuenta como clave analítica. El procesamiento de flujos realiza la desduplicación a nivel de usuario, límites de contribución, agregación de ventanas y filtrado de anomalías. Un búfer de datos sin procesar de corta duración tiene un TTL estricto; el almacenamiento a largo plazo solo conserva intermedios agregados protegidos.

text
client SDK
  -> schema/allowlist + local sampling + coarse buckets
  -> encrypted batch with rotating upload token
  -> ingestion gateway (auth, size, rate, replay checks)
  -> stream buffer
  -> privacy transform (user contribution cap, clipping, optional local noise)
  -> aggregate store
  -> DP query service (budget, minimum group, audit)
  -> dashboards and export API

La aleatorización local protege los informes individuales de un recolector no confiable, pero reduce la precisión; la privacidad diferencial central facilita la contabilidad del presupuesto a nivel de usuario para un agregador interno confiable. Un modelo híbrido debe definir el modelo de amenazas y la garantía en cada capa; el simple hecho de agregar ruido no justifica una afirmación de seguridad más sólida.

4. Modelo de datos, minimización y desduplicación

Un evento contiene event_type, versión del cliente, región aproximada, un rango de rendimiento, un rango de tiempo del evento y versión del protocolo. Un lote de carga tiene un ID de lote aleatorio, caducidad y firma. El servidor utiliza una clave interna de corta duración para la idempotencia y nunca escribe un identificador de usuario estable en la tabla analítica a largo plazo.

Los eventos repetidos de un usuario para una función dentro de una ventana siguen una regla prerregistrada, como un máximo de una contribución por usuario por función por día. El límite debe aplicarse a nivel de usuario, no solo por máquina o lote; de lo contrario, un atacante puede dividir los lotes para eludirlo. Las trazas de fallos (crash stacks), el texto de error y las URLs deben agruparse en rangos o descartarse en el cliente para que el texto libre no se convierta en un identificador oculto.

Una solicitud de eliminación necesita un alcance ejecutable. Si el almacenamiento a largo plazo contiene únicamente agregados con privacidad diferencial irreversibles, por lo general no se puede eliminar a un usuario exacto de un agregado publicado. El sistema aún debe eliminar los búferes temporales sin procesar, detener la recolección futura y documentar el límite irreversible de las publicaciones agregadas.

5. Presupuestos de privacidad, confiabilidad y API de consultas

El servicio de consultas rastrea un presupuesto de epsilon/delta por unidad de privacidad, conjunto de datos y ventana de tiempo. Cada consulta oficial verifica el presupuesto, el tamaño mínimo de grupo y las dimensiones permitidas, luego produce un resultado con ruido a partir de una tabla agregada versionada y registra una entrada de auditoría. Un reintento de la misma consulta lógica debe devolver un resultado idempotente o cargarse una sola vez; agregar una dimensión de filtro puede consumir presupuesto adicional.

Las cargas utilizan entrega de al menos una vez (at-least-once delivery). Los lotes de clientes pueden reintentar, la pasarela desduplica mediante un token de lote y el procesamiento de flujos desduplica por usuario y rango de tiempo mientras aísla eventos tardíos no confirmados. La pérdida, el retraso y la tasa de muestreo pertenecen a las métricas de calidad de datos; de lo contrario, una caída en el panel de control puede interpretarse erróneamente como un cambio en el comportamiento del producto.

Con 20 millones de dispositivos y un máximo de 200 eventos por dispositivo por día, el límite superior teórico es de 4 mil millones de eventos por día. El diseño debe utilizar muestreo, compresión de lotes y almacenamiento particionado con margen para despliegues de versiones, tormentas de fallos y reproducciones (replays). La capa de consultas debe limitar las divisiones de alta cardinalidad, las exportaciones concurrentes y las uniones (joins) entre ventanas para que el presupuesto y el cómputo no se agoten conjuntamente.

6. Preguntas de seguimiento y trampas

  • ¿Es anónimo un ID de dispositivo con hash? Un hash estable sigue siendo vinculable entre eventos y puede ser reidentificado con datos externos; es preferible usar tokens de corta duración, campos aproximados y agregación a nivel de usuario.
  • ¿En qué se diferencian el ruido en el cliente y el ruido central? El modelo local reduce la confianza requerida en el recolector pero tiene una mayor varianza; el modelo central simplifica la gestión del presupuesto y las consultas si se controla el acceso al agregador y al búfer sin procesar.
  • ¿Cómo manejas una tormenta de fallos? El muestreo en el cliente y los límites de tasa protegen a los usuarios y la entrada, la pasarela aísla las versiones defectuosas, y la contrapresión (backpressure) en colas y las consultas degradadas protegen los sistemas posteriores; limitarse a escalar la base de datos es insuficiente.
  • ¿Puede la plataforma responder cualquier pregunta de análisis? No. Las métricas permitidas, los grupos mínimos, la contabilidad del presupuesto y los límites de dimensiones son contratos de producto; las solicitudes exploratorias requieren aprobación y un presupuesto separado.

7. Verificación y métricas operativas

  • Propiedades de privacidad: Prueba límites de contribución, calibración de ruido, composición de presupuestos y rechazo de consultas en conjuntos de datos de usuarios vecinos; audita los parámetros para cada versión de lanzamiento.
  • Calidad de datos: Monitorea la tasa de muestreo, cobertura de dispositivos, tasa de duplicados, retrasos, pérdidas, distribución de versiones y completitud de ventanas, y concilia contra datos sintéticos controlados.
  • Confiabilidad: Inyecta fallas en la entrada, colas, agregadores y el servicio de presupuestos para verificar reintentos idempotentes, contrapresión, cuarentena, puntos de recuperación y ausencia de fugas de datos sin procesar.
  • Controles contra abusos: Prueba consultas de alta dimensionalidad, exportaciones concurrentes, presupuestos agotados, escalamiento de permisos, reproducción de lotes e inyección de texto libre, confirmando una ruta de rechazo o degradación para cada una.

8. Criterios de evaluación en entrevistas

Capacidad para trazar límites de privacidad y flujo de datos

El candidato debe indicar en qué confían, qué retienen y qué eliminan el cliente, la pasarela, el búfer de corta duración, la capa de agregación y la capa de consultas.

Capacidad para implementar el control de contribución a nivel de usuario

Debe cubrir la desduplicación por usuario/ventana, los límites de contribución, el recorte (clipping), la idempotencia de lotes y los eventos tardíos, en lugar de limitarse a escribir "anonimizarlo".

Capacidad para diseñar el presupuesto y la confiabilidad de manera integral

Debe incluir la contabilidad de epsilon/delta, reintentos cobrados una sola vez, grupos mínimos, límites de dimensiones de consulta, contrapresión y recuperación ante fallas.

Capacidad para brindar una verificación cuantitativa

Debe utilizar el límite superior de 4 mil millones de eventos por día y proponer pruebas de privacidad, calidad de datos, confiabilidad y abusos en lugar de solo listar componentes.

Fuentes públicas

Preguntas relacionadas

Herramienta de entrevista relacionada

Usa Resolver para una respuesta de diseño de sistemas

Aclara primero los requisitos y luego avanza a través de la escala, la arquitectura, la elección de componentes y las compensaciones (trade-offs).

Ver la herramienta