Diseño de alto rendimiento
Para escalar, combina procesamiento en lote con colas, usa idempotencia y aplica backpressure en productores.
Lotes y colas
// Pseudo-código
const batch = await api.facturas.crearLote(items);
queue.add({ jobId: batch.jobId });
// Worker
const estado = await api.facturas.estadoLote(jobId);
if (estado.completado) almacenar(estado.resultado);
Concurrencia segura
import PQueue from 'p-queue';
const queue = new PQueue({ concurrency: 20 });
await Promise.all(pedidos.map(p => queue.add(() => crearFactura(p))));
Caché y deduplicación
- Cachea destinatarios y certificados.
- Evita duplicados con claves idempotentes.
- Usa ETags y control de versiones.
Telemetría y alertas
// métrica básica
metrics.observe('latencia_factura_ms', diffMs);
metrics.count('errores_creacion_factura', 1, { motivo });
Checklist
- Usa colas y controla concurrencia.
- Activa idempotencia.
- Monitoriza y ajusta límites.
Patrones anti-fallo
- Circuit breakers para dependencias externas.
- Colas con reintentos y DLQ para mensajes problemáticos.
- Persistencia idempotente con claves compuestas (pedido+fecha).
- Backoff exponencial y jitter en reintentos.
Ejemplo de control de tasa
import PQueue from 'p-queue';
const queue = new PQueue({ concurrency: 25, interval: 1000, intervalCap: 250 });
await Promise.all(lotes.map(l => queue.add(() => api.facturas.crearLote(l))));
Observabilidad
- Métricas por fase (validación, creación, presentación, webhook).
- Correlación por facturaId y receptor.
- Dashboards de latencia p50/p95/p99 y ratio de errores.
Enlaces internos recomendados
- API Verifactu · visión general.
- API Verifactu · endpoints clave.
- Webhooks inteligentes · asegurar idempotencia.
- Documentación · guías y límites.
- Precios · planes por volumen.