Multiplayer Collaborative Canvas  ·  View 08 of 23  ·  Structure

Platform Components

The containers, grouped by the plane they belong to and the state they are allowed to touch.

Editable source SVG draw.io All views
Document plane — Azure Edge Front Door + WAF Admission service capability binding Session router placement Session tier — AKS Session host sequencer + socket Catch-up service Checkpoint writer Rebuild verifier log vs snapshot Record and derived state Operation log Cosmos DB Lease & epoch Cosmos DB Checkpoints Blob Storage Version index PostgreSQL Control plane Services Sharing service grants, links Comment service Asset service upload intent Admin API Stores Metadata store PostgreSQL Capability cache Redis Audit log immutable Web PubSub viewer fan-out Entra ID Asset blobs content-addressed Malware scanning upgrade resolve grant claim epoch fenced append snapshot presence pre-signed verdict Platform Components (C4 Level 2) Interface / broker Application we own Data store External / third party synchronous event / async The rebuild verifier replays the log and diffs it against the live snapshot. Omitted: every service reads Entra ID and writes Azure Monitor. v 1.0 · owner Platform Architecture · date 2026-10

Decisions

  • The session router is a placement service, not a proxy: it claims the lease and names the host, then gets out of the data path. Putting it in the path would add a hop to every operation and make it the platform's own single point of failure (ADR-03).
  • The rebuild verifier exists because the checkpoint writer is the session itself. A background job replays the log independently and diffs the result, which is how a one-way application bug is caught before a user finds it (ADR-10).
  • The control plane is a separate deployment with its own store, so the blast radius of a sharing-service failure is admissions and not live editing.

Assumptions

  • Session hosts are memory-optimised and hold whole documents; the p99 60 MB document and the 500 MB ceiling size the node (ADR-08).
  • The capability cache holds a 5-minute grace window — long enough to survive a control-plane restart, short enough that a revocation is never older than the window.

Risks

  • A single platform component owns both the socket and the sequencer. That is the deliberate decision of the set (ADR-01), and it concentrates the failure: a bad deploy to the session host is a product-wide read-only event, which is why releases are gated on convergence replay (view 20).