service

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.

ServiceMonolitoÚnico productor

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. 1

    Se instancia y se envía el evento

    Una subclase de events.event.Event con integration = True se instancia y se llama a .send(). El constructor base inyecta occurred_at en el payload (datetime.now().isoformat(), naive, hora local del proceso).

  2. 2

    Señal de Django

    send() emite una señal compartida que recibe events.handlers.handle_event.

  3. 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. 4

    Publish al broker

    events.tasks.publish_event corre en el worker y llama a event_bus.publish(...). Las excepciones se propagan a propósito, para que Cloud Tasks marque la tarea como fallida y reintente.

Warning

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ámetroValor
service_namebigbox-backend
AdapterGoogle Cloud Pub/Sub (PubSubAdapterConfig)
Schema registryEventCatalog (EventCatalogSchemaRegistryConfig)
OwnerEcommerce <ecommerce@bigbox.com.ar>
Versión de bigbox-event-bus1.1.10 / 1.1.9 (dos stages del Dockerfile)
Warning

Las dos etapas de infra/deployment/Dockerfile instalan versiones distintas de la librería (1.1.10 y 1.1.9). Conviene unificarlas.

Arquitectura

publishes
event
routes to
consumes
publishes
event
routes to
consumes
publishes
event
routes to
publishes
event
routes to
publishes
event
routes to
Viewing
Service
Bigbox Backend(v1.0.0)
omega-backend+2
Event
Order Completed(v1)
omega-backend+1
Channel
Google Cloud Pub/Subv1.0.0
At least oncepubsub
ecommerzeta
Service
Analytics(v1.0.0)
ecommerzeta
Event
Product Created(v1)
ecommerzeta
Service
Search(v1.0.0)
ecommerzeta
Event
Product Updated(v1)
ecommerzeta
Event
Product Deleted(v1)
ecommerzeta
Event
Availability Updated(v1)
alpha-centauri
  • services (3)
  • events (5)
  • channels (1)