Facturacion desacoplada: como exe.dev evita que la logica de cobros contamine el nucleo del producto

Fuentes: Stripe Just Wants a Number

Bryan, ingeniero responsable de facturacion en exe.dev, explica en el blog de la empresa el problema clasico de mezclar la logica de cobros con la logica de negocio: cualquier camino critico del producto termina tocando llamadas a APIs de pago, lo que genera sistemas fragiles y muy costosos de mantener, sobre todo en una startup sin tiempo para reescribir facturacion. Para evitarlo, exe.dev adopta el concepto de billable facts: eventos atomicos que reflejan cambios de estado (por ejemplo, un asiento asignado en un equipo o el uso de disco de una maquina virtual) y que se emiten de forma desacoplada del flujo principal. Un worker downstream los recoge, calcula el delta correspondiente segun las reglas de negocio y reconcilia el resultado con Stripe, que en palabras del autor solo quiere un numero.

Gracias a este patron, dar de alta a un nuevo miembro del equipo ya no depende del codigo de facturacion: la invitacion marca el equipo como dirty, el worker calcula el cambio de asientos y actualiza la suscripcion en Stripe si procede. El mismo mecanismo se aplica a la facturacion metered por uso de maquinas virtuales y a compras dentro de la aplicacion iOS, donde el cliente solo comunica que alguien se suscribio y el sistema reconcilia despues. En un entorno sin code reviews donde cualquier empleado puede modificar cualquier parte del codigo, este aislamiento reduce la dependencia de una sola persona para tareas criticas de cobro y ha permitido que la facturacion sea abordable para el resto del equipo.