Question
Your team maintains a lambda architecture: a streaming layer computes approximate real-time metrics (engagement, revenue) and a separate nightly batch layer recomputes the authoritative numbers, with a serving layer merging both. The pain is doubled logic — every metric is implemented twice (streaming + batch), they drift, and a logic change means two PRs and two reconciliations. Leadership wants to move to a kappa-style single-codebase architecture. Design the migration and the target system, covering reprocessing/replay, correctness equivalence, and what you give up.
Clarify scale and constraints first. Propose a clean component breakdown, then go deep on the hard parts — data model, bottlenecks, consistency, failure modes — and name the trade-offs you are making.