Learning Platform
Глоссарий Troubleshooting
Урок 02.01 · 15 мин
Начальный
System DesignData EngineeringArchitecture

System Design для Data Engineering

Почему DE SD ≠ Backend SD

Backend System Design фокусируется на request-response: как обработать HTTP-запрос от пользователя, масштабировать API, кэшировать ответы. Data Engineering System Design фокусируется на data flow: как данные попадают в систему, как трансформируются, где хранятся и как потребляются.

Backend SD vs Data Engineering SD

Backend System Design

User Request
API / Service
Response (мс)
Фокус: latency, throughput, availability

Data Engineering SD

Data Sources (множество)
Pipeline (batch/stream)
Consumers (часы → мс)
Фокус: reliability, freshness, quality, cost

Ключевые отличия

АспектBackend SDData Engineering SD
Основная модельRequest-ResponseData Flow (pipeline)
ЛатентностьМиллисекундыМинуты → часы (batch), секунды (stream)
Объём данныхKB per requestGB → TB per batch
Тип нагрузкиМного маленьких запросовМало больших batch jobs
Ключевая метрикаP99 latencyData freshness, SLA, quality
Failure mode500 error → retryPipeline failed → stale data
Cost driverCompute (серверы)Storage + Compute (часто storage доминирует)

6-Layer Framework для Data Systems

Любая data-система состоит из 6 слоёв:

6-Layer Data System Framework
Sources Layer
Processing Layer
Storage Layer
ML/AI Layer (optional)
Consumers Layer
Cross-cutting: Tools Layer
TIP

Как использовать этот framework

В каждом system design упражнении или на собеседовании проговаривайте все 6 слоёв. Не обязательно в порядке сверху-вниз — можно начать с consumers (что нужно бизнесу?) и идти вверх к sources. Но каждый слой должен быть затронут.

Что делает Data Engineer «System Designer»

Data Engineer принимает решения на каждом слое:

СлойРешения
SourcesКакие источники? Batch или CDC? Как валидировать на входе?
ProcessingSpark или Flink? Batch или stream? Как обрабатывать late data?
StorageWarehouse или Lakehouse? Какой table format? Как партиционировать?
ML/AIНужен ли feature store? Online или offline?
ConsumersSQL доступ? API? Pre-aggregated views?
ToolsAirflow или Dagster? Как мониторить? Как обеспечить quality?

Три главных вопроса DE System Design

Перед каждым проектом задайте себе:

1. Как данные приходят и как быстро нужна реакция?

Это определяет processing model:

  • Данные приходят раз в день → Batch processing (Spark, AWS Glue)
  • Данные приходят постоянно и нужны через минуты → Micro-batch (Spark Structured Streaming)
  • Данные нужны в секунды → Real-time streaming (Kafka + Flink)

2. Кто потребляет данные и для чего?

Это определяет storage и data model:

  • Аналитики пишут SQL-запросы → Data Warehouse с star schema
  • Data Scientists тренируют модели → Lakehouse с raw данными + feature store
  • Сервисы читают через API → Low-latency serving layer (Redis, RocksDB)

3. Сколько данных и какой бюджет?

Это определяет tool choice и architecture:

  • 10 GB/день, бюджет минимален → PostgreSQL + dbt + cron
  • 1 TB/день, средний бюджет → Lakehouse + Spark + Airflow
  • 100 TB/день, enterprise → Multi-engine (Spark + Flink + Trino) + Data Mesh
NOTE

Правило: «The best data systems aren’t the most complex — they’re the ones that are simple enough to maintain, fast enough to deliver, and flexible enough to grow.»

Не overengineer. Если PostgreSQL + dbt достаточно — используйте их. Spark не нужен для 10 GB/день.

Проверка знанийKnowledge check
ОтветAnswer

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 3. В чём ключевое отличие Data Engineering SD от Backend SD?

Закончили урок?

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

Войдите чтобы оценить урок

Прогресс модуля
0 из 5