System Design FAQ: Top Questions
66. How would you design a Real-Time Analytics Dashboard?
A Real-Time Analytics Dashboard displays up-to-date insights from streaming data (e.g., user events, metrics, logs). It is widely used in marketing, e-commerce, monitoring, and operational tools.
๐ Functional Requirements
- Ingest high-velocity event streams (clicks, conversions, API hits)
- Pre-aggregate metrics by time window and dimension
- Support filtering by time, user cohort, device, geo
- Real-time visualization with low-latency updates
๐ฆ Non-Functional Requirements
- Sub-second latency for recent data
- Durability and late-arriving event handling
- Backpressure control and partitioning
๐๏ธ Architecture Overview
- Event Producer: Frontend or API emits events
- Streaming Broker: Kafka or Kinesis buffers data
- Stream Processor: Flink, Spark Streaming, or Kafka Streams
- Aggregation Store: Redis, ClickHouse, Druid, or Pinot
- Dashboard: React + WebSocket or polling API
๐งช Kafka + Flink Example
// Flink: Aggregate clicks by minute
DataStream events = ...
events
.keyBy(event -> event.userId)
.window(TumblingEventTimeWindows.of(Time.minutes(1)))
.aggregate(new CountAggregator())
.addSink(new RedisSink<>(...));
๐ ClickHouse Table Schema
CREATE TABLE pageviews (
timestamp DateTime,
user_id String,
country String,
page String
) ENGINE = MergeTree()
PARTITION BY toDate(timestamp)
ORDER BY (timestamp, user_id);
๐ Real-Time WebSocket Feed (Node.js)
const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 8080 });
setInterval(() => {
const update = { metric: "visits", count: Math.random() * 100 };
wss.clients.forEach(client => client.send(JSON.stringify(update)));
}, 1000);
๐ Dashboard Features
- Time filters (last 5m, 1h, 24h)
- Custom charts (line, bar, heatmaps)
- Segment filters (device, campaign, referrer)
๐งฐ Tools & Stack
- Stream Broker: Kafka, Pulsar, Kinesis
- Processing: Flink, Kafka Streams, Materialize
- Storage: ClickHouse, Pinot, RedisTimeSeries
- Frontend: React, D3.js, Highcharts
๐ Final Insight
Real-time dashboards combine streaming pipelines with time-series storage and reactive UIs. Minimize chart latency using push mechanisms like WebSockets and roll up metrics at multiple granularities for responsive querying.