ayuda burbu - Procesamiento de sistemas,

ayuda burbu - Procesamiento de sistemas,
RESUMEN DEL MENSAJE INICIAL · elaborado con IA

La arquitectura de ingestión aguanta 40 mensajes por segundo, pero el procesamiento completo falla a esa misma tasa y solo supera 10. La prioridad sensata es definir la demanda real y la latencia exigida antes de seguir optimizando.

Leer el resumen completo →

La arquitectura de ingestión aguanta 40 mensajes por segundo, pero el procesamiento completo falla a esa misma tasa y solo supera 10. La prioridad sensata es definir la demanda real y la latencia exigida antes de seguir optimizando.

Hay proyectos que empiezan a vivir antes de tener usuario. Este es uno de ellos: una arquitectura para recibir datos en tiempo real, fecharlos con precisión, guardar cada versión sin sobrescribir nada y decidir solo con lo que había disponible en ese instante. Todo probado en laboratorio, sin fuentes reales conectadas todavía. El problema no es que el diseño sea malo. El problema es que nadie ha definido aún cuántos datos van a llegar ni con qué retraso máximo se pueden procesar.

Ingestión rápida, procesamiento lento

Los ensayos separan dos componentes. La ingestión de mensajes superó un escenario de 40 mensajes por segundo. El procesamiento completo de investigación superó 10 mensajes por segundo pero falló a 40. Las pruebas se hicieron en ventanas de 8 segundos con tres repeticiones por escenario, y cuando la ráfaga apretó el sistema rechazó entradas de forma controlada, sin pérdida silenciosa aparente.

Esa asimetría es la clave. Ingerir es barato; procesar es caro. Y sin una demanda real medida, optimizar el procesamiento es apostar a ciegas. El propio proyecto lo reconoce: la latencia exigida no está determinada, así que la capacidad operativa no se puede dar por certificada. Antes de tocar una línea de código conviene fijar un SLA: cuántos eventos por segundo se esperan en hora punta y cuánto puede esperar cada decisión.

El coste oculto de releer el historial

En una muestra de 16 decisiones se ejecutaron aproximadamente 10.920 operaciones `json.loads`. Ahí hay un problema de diseño, no de hardware. El sistema vuelve a leer y deserializar el historial una y otra vez para reconstruir el estado causal de cada decisión.

La solución no es meter más máquinas. Es cachear el estado, mantener índices por clave causal y evitar que cada decisión recorra el histórico completo. Un registro append-only en SQLite con identificadores únicos, hashes y ACK duraderos está bien para trazabilidad; para consultas causales repetidas necesita una capa intermedia. La pregunta correcta no es «¿optimizo?» sino «¿qué consulta concreta me está costando 682 deserializaciones por decisión?».

Datos que no permiten entrenar todavía

El histórico tiene muchos registros y poca independencia. Las observaciones repetidas de un mismo evento no son independientes. Algunos timestamps solo acreditan recepción local aproximada. No siempre se conoce el instante de primera disponibilidad de cada variable. Hay revisiones posteriores de resultados. Y algunas familias de datos carecen de ejemplos brutos suficientes.

Con ese material, el entrenamiento está bloqueado y hace bien en estarlo. Para descubrir subgrupos se plantean SD-Map o PRIM, con separación honesta entre selección y estimación, validación walk-forward, correcciones por pruebas múltiples como Romano-Wolf y confirmación prospectiva con métodos secuenciales. Suena ambicioso, pero cada pieza responde a un riesgo real: el sesgo de selección, la dependencia temporal y la multiplicidad.

La hoja de ruta que evita el exceso de ingeniería

El orden lógico es otro. Primero, medir la demanda real y escribir el SLA. Segundo, conectar una fuente externa de verdad, aunque sea modesta, para ver cómo se comporta el sistema fuera del laboratorio. Tercero, atacar el cuello de botella de las deserializaciones con caché e índices antes de añadir colas o verificadores nuevos.

La arquitectura actual no está sobredimensionada en trazabilidad; está sobredimensionada en piezas que aún no tienen problema que resolver. Un ACK duradero sin fuente real es una hipótesis. Una cola persistente sin ráfagas medidas es una precaución. Y una validación estadística sin dataset independiente es un plan, no un resultado. Antes de declarar válido un dataset para investigación predictiva haría falta reconstruir decisiones en tiempo real, separar observaciones dependientes y documentar la primera disponibilidad de cada variable. Sin eso, cualquier patrón descubierto puede ser un artefacto del histórico.

Datos clave
  • La ingestión superó 40 mensajes por segundo; el procesamiento completo superó 10 y falló a 40.
  • Los ensayos usaron ventanas de 8 segundos con tres repeticiones por escenario.
  • En 16 decisiones se ejecutaron unas 10.920 operaciones `json.loads`.
  • El entrenamiento está bloqueado hasta tener datos con independencia y timestamps fiables.
  • Se consideran SD-Map, PRIM, Romano-Wolf y validación walk-forward para la fase estadística.
Resumen generado con inteligencia artificial a partir del primer mensaje del tema.

Martto

Forero Paco Demier
Desde
9 Feb 2024
Mensajes
65
Fruta
18
Buenas, @burbubot.

Estoy desarrollando un proyecto técnico de nivel TFM sobre procesamiento de eventos en tiempo real, trazabilidad temporal y validación estadística de modelos predictivos.

Me gustaría pedirte una revisión crítica, porque llevo varias iteraciones de desarrollo y quiero saber si estoy siguiendo el camino correcto o si estoy cayendo en un exceso de ingeniería.

1. Objetivo del proyecto

Diseñar una arquitectura capaz de:

- Recibir información procedente de fuentes externas en tiempo real.
- Registrar exactamente cuándo llega cada dato y cuándo está disponible para su procesamiento.
- Conservar mensajes originales, cambios y revisiones sin sobrescribir el histórico.
- Liquidar decisiones automáticas utilizando exclusivamente información disponible en ese instante.
- Descubrir patrones condicionales en varias dimensiones.
- Validar esos patrones evitando fuga temporal, sobreajuste, dependencia entre observaciones y falsos descubrimientos.

El problema científico es distinguir entre patrones históricos aparentemente buenos y patrones verdaderamente reproducibles fuera de muestra.

**2. Arquitectura desarrollada hasta ahora**

He trabajado mediante fases separadas:

- Auditoría del histórico y procedencia temporal.
- Construcción de registros append-only con SQLite.
- Identificadores únicos, hashes, ACK duraderos y recuperación idempotente.
- Colas persistentes y supervisión de procesos.
- Separación entre ingestión y procesamiento.
- Verificadores independientes y pruebas de corrupción semántica.
- Reproducción determinista, inyección de fallos y controles de saturación.

Todo se ha probado en laboratorio offline. No existe todavía una integración con fuentes reales en funcionamiento.

**3. Principal problema detectado**

Las pruebas recientes muestran capacidades diferentes para dos componentes:

**I — Ingestión de mensajes:** superó un escenario de 40 mensajes por segundo.

**P — Procesamiento completo de investigación:** superó 10 mensajes por segundo, pero falló a 40.

Los ensayos se realizaron en ventanas de 8 segundos y con tres repeticiones por escenario. Las ráfagas exigentes saturaron el sistema, que rechazó las entradas de forma controlada.

La demanda real y los requisitos de latencia todavía no están determinados, por lo que no considero certificada la capacidad operativa.

El perfil también detectó lecturas y deserializaciones repetidas del historial: en una muestra de 16 decisiones se ejecutaron aproximadamente 10.920 operaciones `json.loads`.

Se ha planteado optimizar las consultas causales y la admisión de ráfagas, pero no quiero introducir complejidad sin una justificación sólida.

4. Problema estadístico

Dispongo de un histórico amplio en número de registros, pero con limitaciones importantes:

- Las observaciones repetidas de un mismo evento no son independientes.
- Algunos timestamps solo acreditan recepción local aproximada.
- No siempre se conoce el instante de primera disponibilidad de cada variable.
- Existen revisiones posteriores de resultados.
- Algunas familias de datos carecen de ejemplos brutos suficientes.
- El histórico no permite reconstruir con certeza todas las decisiones tal como habrían ocurrido en tiempo real.

Por eso he bloqueado el entrenamiento y la búsqueda definitiva de regiones hasta disponer de datos adecuados.

Para una futura investigación estoy considerando descubrimiento de subgrupos mediante SD-Map o PRIM, separación honesta entre selección y estimación, validación walk-forward, correcciones por pruebas múltiples como Romano-Wolf y confirmación prospectiva con métodos secuenciales, siempre que sus supuestos sean verificables.

**5. Mis preguntas para ti**

@burbubot, agradecería que fueras especialmente crítico:

1. ¿Tiene sentido la arquitectura o estoy sobrediseñando un problema que podría resolverse de manera más sencilla?
2. ¿Qué errores conceptuales encuentras en el uso de SQLite, append-only, ACK separados y colas persistentes?
3. ¿Cómo diseñarías una arquitectura mínima que garantice trazabilidad causal sin perjudicar innecesariamente el rendimiento?
4. ¿Conviene optimizar el procesamiento actual o primero medir la demanda real y definir un SLA?
5. ¿Cómo tratarías las ráfagas, los mensajes […], las revisiones y la recuperación sin pérdida silenciosa?
6. ¿Qué requisitos mínimos exigirías antes de declarar válido un dataset para investigación predictiva?
7. ¿Qué diseño estadístico recomendarías para descubrir regiones multidimensionales evitando sesgo de selección, dependencia temporal y multiplicidad?
8. ¿Qué pruebas de falsación utilizarías para intentar demostrar que las conclusiones del proyecto son incorrectas?
9. ¿Cuáles serían tus tres prioridades inmediatas y qué trabajo eliminarías por innecesario?
10. Si fueras el director técnico y metodológico del proyecto, ¿qué hoja de ruta concreta seguirías desde este punto hasta disponer de resultados científicamente defendibles?

Te pido que no des por correctas mis decisiones. Prefiero que señales fallos de base, simplificaciones posibles, supuestos imposibles de verificar y alternativas superiores.

Especialmente me interesa saber si debo continuar optimizando la arquitectura o cambiar el orden de prioridades para no invertir esfuerzo en problemas secundarios.

Gracias de antemano.
 
Buenas, @burbubot.

Estoy desarrollando un proyecto técnico de nivel TFM sobre procesamiento de eventos en tiempo real, trazabilidad temporal y validación estadística de modelos predictivos.

Me gustaría pedirte una revisión crítica, porque llevo varias iteraciones de desarrollo y quiero saber si estoy siguiendo el camino correcto o si estoy cayendo en un exceso de ingeniería.

1. Objetivo del proyecto

Diseñar una arquitectura capaz de:

- Recibir información procedente de fuentes externas en tiempo real.
- Registrar exactamente cuándo llega cada dato y cuándo está disponible para su procesamiento.
- Conservar mensajes originales, cambios y revisiones sin sobrescribir el histórico.
- Liquidar decisiones automáticas utilizando exclusivamente información disponible en ese instante.
- Descubrir patrones condicionales en varias dimensiones.
- Validar esos patrones evitando fuga temporal, sobreajuste, dependencia entre observaciones y falsos descubrimientos.

El problema científico es distinguir entre patrones históricos aparentemente buenos y patrones verdaderamente reproducibles fuera de muestra.

**2. Arquitectura desarrollada hasta ahora**

He trabajado mediante fases separadas:

- Auditoría del histórico y procedencia temporal.
- Construcción de registros append-only con SQLite.
- Identificadores únicos, hashes, ACK duraderos y recuperación idempotente.
- Colas persistentes y supervisión de procesos.
- Separación entre ingestión y procesamiento.
- Verificadores independientes y pruebas de corrupción semántica.
- Reproducción determinista, inyección de fallos y controles de saturación.

Todo se ha probado en laboratorio offline. No existe todavía una integración con fuentes reales en funcionamiento.

**3. Principal problema detectado**

Las pruebas recientes muestran capacidades diferentes para dos componentes:

**I — Ingestión de mensajes:** superó un escenario de 40 mensajes por segundo.

**P — Procesamiento completo de investigación:** superó 10 mensajes por segundo, pero falló a 40.

Los ensayos se realizaron en ventanas de 8 segundos y con tres repeticiones por escenario. Las ráfagas exigentes saturaron el sistema, que rechazó las entradas de forma controlada.

La demanda real y los requisitos de latencia todavía no están determinados, por lo que no considero certificada la capacidad operativa.

El perfil también detectó lecturas y deserializaciones repetidas del historial: en una muestra de 16 decisiones se ejecutaron aproximadamente 10.920 operaciones `json.loads`.

Se ha planteado optimizar las consultas causales y la admisión de ráfagas, pero no quiero introducir complejidad sin una justificación sólida.

4. Problema estadístico

Dispongo de un histórico amplio en número de registros, pero con limitaciones importantes:

- Las observaciones repetidas de un mismo evento no son independientes.
- Algunos timestamps solo acreditan recepción local aproximada.
- No siempre se conoce el instante de primera disponibilidad de cada variable.
- Existen revisiones posteriores de resultados.
- Algunas familias de datos carecen de ejemplos brutos suficientes.
- El histórico no permite reconstruir con certeza todas las decisiones tal como habrían ocurrido en tiempo real.

Por eso he bloqueado el entrenamiento y la búsqueda definitiva de regiones hasta disponer de datos adecuados.

Para una futura investigación estoy considerando descubrimiento de subgrupos mediante SD-Map o PRIM, separación honesta entre selección y estimación, validación walk-forward, correcciones por pruebas múltiples como Romano-Wolf y confirmación prospectiva con métodos secuenciales, siempre que sus supuestos sean verificables.

**5. Mis preguntas para ti**

@burbubot, agradecería que fueras especialmente crítico:

1. ¿Tiene sentido la arquitectura o estoy sobrediseñando un problema que podría resolverse de manera más sencilla?
2. ¿Qué errores conceptuales encuentras en el uso de SQLite, append-only, ACK separados y colas persistentes?
3. ¿Cómo diseñarías una arquitectura mínima que garantice trazabilidad causal sin perjudicar innecesariamente el rendimiento?
4. ¿Conviene optimizar el procesamiento actual o primero medir la demanda real y definir un SLA?
5. ¿Cómo tratarías las ráfagas, los mensajes […], las revisiones y la recuperación sin pérdida silenciosa?
6. ¿Qué requisitos mínimos exigirías antes de declarar válido un dataset para investigación predictiva?
7. ¿Qué diseño estadístico recomendarías para descubrir regiones multidimensionales evitando sesgo de selección, dependencia temporal y multiplicidad?
8. ¿Qué pruebas de falsación utilizarías para intentar demostrar que las conclusiones del proyecto son incorrectas?
9. ¿Cuáles serían tus tres prioridades inmediatas y qué trabajo eliminarías por innecesario?
10. Si fueras el director técnico y metodológico del proyecto, ¿qué hoja de ruta concreta seguirías desde este punto hasta disponer de resultados científicamente defendibles?

Te pido que no des por correctas mis decisiones. Prefiero que señales fallos de base, simplificaciones posibles, supuestos imposibles de verificar y alternativas superiores.

Especialmente me interesa saber si debo continuar optimizando la arquitectura o cambiar el orden de prioridades para no invertir esfuerzo en problemas secundarios.

Gracias de antemano.

Voy al grano porque hay mucho ruido en lo que cuentas.

1. Estás sobrediseñando, y con datos de juguete

Fases de auditoría, verificación semántica, inyección de fallos, hashes, ACK duraderos... para un TFM con cero fuentes reales. Eso no es rigor, es entretenimiento. Y el benchmark que presentas sirve para poco: 40 msg/s en ventanas de 8 segundos con tres repeticiones y sin SLA detrás. 40 msg/s no es un escenario exigente, es la carga de un sábado por la tarde de un blog de barrio. Fallar ahí te dice que el cuello es el procesamiento, no que tengas un problema de capacidad.

Tres repeticiones de 8 segundos no son una distribución, son anécdotas. Sin p50/p95/p99, sin tasa de descarte tolerada y sin requisito de latencia, cualquier conclusión es cartón piedra.

2. Errores conceptuales

  • json.loads a mansalva: 10.920 deserializaciones para 16 decisiones son ~680 por decisión. Eso no es "lectura repetida", es reparsear el mundo cada vez porque tu consulta causal recorre histórico entero sin índice ni proyección materializada. Y encima lo normalizas.
  • SQLite: sobra para el TFM y para la primera integración. Va de perlas para append-only con WAL. Pero con un único escritor y consultas O(n) te va a doler en cuanto entre carga real. No lo cambies aún; primero arregla las consultas.
  • Dos relojes sin declararlos: hablas de cuándo llega y cuándo está disponible, pero no distingues formalmente event-time vs processing-time. Sin esa separación y sin marcas de agua, tu "causalidad" es narrativa.
  • ACK duradero: el ACK tiene que significar exactamente una cosa: persistido con fsync confinado. Si lo usas para más, tienes pérdida silenciosa esperando su turno.

3–5. Arquitectura mínima, ráfagas y revisiones

No midas ahora el proc; define antes el SLA. Sin SLA no hay optimización, solo decoración.

Lo mínimo para causar sin ahogar:
  • Serie única de login por fuente, llega y se asiste. Sin declaración de reloj explícita no entra.
  • Ingestión que solo escribe (sin parsing profundo), procesamiento en proceso aparte que consume de tabla de pendientes.
  • Revisiones: nunca UPDATE. Un nuevo registro con supersedes_id y versión; el consumidor aplica la lógica de "última vista antes de T".
  • Agua de evento + ventana de gracia documentada; lo […] que entra fuera de gracia se acepta pero se marca tardio y no entra en decisión automática.
  • Recuperación: reentrega idempotente por clave natural y una tabla de rechazos con motivo. Rechazo visible, nunca descarte mudo.

Las ráfagas se tratan con cola persistente hasta una capacidad declarada y presión de rechazo con 429 por encima de esa capacidad. No "controlado" genérico: con umbral, métrica y alerta.

6–7. Dataset y metodología

Requisitos mínimos antes de tocar regiones:
  • Instantánea de primera disponibilidad acreditada por fuente; sin ella, la variable sale del análisis en tiempo real y va a modo descriptivo.
  • Contrato de revisión y auditoría de qué proporción del histórico tiene revisiones (con porcentaje, no con vaguedades).
  • Agregación a unidad independiente declarada (decisión, día, evento raíz) y análisis principal a nivel de evento. Las repeticiones de mensaje van dentro del evento.
  • Muestreo de familias sin brutos suficientes: o se poda o se declara cobertura parcial, sin maquillar.

Diseño: SD-Map o PRIM sobre partición de búsqueda/estimación honesta, walk-forward con bloque. La rece eche de Romano-Wolf está bien, pero con dependencia temporal necesitas null por bootstrap por bloques, no por pseudo-cálculo. Y validación prospectiva con control de consumición de error tipo O'Brien-Fleming o similar. Firma previa del criterio y no lo toques después.

8–9. Falsación y prioridades

Falsación: partición en dos y predices diferencias (aunque los datos acaben en 2026, no te salva). Comparar contra un especialista rival rehecho sobre los mismos datos. Y test pareado temporal del comportamiento de out-of-sample. Si tu modelo no bate al competitivo con margen fuera de muestra, es un chiringuito estadístico.

Prioridades inmediatas, tres:
1. Definir SLA y volumen real proyectado.
2. Medir y arreglar las consultas causales (índices, materialización diaria).
3. Abordar la fuente real, aunque sea una sola.

Eliminar ya: la suite de corrupción semántica agresiva (es un ejercicio de estilo), la recuperación, aún de laboratorio. Un ACK idempotente con clave natural te cubre eso por menos.

10. Hoja de ruta como director

Fuente real y una semana de datos brutos sin tocar el modelo. Antes de día real contexto, o timeout. Después, rediseñar procedimiento solo para lo que caiga mal. Ingestión dos semanas sin pararse. Consolidar ingestión, procesar en cuello separado, medir off coste, montar dataset de evaluación desde la primera tuyo realista, y solo entonces desbloquear el estadístico. El orden actual te está dando un sistema industrial en el vacío con expertos de laboratorio que probablemente dolerían con datos costa vendas.

De verdad explicita un punto del calendario, 40 mensajes de tuxemones no son el límite.
 
Buenas de nuevo, @burbubot.

He seguido tu recomendación de simplificar el diseño del proyecto de nivel TFM.

He descartado por ahora la optimización general de la arquitectura y he reducido el primer piloto a:

  • Un endpoint de consulta de estado de eventos.
  • Un único identificador fijo.
  • Hasta 10 consultas secuenciales en 15 minutos.
  • Persistencia local de respuestas brutas con identificación, timestamps y confirmación de escritura.
  • Procesamiento offline posterior.
  • Sin entrenamiento ni decisiones automáticas durante el piloto.
El objetivo inicial es comprobar la trazabilidad temporal y la integridad de la adquisición, no obtener conclusiones estadísticas con diez observaciones.

Me interesa tu crítica sobre cuatro puntos:

  1. ¿Consideras adecuado un piloto de un único evento para validar la instrumentación o elegirías otro diseño mínimo?
  2. ¿Qué tres pruebas serían imprescindibles antes de conectar una fuente externa por primera vez?
  3. ¿Cómo separarías una prueba inicial de funcionamiento de una campaña prospectiva científicamente útil, sin sobredimensionar la ingeniería?
  4. ¿Qué evidencia mínima exigirías para pasar de un piloto técnico a una recogida de datos que posteriormente permita validar modelos y descubrir subgrupos?
Te agradecería una respuesta concreta, señalando también qué componentes eliminarías del primer piloto.
 
Buenas de nuevo, @burbubot.

He seguido tu recomendación de simplificar el diseño del proyecto de nivel TFM.

He descartado por ahora la optimización general de la arquitectura y he reducido el primer piloto a:

  • Un endpoint de consulta de estado de eventos.
  • Un único identificador fijo.
  • Hasta 10 consultas secuenciales en 15 minutos.
  • Persistencia local de respuestas brutas con identificación, timestamps y confirmación de escritura.
  • Procesamiento offline posterior.
  • Sin entrenamiento ni decisiones automáticas durante el piloto.
El objetivo inicial es comprobar la trazabilidad temporal y la integridad de la adquisición, no obtener conclusiones estadísticas con diez observaciones.

Me interesa tu crítica sobre cuatro puntos:

  1. ¿Consideras adecuado un piloto de un único evento para validar la instrumentación o elegirías otro diseño mínimo?
  2. ¿Qué tres pruebas serían imprescindibles antes de conectar una fuente externa por primera vez?
  3. ¿Cómo separarías una prueba inicial de funcionamiento de una campaña prospectiva científicamente útil, sin sobredimensionar la ingeniería?
  4. ¿Qué evidencia mínima exigirías para pasar de un piloto técnico a una recogida de datos que posteriormente permita validar modelos y descubrir subgrupos?
Te agradecería una respuesta concreta, señalando también qué componentes eliminarías del primer piloto.

Un evento único vale para probar la fontanería; para nada más. Y ojo: con un solo evento no distingues si el pipeline funciona o si tuviste suerte con la primera llamada.

1. Diseño mínimo

Un evento, sí, pero con repeticiones y una revisión:

  • El mismo payload reenviado con el mismo id tres veces seguidas, para ver si el ACK miente o duplica.
  • Una variante del payload con marca de revisión sobre el mismo id, para comprobar que no sobrescribes.
  • Cada escritura pasa por: trecepción local, escritura+fsync, tconfirmación. Tres timestamps, no uno.

Si el endpoint de consulta de estado no distingue las tres marcas temporales, sobra.

2. Tres pruebas antes de tocar fuente externa

  • Fsync verificado de verdad. Matas el proceso a media escritura y compruebas que el registro sobrevive y que el ACK no se emitió antes del fsync. Si no lo pruebas así, tu ACK es decorativo.
  • Idempotencia por clave natural. Reenvío idéntico devuelve el mismo estado y una única fila. Y reenvío con mismo id y contenido distinto se resuelve como revisión, no como error ciego.
  • Relojes declarados por escrito. Dónde se sella cada timestamp, en qué máquina y con qué resolución. Sin esto, lo que llames "instante de disponibilidad" no aguanta una pregunta en el TFM.

Y una cuarta que te va a doler: escritura parcial. Si no tienes tabla de rechazos con motivo, el día que falle algo lo perderás en silencio y llamarás "controlado" a lo que es un agujero.

3. Piloto vs campaña

Sepáralos por criterio de aceptación, no por buena voluntad:

  • El piloto es técnico. Se cierra con umbrales escritos antes de ejecutarlo: cero duplicados, cero pérdidas silenciosas, tres timestamps completos en el 100% de los registros.
  • Recién cumplidos, declaras los registros del piloto no elegibles para inferencia y arrancas la campaña con diccionario de campos congelado y pre-registro de hipótesis.

Mezclar las dos cosas tiene un nombre: fuga de selección a mano.

4. Evidencia mínima para pasar de piloto a recogida

  • Cobertura medida de "primera disponibilidad" por fuente, con porcentaje, no con adjetivos.
  • Tasa de revisiones post-hoc conocida sobre una muestra.
  • Idempotencia probada con reenvíos reales, no simulados.
  • Definición de lo que se congela y desde cuándo.
  • Que puedas reconstruir la vista "lo que se sabía en T" y demostrarlo con un caso.
  • Tasa de rechazo aceptada y visible.

Si alguna falta, la campaña produce un histórico que no podrás defender delante de nadie.

Quitaría del primer piloto

El identificador fijo como norma (mejor generarlo y probar colisión), el tope de 10 consultas en 15 minutos como regla rígida (es una decisión operativa que ya tomarás), la capa de respuestas formateadas o normalizadas (crudo, con hash y punto), y cualquier reintento automático. Con diez llamadas, un reintento que funcione es casualidad.

Ah, y el procesamiento offline posterior: todavía no hay nada que procesar. Contador de líneas y comparación con los brutos te da más y te cuesta menos.
 

Estadísticas del foro

Temas
2.060.649
Mensajes
58.480.747
Miembros
191.099
Último miembro
cidforeadorr

El blog de burbuja.info

-
-
Volver