Backoffice distribuido. Byte4Bit. AppSync, NestJS, Terraform, EKS.
TWLPro
Una plataforma de backoffice migrada a microservicios en AWS, con una capa de orquestación coordinando extractores headless que alimentan los pipelines de reporting, nómina, comisiones y pagos.
El problema
La plataforma tenía que servir a un backoffice con formas de lectura muy distintas, y seguir sacando datos de sistemas externos que no ofrecen API alguna.
Ayudé a migrarla a microservicios en AWS con AppSync GraphQL, Lambdas en NestJS, PostgreSQL, Cognito y Terraform, y ayudé a construir la capa de orquestación que coordinaba extractores Puppeteer en EKS y alimentaba los pipelines de reporting, nómina, comisiones y pagos.
Un contrato GraphQL para muchas formas de lectura
Una pantalla de backoffice pide proyecciones muy distintas de las mismas entidades. AppSync dio a los clientes una sola superficie en lugar de un endpoint REST por pantalla.
La extracción aislada del camino de la petición
El trabajo con navegador headless corre en su propio horario en EKS, así que un extractor lento o bloqueado nunca se convierte en una página lenta.
Infraestructura que se puede reconstruir
Terraform significa que el entorno es un artefacto revisable en lugar de una secuencia de clics en la consola que nadie recuerda.
Decisiones y el precio que pagué por ellas
AppSync GraphQL como contrato de cliente
Una pantalla de backoffice suele necesitar una proyección distinta de las mismas entidades. Un solo esquema absorbió esa variedad sin hacer crecer un endpoint por vista.
Trade-off aceptado
El coste de consulta y la profundidad de los resolvers pasan a ser cosas que vigilar, y un cliente descuidado puede pedir algo caro.
Extractores en EKS, todo lo demás en Lambda
Las sesiones de navegador headless son largas y comen memoria, que es justo la forma que peor le sienta a Lambda. Ponerlas en EKS mantuvo serverless al resto de la plataforma.
Trade-off aceptado
Dos modelos de ejecución que operar y sobre los que razonar en lugar de uno.
Orquestación entre la extracción y los pipelines
Reporting, nómina, comisiones y pagos consumen los mismos datos extraídos. Una capa de coordinación evitó que cada uno inventara su propia planificación.
Trade-off aceptado
El orquestador pasa a ser un componente que importa, con sus propios modos de fallo que hay que diseñar.
