System Design Space
Граф знанийНастройки

Обновлено: 2 марта 2026 г. в 20:10

Top Products Dashboard

mid

Классическая задача: аналитическая витрина, pre-aggregations, consistency метрик и data freshness.

Top Products Dashboard - это кейс про построение аналитического serving слоя, где нужно одновременно держать fast query latency, консистентность KPI и управляемую стоимость вычислений. На интервью проверяют, как вы разделяете realtime и batch контуры и как объясняете freshness метрик бизнесу.

Источник

Acing the System Design Interview

Глава 17: Design Top Products Dashboard с фокусом на pre-aggregations и reconciliation.

Читать обзор

Где этот паттерн встречается

  • E-commerce BI: топ товаров по выручке/марже/конверсии в near-realtime.
  • Маркетплейс аналитика: рейтинг SKU по регионам, каналам и promo-кампаниям.
  • Executive dashboards: единая витрина KPI с drill-down в операционные контуры.
  • Growth-команды: быстрая проверка эффекта кампаний и ассортиментных решений.

Функциональные требования

Core Dashboard API

  • GET /top-products - top-N по выбранной метрике
  • GET /kpi-breakdown - drill-down по измерениям
  • GET /freshness - watermark и version метрик
  • POST /reconcile - пересчёт/коррекция диапазона

Product/Analytics функции

  • Фильтры по периоду, региону, категории, каналу продаж
  • Поддержка нескольких формул ранжирования (revenue/margin/conversion)
  • Role-based доступ к витринам и export policy для чувствительных отчётов
  • Explainability для KPI: источник, версия формулы, время последнего пересчёта

Нефункциональные требования

ТребованиеЦелевое значениеОбоснование
Dashboard response (p95)< 300msИнтерактивная аналитика для бизнеса без задержек
Data freshness SLA1-5 минутОперативные решения по ассортименту и ценам
Metric drift vs finance< 0.2%Согласованность BI и финансовых отчётов
Availability99.9%Критичный контур для exec/product команд
Backfill impactБез деградации online pathПересчёты не должны ломать runtime SLA

High-Level Architecture

Теория

ETL/ELT архитектура

Слои ingestion, трансформаций и serving витрин для аналитических платформ.

Читать обзор

High-Level Architecture

events -> aggregations -> serving -> reconciliation

Схема разделяет ingest pipeline, query serving path и контур reconciliation/backfill.

Data Sources
orders/clicks/events
Ingest API
contracts + validation
Stream Bus
Kafka/PubSub
Aggregation Jobs
window/materialized views
Serving Store
OLAP aggregates
Query Cache
hot filters
Dashboard API
query endpoint
Query Planner
cost guardrails
Raw Lake
immutable source
Warehouse
historical truth
Reconcile Job
drift + backfill

Архитектура отделяет ingest/aggregation контур от query-serving path и отдельного reconcile/backfill loop, чтобы одновременно держать latency, freshness и консистентность KPI.

Write/Read Paths

Write/Read Paths

Как метрики пишутся в serving-контур и как dashboard читает агрегаты при высокой нагрузке.

Write path: события проходят ingestion и stream aggregation, затем записываются в serving-таблицы и метаданные freshness/version.

Events Ingest

orders/clicks stream

Продуктовые события поступают через ingestion API и валидируются по контрактам.

Stream Bus

partitioned log

События публикуются в stream bus и распределяются по aggregation jobs.

Aggregation Jobs

windowed compute

Строятся window/materialized агрегаты по ключевым dimension combinations.

Serving Store

OLAP views

Top-N и KPI сохраняются в serving таблицах с индексами под dashboard фильтры.

Freshness Metadata

watermark/version

Записываются watermark, formula_version и source метки для explainability.

Write path checkpoints

  • Schema contracts проверяются на входе, чтобы не загрязнять агрегаты.
  • Агрегации должны быть идемпотентными для safe retry при сбоях stream jobs.
  • Watermark и formula_version пишутся вместе с KPI, иначе freshness и explainability теряются.

Консистентность метрик и отказоустойчивость

Глубже

ClickHouse обзор

Материализованные представления, columnar storage и оптимизация аналитических запросов.

Читать обзор

Dual-truth модель

Для устойчивой BI-витрины обычно разводят online и reconciliation контуры:

dashboard_metrics = stream_aggregates(events)
finance_metrics   = batch_recompute(raw_events)
  • Stream path - быстрый отклик и near-realtime freshness
  • Batch path - точность и контроль исторических корректировок
  • Reconcile - фиксация и объяснение расхождений между контурами

Операционные контуры

  • Schema contracts: защита от "тихой" поломки метрик при изменении событий.
  • Query guardrails: лимиты/timeout для дорогих ad-hoc запросов.
  • Freshness watermark: обязательный сигнал актуальности на UI уровне.
  • Backfill throttling: пересчёт истории без saturation serving кластера.

Риски и типовые ошибки

  • OLTP abuse: попытка строить BI напрямую на production транзакционной БД.
  • Hidden freshness: пользователь видит KPI, но не понимает, насколько они устарели.
  • Formula drift: изменение расчётов без версии ломает сравнимость метрик во времени.
  • Expensive ad-hoc: отсутствие query governance взрывает стоимость инфраструктуры.
  • No reconcile path: расхождения с finance не диагностируются и не исправляются.

Что важно проговорить на интервью

  • Где проходит граница между realtime dashboard и финансово-значимой отчётностью.
  • Как устроена версия формул KPI и как обеспечивается воспроизводимость расчётов.
  • Какие SLO мониторятся: response latency, freshness lag, drift, query cost.
  • Как pipeline ведёт себя при late events, schema change и массовом backfill.

Связанные главы

Связанные материалы

Чтобы отмечать прохождение, включи трекинг в Настройки

System Design Space

© 2026 Александр Поломодов