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

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

Ad Click Event Aggregator

mid

Классическая задача: stream ingestion, dedupe, windowed aggregations, freshness SLA и billing accuracy.

Ad Click Event Aggregator - это core-компонент рекламной аналитики, где важно одновременно держать freshness, корректность биллинга и масштабируемость. На интервью этот кейс проверяет умение проектировать streaming-пайплайн с понятными контролями качества данных и прозрачным reconciliation.

Источник

Acing the System Design Interview

Глава 11: Design Ad Click Event Aggregator с фокусом на dedupe, windowing и replay.

Читать обзор

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

  • Google Ads / Meta Ads: realtime дашборды + финансовая сверка метрик.
  • DSP/RTB платформы: high-throughput ingest кликов и аукционных событий.
  • Affiliate сети: дедупликация conversion-событий и anti-fraud проверки.
  • In-house growth analytics: единый event pipeline для product + marketing команд.

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

Core API / Data Contracts

  • POST /events - ingest click/impression/conversion
  • GET /metrics - агрегаты по окнам и фильтрам
  • POST /reconcile - запуск backfill/recompute
  • GET /quality - lag, duplicate rate, completeness

Product/Platform функции

  • Deduplication и idempotent ingest для billing корректности
  • Window aggregation: minute/hour/day + поддержка late events
  • Dual-path: realtime dashboard и batch reconciliation
  • Replay/backfill по диапазонам времени из immutable raw слоя

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

ТребованиеЦелевое значениеОбоснование
Ingest throughputПиково до 1M evt/sBurst-нагрузка во время крупных кампаний
Data freshness (p95)< 30 секОперативный продуктовый дашборд
Billing accuracy drift< 0.1%Финансовая корректность и аудит
Availability99.95%Критичный аналитический контур для ad бизнеса
Replay RTO< 30 минБыстрый recovery после сбоя или data correction

High-Level Architecture

Теория

Streaming Data

Windowing, watermarks, late events, reprocessing и баланс realtime/batch контуров.

Читать обзор

High-Level Architecture

stream ingest + window aggregation + reconciliation

Схема показывает ingest-поток, агрегацию окон и контур reconciliation/backfill для финансовой корректности.

Event Sources
SDK/trackers
Collector API
validate + enrich
Event Bus
Kafka/PubSub
Dedupe/Normalize
idempotency key
Window Aggregator
minute/hour/day
Hot Aggregate Store
ClickHouse/Pinot
Dashboard API
query/filters
Raw Event Lake
immutable log
Batch Backfill Job
historical replay
Reconciliation Job
online vs billing

Архитектура разделяет ingest, realtime serving и reliability контур с batch backfill/reconciliation. Это даёт предсказуемый SLA для дашбордов и контролируемую финансовую корректность.

Write/Read Paths

Write/Read Paths

Как события записываются в агрегаты и как дашборд читает метрики под нагрузкой.

Write path: ingest принимает события, проводит dedupe/windowing и обновляет serving-агрегаты для near-realtime аналитики.

Event Sources

SDK / trackers / pixels

Клики, показы и конверсии отправляются в ingest endpoint.

Collector API

validate + enrich

Валидация схемы, обогащение и генерация idempotency key.

Stream + Dedupe

Kafka/PubSub + state

Поток обрабатывается с дедупликацией и контролем порядка/late events.

Window Aggregator

minute / hour / day

Оконные агрегаты вычисляются и пишутся в serving-слой.

Serving Store

ClickHouse/Pinot

Хранение агрегатов для быстрых аналитических запросов.

Write path checkpoints

  • Идемпотентность на ingress защищает от double counting в биллинге.
  • Window aggregation считает minute/hour/day витрины и учитывает late events.
  • Raw immutable слой остаётся источником истины для replay и reconciliation.

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

Глубже

Event-Driven Architecture

Событийные контракты, replay-safe обработка и контролируемая эволюция pipeline.

Читать обзор

Dual-path truth model

Для устойчивой аналитики обычно используются два независимых контура:

online_metrics  = stream_aggregation(raw_events)
billing_metrics = batch_reconcile(raw_events)
  • Online path - минимальная задержка для дашбордов
  • Batch path - максимальная корректность для финансовых отчётов
  • Reconcile - явная фиксация расхождений и корректирующие записи

Контрольные контуры

  • Idempotency: event_id и dedupe store защищают от double count.
  • Watermarks: late events обрабатываются в заданном grace window.
  • Schema governance: строгий контракт и версионирование событий.
  • Replay/backfill: raw immutable layer позволяет безопасный пересчёт истории.

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

  • Double counting: отсутствие строгой дедупликации ломает биллинг и доверие к метрикам.
  • Watermark misconfig: некорректная обработка late events искажаeт оконные агрегаты.
  • Unbounded lag: при burst-нагрузке дашборд теряет актуальность без backpressure.
  • Schema drift: неуправляемая эволюция событий приводит к silent data corruption.
  • No lineage: невозможность объяснить происхождение метрики при финансовом аудите.

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

  • Как именно обеспечивается дедупликация и почему выбран такой idempotency key.
  • Где проходит граница между realtime-аналитикой и финансово-значимой отчётностью.
  • Как система обрабатывает late events, replay и массовые пересчёты истории.
  • Какие SLO мониторятся: ingest lag, freshness, duplicate rate, reconcile drift.

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

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

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

System Design Space

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