Saltar al contenido principal

gtm-fabric

Worker plane de Crimoo. Procesa eventos de tagging y orquesta contenedores Docker GTM.

Es stateless en cuanto a persistencia de dominio/config: no tiene base de datos propia para dominios ni certificados. Consulta configuración a node-api al arrancar, mantiene cache en memoria, y reporta cambios de vuelta a node-api. Escribe eventos de tagging en ClickHouse.

Stack

  • Framework: Spring Boot 3.1 + Java 17
  • HTTP: Spring WebFlux (Reactor, non-blocking)
  • Arquitectura: Hexagonal (ports & adapters)
  • Mensajería: Google Cloud Pub/Sub
  • Storage: ClickHouse (eventos de tagging + logs de containers)
  • Containers: Docker Java API
  • DNS/SSL: Cloudflare API + Let's Encrypt (ACME4j)
  • Geolocation: MaxMind GeoLite2
  • Rate Limiting: Resilience4j

Stateless — cómo obtiene configuración

Responsabilidades

Ver CAPI Gateway para el flujo completo.

Endpoints

MétodoPathDescripción
DELETE/api/v1/gtm/:idEliminar GTM
GET/api/diagnostic/healthHealth check del container
GET/api/v1/gtm/:id/logsLogs históricos
GET/api/v1/gtm/:id/logs/streamSSE logs en vivo
POST/api/v1/gtm/:id/domains/updateCambiar dominio primario
POST/api/v1/gtm/:id/domains/addAñadir dominio custom
DELETE/api/v1/gtm/:id/domains/removeRemover dominio
POST/api/v1/gtm/:id/domains/verifyVerificar DNS + generar cert para dominio PENDING
POST/api/v1/gtm/:id/certificates/renewRenovar cert (llamado por node-api scheduler)
PUT/api/v1/gtm/:id/custom-loaderHabilitar custom loader
GET/api/capture-config/:gtmIdConfig pública de captura (sin auth)
POST/api/iIdentity resolution + first-party cookies
GET/POST/DELETE/api/admin/crm/fields/:gtmIdField definitions
GET/POST/PUT/DELETE/api/admin/crm/rules/:gtmIdCapture rules
POST/capi/meta/v{ver}/{pixelId}/eventsGateway hacia Meta Conversions API (forwarding desde sGTM)
POST/capi/tiktok/v{ver}/event/trackGateway hacia TikTok Events API

Event Parser Chain

Provisioning de un GTM

Schedulers

SchedulerFrecuenciaQué hace
Domain Verification (backup)Cada 1hBusca dominios PENDING en node-api, verifica DNS (CNAME → track-name.crimoo.com), genera cert si resuelve, marca FAILED si > 48h

Nota: La renovación de certificados la orquesta node-api (scheduler diario 2 AM). fabric solo ejecuta el ACME cuando node-api lo llama via POST /certificates/renew.