| Broadcaster | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Authenticate broadcaster and lease one channel ingest epoch. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents the external caller from also owning the contract and failure behavior of Ingest Edge. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Broadcaster reconnects with stale epoch” to the external caller. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Broadcaster boundary before extracting or scaling it. |
| Ingest Edge | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Buffer jitter, timestamp packets, and feed deterministic rendition pipelines. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Broadcaster from also owning the contract and failure behavior of Stream Auth. | Put protocol, authentication, quotas, and business transitions in one process. Acceptable at low scale, but it couples external traffic risk to domain releases. Here that simpler choice would couple “One transcoder falls behind wall clock” to Broadcaster. | Costs another hop, policy distribution, and a high-blast-radius fleet. Introduce it when many clients or services need one protocol and protection boundary. Measure the latency, saturation, lag, or mismatch at the Ingest Edge boundary before extracting or scaling it. |
| Stream Auth | Preserves durable ordering, replay, and consumer checkpoints. In this design it participates in: Package aligned short segments and publish only checksummed immutable objects. | Decouples bursts and failure from user acknowledgment. It prevents Ingest Edge from also owning the contract and failure behavior of Channel Coordinator. | Call every downstream consumer synchronously. That couples user latency and availability to analytics, notification, indexing, and audit dependencies. Here that simpler choice would couple “Manifest references unavailable segment” to Ingest Edge. | Costs eventual consistency, schema evolution, replay tooling, idempotent consumers, and lag operations. Earn it when bursts or downstream failure must not block acknowledgment. Measure the latency, saturation, lag, or mismatch at the Stream Auth boundary before extracting or scaling it. |
| Channel Coordinator | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Advance manifest media sequence atomically and distribute through origin shields/CDNs. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Stream Auth from also owning the contract and failure behavior of Encoder Input Buffer. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Celebrity stream overloads origin” to Stream Auth. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Channel Coordinator boundary before extracting or scaling it. |
| Encoder Input Buffer | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Players adapt bitrate; QoE and DVR consumers process segments asynchronously. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Channel Coordinator from also owning the contract and failure behavior of Live Transcoders. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “CDN serves stream after authorization revocation” to Channel Coordinator. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Encoder Input Buffer boundary before extracting or scaling it. |
| Live Transcoders | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Authenticate broadcaster and lease one channel ingest epoch. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Encoder Input Buffer from also owning the contract and failure behavior of Segment Packager. | Perform the work before acknowledging the caller. This gives simpler consistency but unbounded tail latency and fragile retries. Here that simpler choice would couple “Broadcaster reconnects with stale epoch” to Encoder Input Buffer. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Live Transcoders boundary before extracting or scaling it. |
| Segment Packager | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Buffer jitter, timestamp packets, and feed deterministic rendition pipelines. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Live Transcoders from also owning the contract and failure behavior of Live Segment Store. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “One transcoder falls behind wall clock” to Live Transcoders. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Segment Packager boundary before extracting or scaling it. |
| Live Segment Store | Owns authoritative versioned state or immutable evidence. In this design it participates in: Package aligned short segments and publish only checksummed immutable objects. | Defines the source of truth and commit boundary. It prevents Segment Packager from also owning the contract and failure behavior of Manifest Service. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Manifest references unavailable segment” to Segment Packager. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Live Segment Store boundary before extracting or scaling it. |
| Manifest Service | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Advance manifest media sequence atomically and distribute through origin shields/CDNs. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Live Segment Store from also owning the contract and failure behavior of Origin Shield. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Celebrity stream overloads origin” to Live Segment Store. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Manifest Service boundary before extracting or scaling it. |
| Origin Shield | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Players adapt bitrate; QoE and DVR consumers process segments asynchronously. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Manifest Service from also owning the contract and failure behavior of Multi-CDN Router. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “CDN serves stream after authorization revocation” to Manifest Service. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Origin Shield boundary before extracting or scaling it. |
| Multi-CDN Router | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Authenticate broadcaster and lease one channel ingest epoch. | Removes repeated work from the latency-critical path. It prevents Origin Shield from also owning the contract and failure behavior of Viewer Player. | Read authoritative storage for every request. Simpler initially, but latency and source-of-truth load scale together and a hot key becomes a database incident. Here that simpler choice would couple “Broadcaster reconnects with stale epoch” to Origin Shield. | Costs invalidation, staleness, stampede protection, and memory. Add or split it only after the workload (10M concurrent viewers · 2–10 s latency · 100K live channels) proves repeated reads dominate. Measure the latency, saturation, lag, or mismatch at the Multi-CDN Router boundary before extracting or scaling it. |
| Viewer Player | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Buffer jitter, timestamp packets, and feed deterministic rendition pipelines. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Multi-CDN Router from also owning the contract and failure behavior of Chat / Reactions. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “One transcoder falls behind wall clock” to Multi-CDN Router. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Viewer Player boundary before extracting or scaling it. |
| Chat / Reactions | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Package aligned short segments and publish only checksummed immutable objects. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Viewer Player from also owning the contract and failure behavior of QoE Stream. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Manifest references unavailable segment” to Viewer Player. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Chat / Reactions boundary before extracting or scaling it. |
| QoE Stream | Preserves durable ordering, replay, and consumer checkpoints. In this design it participates in: Advance manifest media sequence atomically and distribute through origin shields/CDNs. | Decouples bursts and failure from user acknowledgment. It prevents Chat / Reactions from also owning the contract and failure behavior of DVR Archive. | Call every downstream consumer synchronously. That couples user latency and availability to analytics, notification, indexing, and audit dependencies. Here that simpler choice would couple “Celebrity stream overloads origin” to Chat / Reactions. | Costs eventual consistency, schema evolution, replay tooling, idempotent consumers, and lag operations. Earn it when bursts or downstream failure must not block acknowledgment. Measure the latency, saturation, lag, or mismatch at the QoE Stream boundary before extracting or scaling it. |
| DVR Archive | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Players adapt bitrate; QoE and DVR consumers process segments asynchronously. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents QoE Stream from also owning the contract and failure behavior of operators and repair tooling. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “CDN serves stream after authorization revocation” to QoE Stream. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the DVR Archive boundary before extracting or scaling it. |