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.

Rol
Ingeniero backend
Cloud
AWS
API
GraphQL
IaC
Terraform
Ver el producto Índice
Fig. 01. thewebcamlab.com, la plataforma a la que sirve este backoffice.

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.

AppSyncNestJSPostgreSQLCognitoTerraformEKS

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.