Planteamiento y contexto
El mismo evento de uso alimenta los límites operativos y los informes financieros. Los eventos pueden llegar tarde, duplicarse o corregirse, y un inquilino ruidoso no debe retrasar a los demás ni leer los datos de otro inquilino.
Lo que evalúa el entrevistador
- Separar hechos inmutables de proyecciones mutables.
- Definir idempotencia, ventanas de tiempo de evento, correcciones y definitividad de facturas.
- Diseñar aislamiento de inquilinos, contrapresión (backpressure) y evidencia de conciliación.
Preguntas de clarificación antes de responder
- ¿Cuáles son la tasa de eventos, las dimensiones, la retención y el plazo límite para finalizar las facturas?
- ¿El uso se mide al aceptar la solicitud, al completarla o al lograr un efecto comercial exitoso?
- ¿Pueden los productores reenviar un ID de evento y cómo se representan las correcciones o reembolsos?
- ¿Qué decisiones de cuota necesitan una frescura del orden de segundos y qué informes pueden retrasarse?
Estructura de respuesta en 30 segundos
Capturaría un hecho de uso inmutable delimitado por inquilino con un ID de evento estable, tiempo de evento, unidad, origen y versión de esquema. Un registro de solo anexión alimenta proyecciones separadas de cuota y facturación. La deduplicación se indexa por inquilino e ID de evento; las correcciones son hechos nuevos, no sobreescrituras. Las lecturas de cuota utilizan una proyección acotada y rápida, mientras que las facturas se cierran solo después de un watermark y una pasada de conciliación. Cada agregado permanece rastreable hasta los hechos de origen.
Análisis paso a paso a profundidad
1. Capturar el hecho
Autentica al productor, valida el alcance del inquilino y las unidades, y persiste el evento sin procesar antes de enviar la confirmación. Exige un ID de evento del productor, origen, tiempo de evento y versión de medición. Rechaza escrituras mal formadas o entre inquilinos y conserva un digest para auditoría.
2. Hacer las escrituras idempotentes
Aplica una restricción de unicidad en (tenant, source, event_id). Un duplicado con el mismo digest devuelve el resultado existente; un digest diferente se pone en cuarentena como un conflicto. No uses una fila de factura como almacén de idempotencia porque los reintentos operativos ocurren antes de la facturación.
3. Proyectar cuotas y facturación por separado
La proyección de cuotas mantiene ventanas cortas, contadores actuales y una política fail-closed cuando se desconoce la frescura. La facturación agrega por la unidad contractual y la versión del precio, preservando los intervalos de tiempo de evento y los enlaces de corrección. Ninguna de las proyecciones edita el registro de hechos inmutable.
4. Manejar datos tardíos y cerrar facturas
Utiliza un watermark basado en el tiempo de evento observado más un límite acordado de retraso. Los eventos posteriores al watermark ingresan a un libro mayor de ajustes y al siguiente ciclo de facturación o flujo de trabajo de crédito. Antes de la finalización, concilia los recuentos y las sumas del registro con las proyecciones y registra la versión del cálculo.
5. Operar de forma segura
Particiona las colas y el almacenamiento por inquilino o clave de reparto equitativo, aplica cuotas y contrapresión, y aísla las cartas muertas (dead letters). Monitorea el retraso de ingesta, las tasas de duplicados y conflictos, la antigüedad del watermark, la desviación de proyecciones, el volumen de correcciones y la latencia de cierre de facturas. Cifra los datos, restringe las exportaciones y haz que cada corrección sea auditable.
Respuesta de muestra de alta calidad
“Almacenaría un hecho de uso inmutable y delimitado por inquilino con ID de evento, origen, tiempo de evento, unidad, esquema y versión de precio antes de confirmar. Un registro de solo anexión alimenta proyecciones independientes de cuota y facturación. Los reintentos con el mismo ID y el mismo digest son idempotentes; un digest modificado se pone en cuarentena. Las cuotas utilizan una proyección acotada y rápida, mientras que las facturas se cierran solo después de un watermark de retraso y una conciliación con los hechos de origen. Los eventos tardíos se convierten en registros de ajuste, y la partición por inquilinos, la contrapresión, el cifrado y las métricas de desviación protegen la corrección y la equidad.”
Errores comunes
- Sobreescribir el agregado en cada evento → los datos tardíos y las correcciones se vuelven invisibles → conservar hechos inmutables y proyecciones.
- Usar la llegada según el reloj de pared como tiempo de uso → los eventos demorados caen en la factura incorrecta → agrupar por tiempo de evento y watermark.
- Compartir una cola global única → un inquilino ruidoso crea bloqueo de cabeza de línea → particionar o aplicar reparto equitativo.
- Finalizar sin conciliación → la desviación de proyecciones se convierte en una disputa de facturación → comparar proyecciones con hechos de origen y versionar el cálculo.
Preguntas de seguimiento y respuestas
¿Cómo admites un reembolso o corrección?
Anexa un hecho de compensación vinculado al evento original y a la versión del contrato. Recalcula la proyección afectada o crea una entrada en el libro mayor de ajustes; nunca mutes la evidencia original.
¿Qué pasa si la cuota y la facturación discrepan temporalmente?
Declara garantías separadas de frescura y definitividad. La cuota puede ser aproximada dentro de una ventana acotada, mientras que la facturación permanece provisional hasta que se superen las comprobaciones de watermark y conciliación; expón el estado a operadores y clientes.
¿Cómo evitas que un inquilino lea el uso de otro inquilino?
Aplica el alcance del inquilino en la ruta de escritura, particiones de almacenamiento, consultas de proyección, exportaciones y herramientas de soporte. Prueba la autorización en cada límite y registra los accesos sin incluir cargas útiles de eventos sensibles.