Architectural Simplification of the Event Bus
To maintain a strict separation of concerns, the event bus has been simplified by removing the system signature and device-level routing logic. Its sole responsibilities are now restricted to ingesting events from database webhooks and external sources, buffering them in Redis, handling event migration, and piping event streams to clients for state reconciliation. Routing events to specific devices is no longer handled within the bus; instead, the system operates at the user level, delegating transport and device-specific routing to a separate layer. This architectural boundary keeps the event bus lightweight, focused purely on durability and event streaming.
Upgraded Event Migration and Classification
The event migration process has been upgraded to support precise, source-aware state synchronization. Previously, the migration job only recorded basic metrics like user IDs and event counts, forcing clients to execute generic, full-sync operations regardless of what actually changed. Under the updated design, the migration job performs a targeted fetch of full event payloads from Redis to extract structural metadata, including event types (such as bookmark updates or shared links) and external event sources. This richer metadata is then persisted during migration, enabling connected clients to perform granular, targeted updates rather than costly full re-synchronizations.
While fetching full event values introduces a minor additional Redis call during the expiration check, this trade-off deliberate: prioritizing architectural clarity and targeted sync capabilities over premature performance optimizations. Overall, these adjustments keep the system scalable, easy to reason about, and flexible enough to accommodate future event sources.
Top comments (0)