Bigbox Backend
El monolito Django de Bigbox. Es el único productor de eventos de la plataforma: publica los cinco eventos del bus, de tres dominios distintos.
Overview
bigbox-backend es el monolito Django de Bigbox y hoy el único productor de eventos:
los cinco eventos del catálogo salen de acá. No consume ninguno.
Publica en tres dominios distintos (payments, search, reservations), cada uno con su
equipo dueño, porque los módulos correspondientes conviven en el mismo repositorio.
Cómo publica
Todo evento pasa por el mismo camino, definido en src/events/:
- 1
Se instancia y se envía el evento
Una subclase de
events.event.Eventconintegration = Truese instancia y se llama a.send(). El constructor base inyectaoccurred_aten el payload (datetime.now().isoformat(), naive, hora local del proceso). - 2
Señal de Django
send()emite una señal compartida que recibeevents.handlers.handle_event. - 3
Se encola en Cloud Tasks
El handler encola
publish_event.delay(topic, payload)en vez de publicar inline, para no bloquear el request y para que la cola reintente los fallos. - 4
Publish al broker
events.tasks.publish_eventcorre en el worker y llama aevent_bus.publish(...). Las excepciones se propagan a propósito, para que Cloud Tasks marque la tarea como fallida y reintente.
Si falla el encolado (no el publish), el evento se pierde sin reintento: solo queda un
logger.exception. Es el único punto del camino sin red de contención.
Configuración del bus
Definida en src/events/event_bus.py:
| Parámetro | Valor |
|---|---|
service_name | bigbox-backend |
| Adapter | Google Cloud Pub/Sub (PubSubAdapterConfig) |
| Schema registry | EventCatalog (EventCatalogSchemaRegistryConfig) |
Owner | Ecommerce <ecommerce@bigbox.com.ar> |
Versión de bigbox-event-bus | 1.1.10 / 1.1.9 (dos stages del Dockerfile) |
Las dos etapas de infra/deployment/Dockerfile instalan versiones distintas de la
librería (1.1.10 y 1.1.9). Conviene unificarlas.