Constant Contact
Casi cuatro años en el equipo de Internal Services de una plataforma de email marketing, a cargo de la API central en Rails: el servicio que orquesta los microservicios con los que los clientes crean, programan y envían sus campañas. Al mismo tiempo construí vistas en React y TypeScript sobre esa misma API.
LO QUE CONSTRUÍ
01API central del ecosistemaOrquesta ~10 microservicios independientes.
La API en Rails no era la fuente de verdad: era el esqueleto que orquestaba los demás servicios y concentraba la lógica de las campañas. Alrededor estaban el servicio de envío de correo, los segmentos en Snowflake con consultas en Elasticsearch, las recomendaciones de productos por contacto, los reportes y analytics, la importación de contactos y la configuración de DNS. Con el equipo la mantuvimos actualizada, corregimos fallas y la mejoramos durante cuatro años.
02Lógica de campañasDel segmento al envío y las estadísticas.
Creación e importación de segmentos, programación y envío de campañas, tracking de aperturas y clics, cálculo de estadísticas y revenue, y automatizaciones por eventos, como enviar un correo 30 días después de que un contacto compra un producto. Las campañas más grandes superaban los 3 millones de destinatarios por envío, así que cualquier falla tenía un impacto amplio.
03Fallas entre serviciosEstado compartido y errores silenciosos.
Coordiné flujos de varios pasos entre servicios: el paso de estado entre ellos y las fallas parciales, cuando un paso se completa y el siguiente no. Un caso recurrente: si caía el servicio que actualizaba el estado de los contactos en Snowflake, el error se propagaba en silencio a otras partes de la plataforma. Nuestro trabajo era corregir los datos, arreglar la causa y evitar que volviera a pasar.
04Importación de contactos y dominiosTiendas en línea, archivos y DNS.
Los clientes traían sus contactos desde Shopify, WooCommerce o sus propias plataformas, o los importaban como archivos a través de EFS en AWS. También mantuvimos la configuración de DNS para que cada cliente enviara sus campañas desde el dominio de su empresa.
05Detección de anomalíasPython y Prophet integrados al backend.
Herramienta en Python con Facebook Prophet, integrada al backend en Rails, que aprende el patrón normal de cada cliente en errores e importaciones de archivos de contactos (por ejemplo, diario o cada tres días) y marca las desviaciones, como un cliente que deja de importar, para que el equipo lo contacte antes de que se convierta en un problema.
06Guardias y soportePagerDuty, una semana de cada ocho.
El equipo de Internal Services atendía los casos de clientes, bugs e incidentes de producción, y al mismo tiempo trabajaba un backlog de features pedidas por clientes. Estuve en la rotación de guardia con PagerDuty: una semana 24/7 cada ocho semanas.
07Interfaz en React y TypeScriptAnalytics, configuración y editor de campañas.
Construí y mantuve vistas de la aplicación principal sobre las mismas APIs del equipo: la sección de analytics con el desempeño agregado de las campañas (aperturas, lecturas, clics), las pantallas de configuración de cuenta y producto, y nuevos parámetros del editor de campañas, conectados de la API a la interfaz.