Punto de venta. Freelance, 2021. Dos APIs independientes, documentadas con Swagger.
Bioscenter
Un sistema de punto de venta construido como dos APIs independientes: licenciamiento centralizado por un lado, operación local de la tienda para inventario, usuarios y transacciones por el otro.
El problema
Una tienda que no puede vender cuando se cae la conexión no es un punto de venta. Pero un licenciamiento que solo vive en la caja tampoco es control.
Diseñé el sistema como dos APIs independientes, licenciamiento centralizado y operación local cubriendo inventario, usuarios y transacciones, y documenté ambas con Swagger.
Se sigue vendiendo aunque la conexión no siga
La operación local no depende de alcanzar el servicio de licencias, así que una caída de conexión detiene la sincronización y no la tienda.
Las licencias siguen bajo control central
Separar las dos cosas no significó renunciar al control central. Significó decidir exactamente cuánto tiempo puede una caja funcionar sola.
Decisiones y el precio que pagué por ellas
Dos APIs en lugar de una
Separar el licenciamiento de la operación local permitió que cada tienda siguiera vendiendo cuando se caía la conectividad, sin renunciar al control central de las licencias.
Trade-off aceptado
Dos servicios que desplegar, documentar y versionar, y un camino de reconciliación que diseñar para todo lo que pasó mientras una caja estuvo desconectada.
Documentar ambas superficies con Swagger
Una entrega freelance solo es real si la siguiente persona puede leer el contrato sin leer la implementación.
Trade-off aceptado
La especificación es una cosa más que se queda obsoleta salvo que se mantenga honesta junto al código.