ADR-0007 — The streaming side is poll-fed, and we say so¶
- Status: superseded by ADR-0015
- Date: 2026-07-02
- Domain: ingestion architecture · honesty
Kept for history, per the ADR immutability convention: this record's own Alternatives-considered section (below) explicitly named and rejected Wikipedia's EventStreams as "drifting off the media-analytics narrative." ADR-0015 is a direct, documented reversal of that call — Twitch's developer registration turned out to be permanently blocked, and the honest answer was a genuine push source, not a simulated one. The considered → rejected → reversed sequence is itself worth keeping visible.
Context¶
Comparison 1 needs a streaming ingestion path for Twitch viewer counts. Twitch Helix exposes
no push API for this metric — GET /helix/streams is poll-only. EventSub covers other
event types, not viewer-count ticks. So a "true" event-source architecture is impossible with
this feed, and any portfolio claiming otherwise would be lying with a diagram.
Decision¶
Build the streaming side as poll-fed streaming: a tight-loop poll (~5 s) whose results are published as events into Redis Streams and consumed through a consumer group. The architecture downstream of the broker is genuinely streaming — event-shaped records, consumer lag, backlog semantics. The origin is a poll, and every place the exhibit is described states this explicitly, including the public page ("streaming in architecture, not at the origin").
Consequences¶
- The freshness-vs-cost comparison stays valid: the tradeoff being measured (low lag / constant draw vs high lag / near-zero idle cost) is a property of the pipeline, not of the origin.
- Minimum achievable freshness is bounded by the poll interval (~5 s), not milliseconds. The exhibit shows real numbers, so this is visible, not hidden.
- The honesty clause is itself portfolio signal: recognizing where an architecture diagram overstates reality is precisely the architect's job.
Alternatives considered¶
- Pretend it's a native event stream — rejected: dishonest, and easily caught by anyone who knows the Twitch API.
- Switch to a real event source (e.g. Wikipedia's EventStreams SSE) — rejected: drifts off the media-analytics narrative that matches the author's domain background (ADR-0006 context).