One write model, one owner
Two APIs share the estate and neither is the other’s copy. The Node/Express storefront API carries search, cart, checkout and live updates — the paths that take launch-day concurrency. The Django back-office API owns catalogue, orders and fulfilment, and owns the write model, so a staff action and a customer order resolve against the same Postgres 16 source of truth. Cart state and the job queue sit in separate Redis instances, so a busy checkout cannot starve a worker. Search runs on its own OpenSearch cluster, where a heavy query costs latency rather than stock accuracy.
