Temporal Workers
Pipelines de datos largos y retry-safe: la columna vertebral en background de GetMike.
Paquete TypeScript de Temporal workers que sincroniza clientes, pedidos, productos, categorías, atributos y embeddings desde Mavis ERP y NopCommerce hacia Supabase, y luego transforma datos staged a tablas de producción consumidas por GetMike.
La tarea era crear un pipeline fiable de sincronización de datos. Por eso elegimos Temporal Workers como motor de workflows y un senior developer/colega se encargó de la configuración de Elasticsearch. Yo desarrollé los workflows y activities principales de Temporal: retries, heartbeats, lógica de resume-from-state, transforms y escrituras staging/producción en Supabase.
Qué estaba bloqueando el avance.
Las respuestas de GetMike solo son tan buenas como los datos detrás. Las APIs de ERP y commerce son lentas, frágiles, paginan distinto por tenant y son demasiado grandes para un script nocturno quebradizo. Los fallos tenían que ser observables, reproducibles y aislados por tenant.
Cómo lo resolví.
Temporal workflows orquestan pasos deterministas de sync mientras las activities poseen todo el I/O. Las páginas raw se guardan en staging en Supabase con offsets de resume, las activities largas hacen heartbeat cada pocos segundos, los transforms pueden reiniciar desde un paso nombrado y los batches de embeddings de Gemini se dividen adaptativamente al fallar. El resultado es un pipeline retry-safe que se recupera de fallos parciales sin desviarse silenciosamente.