FlowSync Webhooks

Hookdeck Outpost — Entrega de Eventos Multi-Tenant

● Sistema Operativo 320 Tenants Self-Hosted · MIT
Métricas en Tiempo Real — Hoy
Eventos Entregados
847K
+12.4% vs ayer
Tasa de Entrega
99.7%
SLA objetivo: 99.5%
Tenants Activos
318
de 320 totales
Eventos con Retry
2.1K
Promedio: 1.3 intentos
Latencia P95
183ms
P50: 42ms
Arquitectura de Entrega — FlowSync + Hookdeck Outpost
Capa de eventos entre el core de FlowSync y los destinos heterogéneos de cada tenant
🏪
FlowSync Core
Publisher de Eventos
Publica eventos
Hookdeck Outpost
Router + Retry Engine
Enruta por tenant
🌐
Webhooks HTTP
40% tenants
☁️
Amazon SQS
25% tenants
🔵
Google Pub/Sub
20% tenants
📊
Apache Kafka
10% tenants
🎯
EventBridge
5% tenants
Destinos Soportados
Configuración por tipo de destino Outpost
Destino Protocolo Tenants Estado
🌐 Webhooks HTTP/S HTTPS 128 Activo
☁️ Amazon SQS AWS SDK 80 Activo
🔵 Google Pub/Sub gRPC 64 Activo
📊 Apache Kafka Kafka 32 Activo
🎯 EventBridge AWS Events 16 Beta
🐰 RabbitMQ AMQP 0 Próximo
Feed de Eventos — Últimos 10 minutos
Eventos emitidos por FlowSync y su estado de entrega
order.created
tenant: zara-ecom-prod · destino: SQS · eu-west-1
Entregado
hace 23s
shipment.updated
tenant: decathlon-iberia · destino: HTTP · webhook.decathlon.es
Entregado
hace 41s
invoice.paid
tenant: mediamarkt-es · destino: Kafka · broker:9092 · intento 2/5
Reintentando
hace 1m 12s
inventory.low
tenant: mango-retail · destino: Pub/Sub · projects/mango/topics/erp
Entregado
hace 2m 5s
return.requested
tenant: cortefiel-online · destino: EventBridge · default bus
Entregado
hace 3m 28s
payment.failed
tenant: pronovias-shop · destino: HTTP · timeout 30s · agotados 5/5
Fallido
hace 7m 44s
Despliegue Self-Hosted
docker-compose.outpost.yml — FlowSync
docker-compose.outpost.yml
services: outpost: image: hookdeck/outpost:latest ports: - "3333:3333" environment: HOOKDECK_API_KEY: ${FS_HOOKDECK_KEY} OUTPOST_PORT: 3333 OUTPOST_RETRY_LIMIT: 5 OUTPOST_RETRY_BACKOFF: exponential OUTPOST_REDIS_URL: redis://redis:6379 depends_on: - redis redis: image: redis:7-alpine volumes: - redis_data:/data # Cola: 2M eventos/día · 3 réplicas prod
Política de Reintentos
Backoff exponencial con jitter · 5 intentos máx
Intento 1 — Inmediato
Entrega en el momento del evento
Intento 2 — 30s después
Si el destino devuelve 5xx o timeout
Intento 3 — 5 min después
Con jitter ±10% para evitar thundering
Intento 4 — 30 min después
Alerta Slack al equipo de soporte
Intento 5 — 2h después
Último intento · DLQ + notificación tenant
Volumen por Tipo de Evento
Últimas 24 horas · Total: 847K eventos
order.created 312K (36.8%)
shipment.updated 248K (29.3%)
inventory.low 142K (16.8%)
invoice.paid 98K (11.6%)
return.requested 32K (3.8%)
payment.failed 15K (1.8%)
Métricas SLA
99.7%
Entrega 1er intento
0.3%
Necesitaron retry
42ms
Latencia mediana
0.02%
Fallidos definitivo
API de Registro de Destinos por Tenant
FlowSync llama a Outpost API para configurar el destino de cada cliente
POST /api/v1/tenants/{tenant_id}/destinations
// Registrar destino SQS para tenant zara-ecom-prod POST /api/v1/tenants/zara-ecom-prod/destinations Authorization: Bearer FS_HOOKDECK_KEY Content-Type: application/json { "type": "sqs", "name": "zara-orders-queue", "config": { "queue_url": "https://sqs.eu-west-1.amazonaws.com/123/orders", "region": "eu-west-1", "access_key_id": "AKIA...", "secret_access_key": "encrypted:..." }, "event_types": ["order.*", "inventory.*"], "active": true } // Response 201 Created { "id": "dest_9fK2mN8p", "tenant_id": "zara-ecom-prod", "status": "active", "created_at": "2026-06-16T10:23:41Z" }
Tenants Activos — Muestra
Configuración multi-destino por cliente · 318 activos de 320
zara-ecom-prod
SQS HTTP
142K eventos/día
decathlon-iberia
HTTP Pub/Sub
98K eventos/día
mediamarkt-es
Kafka
87K eventos/día
mango-retail
Pub/Sub SQS
76K eventos/día
cortefiel-online
EventBridge
54K eventos/día
pronovias-shop
HTTP
12K eventos/día
leroy-merlin-es
Kafka HTTP
63K eventos/día
el-corte-ingles
SQS Kafka
118K eventos/día
ikea-spain
Pub/Sub
45K eventos/día