Skip to content

Repository files navigation

О роадмапе

Этот роадмап — конспект моих подходов к обучению Data Engineering.
Он подойдёт тем, кто хочет:

  • системно войти в профессию с нуля или близкого к нулю уровня;
  • закрыть пробелы в базе (SQL, Git, Python, DWH, Airflow, Greenplum, Kafka, ClickHouse);
  • подготовиться к собеседованиям и первым рабочим задачам.

Роадмап можно проходить самостоятельно или вместе со мной в формате менторства.
Если хотите идти с поддержкой ментора — напишите в Telegram: @dementev_dev.

Оглавление

Рекомендуемый способ использования:

  • двигаться по разделам последовательно, не перепрыгивая через базу;
  • выполнять практику и домашки, а не только смотреть материалы;
  • возвращаться к разделам по мере появления реальных задач.

Основная программа включает две курсовые: сначала хранилище на Greenplum, затем Clickstream на ClickHouse. Streaming и ClickHouse входят в обязательную часть подготовки к трудоустройству. Lakehouse и dbt можно изучать после нее, под задачи и интересующие вакансии.


Основные знания

[к оглавлению]

Git и базовые инструменты

Linux и терминал

Командная строка — рабочее место дата-инженера: docker, psql, git, подключение к серверам живут именно там. Отдельная практика не нужна — все стенды этого роадмапа консольные, команды закрепятся сами. На Windows поставьте WSL — полноценный Linux внутри Windows.

База по Git

Что такое контроль версий, когда используется, ПОЧЕМУ и как мы в обучении будем использовать. Как создать репозиторий на GitHub, сохранять в нем изменения.

Основы Markdown

Домашки по остальным темам тренируемся делать в Git, там же пишем документацию.

Когда блок Git и базовые инструменты считаем пройденным:

  • ориентируетесь в терминале: перемещаетесь по каталогам и находите нужное в логах (grep, tail, less);
  • понимаете права файлов (rwx, chmod) и знаете, как подключиться к серверу по ssh;
  • вы уверенно создаёте репозиторий, коммитите изменения и отправляете их на GitHub;
  • имеете представление о работе с ветками: создание, переключение, что такое merge/PR и разруливание простых конфликтов;
  • оформляете базовую документацию в Markdown (README, заголовки, списки, ссылки, кодовые блоки).

Базы данных: SQL и моделирование данных

SQL и моделирование данных специально идут рядом: сначала учимся уверенно извлекать данные запросами, затем — понимать и проектировать структуру данных, чтобы ETL/витрины были осмысленными.

База по SQL

Книга: PostgreSQL. Основы языка SQL - Глава 1 "Введение в базы данных и SQL" + ДЗ

Бесплатный тренажер: Интерактивный тренажер по SQL – Stepik
Целевой уровень знания SQL - Live кодинг на собесе. Проверяем на первом мок-интервью

CTE

Для дальнейшей тренировки и поддержания уровня можно использовать Database - LeetCode. Хорошая подборка задачек: SQL 50 - Study Plan - LeetCode

Повышение знаний SQL

Перед DEV1: запустите учебную базу. Для практики рекомендую стенд PostgreSQL с базой bookings. В README стенда описаны запуск в Docker, подключение через psql и DBeaver. Это наше первое знакомство с Docker: пока достаточно научиться запускать и останавливать стенд, смотреть его статус и подключаться к базе. Подробный блок Docker будет дальше.

Смотрим курс от Postgres Pro DEV1 Темы - от "Введение" до "SQL" включительно, "Управление доступом", "Резервное копирование". Для лучшего усваивания материала проделываем все примеры и домашние задания из конспектов лекций.
С темой "PL/pgSQL" можно ознакомиться обзорно.

Для дальнейшего закрепления материала - читаем книгу PostgreSQL. Основы языка SQL

  • Глава 8 - Индексы + ДЗ
  • Глава 9 - Транзакции
  • Глава 10 - Повышение производительности + ДЗ

Вопросы оптимизации запросов хорошо описаны в курсе QPT от Postgres Pro. Полученные навыки применимы для работы в том числе с Greenplum, и частично, другими БД. На странице курса выбирайте материалы и видеозаписи для PostgreSQL 16.

Моделирование данных

Понимание того, как устроены данные и зачем они нужны, — ключ к качественным ETL-процессам.
Мы кратко разбираем:

  • Основные подходы: нормализованные (3NF) vs денормализованные (звезда, снежинка)
  • Что такое staging, marts, слои raw / clean / business
  • Как проектировать таблицы под конкретные сценарии использования

Цель — не стать архитектором, а уметь читать и объяснять структуру данных, чтобы писать осмысленные запросы и трансформации.

Материалы (включая демо DWH-модель из этого репозитория):

Когда блок «Базы данных» считаем пройденным:

  • вы уверенно пишете запросы с JOIN, агрегатами, подзапросами и CTE;
  • можете подробно объяснить план запроса в Postgres, понимаете где планировщик отработал корректно, а где - есть возможность улучшить;
  • можете объяснить простую модель данных (3NF/звезда) и прочитать схему DWH;
  • решаете типовые задачи уровня SQL live-coding без долгих пауз.

Python

Если совсем не знакомы с Python, начинаем с курса "Поколение Python": курс для начинающих - Stepik.

Перед курсом для продвинутых подготовьте рабочую среду. Она пригодится для экспериментов с кодом и домашних заданий.

Создайте venv, установите в него JupyterLab и запустите из этого же окружения. В новом ноутбуке выполните несколько ячеек, сохраните .ipynb, перезапустите ядро и выполните все ячейки по порядку. В Git сохраняйте ноутбуки и скрипты, а каталог .venv/ добавьте в .gitignore.

Теперь продолжаем изучать Python:

Полезно, но дороговато и не обязательно: хорошее комбо SQL + Python — "Поколение Python": профи + ООП + SQL – Stepik

Цель — уверенно решать простые задачи на Python в формате live-coding; дальше эти навыки пригодятся для создания DAG Airflow.

Когда блок Python считаем пройденным:

  • создаете venv, устанавливаете в него пакеты и запускаете JupyterLab; можете повторить вычисления в ноутбуке после перезапуска ядра;
  • вы без подсказок пишете небольшие скрипты с циклами, функциями, обработкой ошибок и работой с коллекциями;
  • умеете читать и модифицировать чужой код, в том числе с использованием pandas и DataFrame;
  • уверенно проходите простой live-coding по Python для DE: прочитать CSV/JSON, отфильтровать, сгруппировать данные и посчитать агрегаты.
  • можете отвечать как на простые вопросы собеседований (циклы, списки, словари), так и продвинутые (итераторы, декораторы, базовые понятия ООП);
  • на примере со списком объясняете разницу между объектом и ссылкой на него, почему del одного имени не обязательно уничтожает объект и зачем CPython нужен сборщик циклического мусора.

Методологии разработки

Зачем это разработчику?

  1. Работа в команде. Вам нужно понимать «правила игры». Почему задачи двигаются именно так? Зачем мы встречаемся каждое утро на 15 минут? Почему нельзя просто взять задачу из середины списка?
  2. Собеседование и «легенда». Когда вас спросят: «Как строилась работа в вашей прошлой команде?», вы должны ответить грамотно. Использование правильной терминологии (спринты, груминг, ретроспектива, WIP-лимиты) — это маркер профессионализма. Это показывает, что вы не просто писали код в вакууме, а были частью налаженного процесса.

1. Основы и сравнение подходов

Для начала нужно понять глобальную разницу между жестким планированием (Waterfall) и гибкой разработкой (Agile).

2. Agile: Философия гибкости

Agile — это не метод, а философия. Scrum и Kanban — это инструменты этой философии.

3. Scrum (Скрам)

Используется, когда мы создаем продукт и работаем спринтами (циклами). Часто встречается в продуктовых командах, где DE работает в связке с Backend/Frontend.

4. Kanban (Канбан)

Используется для управления потоком задач и поддержки. Наиболее популярен в Data Engineering и DevOps, так как данные поступают непрерывно, и их сложно «запереть» в двухнедельный спринт.

Практика: Как это выглядит в жизни

Теория — это хорошо, но на работе вы увидите конкретный интерфейс (Jira или Yandex Tracker). Важно понимать, куда нажимать и как двигать задачи.

1. Jira (Мировой стандарт)

Самый популярный инструмент. Скорее всего, вы столкнетесь именно с ним.

2. Yandex Tracker (Российский стандарт)

Активно внедряется в крупных компаниях РФ. Логика та же, но интерфейс другой.

💡 Совет: Не бойтесь кнопок. Главное правило любого трекера: «Взял задачу в работу — переведи статус в In Progress». Это сигнал команде, что вы заняты и вас лучше не отвлекать.

Когда блок «Методологии разработки» считаем пройденным:

  • вы в общих чертах можете объяснить разницу Waterfall vs Agile и Scrum vs Kanban;
  • знаете основные мероприятия Scrum (planning / daily / review / retro) и что от вас ожидается на каждом;
  • умеете работать с трекером (Jira/Tracker): создать/уточнить задачу, взять в работу, корректно двигать статусы и оставлять понятные комментарии;
  • умеете своевременно сообщать о блокерах и уточнять требования, если задача «не бьётся» или в ней не хватает входных данных.

Технические навыки

Продвинутый Git

Целевой уровень знания - понимание процесса GitFlow. Как создать ветку, влить изменения в другие ветки. Понимание, зачем. На собесах обычно не спрашивают, но нужно в работе.

Docker

Основное предназначение для нас - учебные стенды, где мы разбираем и тренируемся с разными технологиями. На работе - иногда пригождается. На собесах спрашивают редко.

Запись встреч

OBS Studio

Когда блок технических навыков считаем пройденным:

  • вы понимаете базовый GitFlow: как организована работа с ветками в команде и как ваши коммиты попадают в прод;
  • используете Docker для учебных стендов: запускаете контейнеры, смотрите логи и при необходимости перезапускаете сервисы;
  • при необходимости умеете настроить запись экрана/созвонов, чтобы сохранять материалы обучения.

Практика и инструменты

[к оглавлению]

Airflow

Apache Airflow — инструмент для оркестрации ETL-процессов.

Мы используем его для:

  • планирования задач,
  • отслеживания зависимостей между шагами,
  • визуализации статуса выполнения.

Материалы:

Задания выполняем параллельно с чтением учебника. Начинаем с простых DAG и SQL, затем обрабатываем файлы, загружаем CSV в PostgreSQL и добавляем проверки качества. Дальше расширяем ETL, разбираем ветвление, повторные попытки и логирование. Здесь Python и SQL впервые работают вместе в пайплайне, которым управляет Airflow.

Когда блок Airflow считаем пройденным:

  • вы можете объяснить, что такое DAG, задачи, операторы и сенсоры, и как между ними задаются зависимости;
  • на базе учебного стенда подготавливаете, отлаживаете и запускаете свои DAG'и с расписанием и несколькими шагами (например, загрузка данных и последующие трансформации);
  • расширяете загрузку CSV в PostgreSQL: меняете генерацию данных, схему таблицы и загрузку новой колонки;
  • добавляете свою проверку качества и убеждаетесь, что она обнаруживает подготовленную ошибку в данных;
  • уверенно смотрите логи, находите место падения и понимаете, как перезапустить задачу.

Greenplum

Разбираем, чем Greenplum отличается от PostgreSQL и зачем нужны MPP-хранилища.

Фундаментальная теория

Прежде чем нажимать кнопки, нужно понять "физику" больших данных. Почему обычный Postgres начинает тормозить?

  • Мартин Клеппман, "Высоконагруженные приложения":
    • Глава 1. Надежность, масштабируемость. (Разбираемся, чем вертикальное масштабирование отличается от горизонтального).
    • Глава 3 (только конец главы). Читаем разделы:
      • «Обработка транзакций или аналитика?» (OLTP or OLAP?) — ключевое различие нагрузок.
      • «Хранение по столбцам» — почему аналитика требует другого способа записи данных на диск.
      • Зачем: Это объясняет, почему Greenplum устроен именно так. Без этого вы будете пытаться работать с ним как с обычным Postgres.

Знакомство с Greenplum

Теперь, понимая теорию, смотрим, как это реализовано в конкретном инструменте.

Курс Yandex по Greenplum — основной учебный курс, рекомендуется пройти целиком:

  • Бесплатный курс Yandex Cloud по Greenplum
  • Практику по курсу удобно делать на стенде airflow-dwh-gp-lab — make up поднимает рабочий Greenplum с PXF, не нужен облачный кластер.
  • Стенд покрывает основные темы курса: типы таблиц (heap / appendonly), политики дистрибуции, сжатие, PXF, анализ планов выполнения (EXPLAIN).
  • Единственное ограничение: cloud-специфичные темы (тема 2 курса — развёртывание в Yandex Cloud) на локальном стенде не покрыты.

Когда блок Greenplum считаем пройденным:

  • вы понимаете, как данные распределяются по сегментам, что такое skew и как его увидеть;
  • на базе стенда airflow-dwh-gp-lab можете загружать и выгружать данные в Greenplum, выполнять запросы и разбирать планы выполнения (EXPLAIN);
  • можете объяснить, в чём практическая разница между MPP-хранилищем и одиночным Postgres на уровне типичных задач DE и собеседований.

Курсовая работа

Первая курсовая собирает изученное в один проект: загрузку данных из PostgreSQL, слои хранилища в Greenplum и управление обработкой через Airflow.

Курсовая выполняется на том же стенде airflow-dwh-gp-lab, который вы уже использовали для практики по Greenplum.

Что внутри:

  • Стенд содержит DWH с реализованным эталонным срезом (STG → ODS → DDS → DM) — это ваш образец для подражания.
  • Задача — довести DWH до полного, реализовав недостающие загрузки по аналогии с эталоном.
  • Есть готовый план от аналитика (ТЗ с маппингами и бизнес-правилами) — не нужно придумывать, что делать.
  • Встроенная автоматическая проверка реализации поможет убедиться в корректности до проверки ментором.
  • Ветка main — рабочая (с заготовками для реализации), ветка solution — эталон для сверки.

Когда блок курсовой работы считаем пройденным:

  • все загрузки реализованы, DWH заполняется полностью (STG → ODS → DDS → DM);
  • автоматическая проверка (валидационный DAG) проходит без ошибок;
  • вы можете на собеседовании за 5–10 минут рассказать архитектуру проекта, его цели и показать ключевые части кода.

После этой работы переходим к потокам событий и ClickHouse. Они понадобятся для большой курсовой Clickstream.

Streaming (NiFi + Kafka)

В первой курсовой мы загружали данные из базы. Теперь разберем прием потока событий: как доставить их в хранилище и продолжить чтение после остановки обработчика. NiFi помогает собрать поток обработки визуально, Kafka хранит события в распределенном журнале и позволяет потребителям читать их независимо.

Материалы:

Практика — на стенде nifi-kafka-postgres-lab (Docker Compose с NiFi, Kafka и Postgres):

  • настраиваем в NiFi простой генератор данных и поток в Postgres;
  • строим поток NiFi → Kafka → NiFi → Postgres.

Перед большой курсовой нужно уметь:

  • объяснить связь между топиком, партицией, consumer group и offset;
  • отправить сообщения в Kafka и прочитать их потребителем;
  • показать на учебном потоке, откуда продолжится чтение после перезапуска, и объяснить, почему при повторной доставке могут появиться дубли.

В курсовой Clickstream события и заказы поступают через Kafka в ClickHouse. Вернемся к этим вопросам, когда будем разбирать прием данных и их обработку в хранилище.

ClickHouse

ClickHouse используем для аналитики по событиям и заказам. Здесь нужно разобраться, как хранить данные, выбирать ключ сортировки и строить витрины. Затем применим это в большой курсовой.

Материалы:

Практика:

Упражнения по самой СУБД можно выполнять локально на clickhouse-learning-cluster: четыре узла ClickHouse в Docker Compose, репликация, шардинг и HAProxy. Задания по облачной инфраструктуре требуют Yandex Cloud и оплаты ресурсов.

Когда готовы переходить к курсовой:

  • создаете таблицы семейства MergeTree и объясняете выбор ORDER BY и PARTITION BY;
  • различаете шардирование и репликацию, понимаете роль таблиц Distributed;
  • загружаете данные, пишете аналитические запросы и можете объяснить, как устройство таблицы влияет на чтение данных.

Большая курсовая: Clickstream

На стенде clickstream-data-platform работаем с хранилищем интернет-магазина. Генератор создает события посетителей и заказы, Kafka доставляет их в ClickHouse. Данные проходят слои STG, ODS, DDS и DM; Airflow управляет обработкой, Superset показывает отчеты.

Часть хранилища уже работает. В заданиях вы строите свои витрины, разбираете готовые загрузки и меняете их, сверяя результат с исходными данными. Проверки качества и мониторинг нужны здесь для конкретных задач: заметить потери и дубли, найти причину расхождения, проверить результат своей правки.

Начните с запуска по README репозитория, затем прочитайте путеводитель по стенду и переходите к учебным заданиям. В основной программе семь ступеней: пять витрин DM, свой график в Superset, самостоятельная нарезка сессий, изменение расчета сессий в конвейере, проверки и обработка заказов, разбор сырых событий, мониторинг. Факультативные расследования можно взять после основной программы.

Когда большую курсовую считаем пройденной:

  • выполнены семь ступеней основной программы и проверки из заданий;
  • пять учебных витрин проходят homework_check, в Superset построен свой график;
  • можете проследить путь события от Kafka до отчета, объяснить свои изменения и показать, как проверяли их корректность.

Карьера и менторство

[к оглавлению]

Менторство по этому роадмапу

Если вы нашли этот роадмап в интернете и хотите пройти его не в одиночку, а с поддержкой ментора, можно присоединиться ко мне.

Что даёт менторство:

  • структурный план прохождения роадмапа под вашу ситуацию;
  • разбор вопросов по SQL / DWH / Airflow и другим темам из этого документа;
  • разбор домашних заданий и код-ревью;
  • помощь с подготовкой к собеседованиям (резюме, мок-интервью).

Как записаться

Просто напишите мне в Telegram: @dementev_dev
со словами «Хочу пройти роадмап с ментором» — дальше всё обсудим.

Подготовка к собеседованиям

Цель блока — сформировать «опыт от 2 лет» и уметь корректно его показать в резюме и на собеседовании.

Помощь в подготовке резюме

Поиск работы и собеседования

Помощь с прохождением испытательного срока

Когда блок подготовки к собеседованиям считаем пройденным:

  • у вас есть актуальное резюме под DE с понятными примерами проектов вместо «пустого» опыта;
  • вы умеете искать и отбирать вакансии на HH и Habr Карьера, адаптируя отклики под конкретную позицию;
  • вы прошли хотя бы пару мок-собеседований, получили обратную связь и по результатам доработали резюме и стратегию поиска.

Расширенные навыки

После двух курсовых можно расширить стек: попробовать обработку файлов в Lakehouse и управление SQL-моделями через dbt. Выбирайте тему под задачи, с которыми хотите работать.

[к оглавлению]

Lakehouse (Spark, Iceberg, Trino)

Lakehouse — архитектурный подход, который соединяет гибкость Data Lake с гарантиями классического DWH.

В классическом DWH данные и вычисления живут внутри одной СУБД, в её закрытом формате. В Lakehouse они разделены. Данные лежат файлами в дешёвом хранилище (обычно объектном, вроде S3). Открытый табличный формат (Iceberg, Delta, Hudi) добавляет поверх файлов привычные по СУБД вещи: схемы, транзакции, историю изменений. А вычислительные движки (Spark, Trino, Flink и другие) подключаются к данным снаружи — хоть несколько разных к одним и тем же таблицам.

Роадмап фокусируется на классическом DWH-стеке, поэтому цель здесь — знакомство, но с настоящей практикой: стенд ниже собирает один из типовых наборов этого конструктора.

Материалы:

Практика — курс «Lakehouse без магии» на стенде mini-lakehouse-lab (Spark + Iceberg + Trino + MinIO, всё локально в Docker, без облаков и регистраций):

  • 8 модулей на ~12–15 часов самостоятельной работы; в каждом — объяснение, демонстрация, задание и checkpoint;
  • пайплайн raw → bronze → silver на реальном датасете NYC Taxi;
  • одна таблица из двух движков: запись через Spark, чтение через Trino — и почему это работает без копирования данных;
  • schema evolution, time travel и обслуживание таблиц (compaction, expire_snapshots) — с параллелями к знакомым VACUUM/REORGANIZE из мира Postgres/Greenplum.

Глубже про Iceberg (опционально, лучше после практики на стенде):

dbt

dbt (data build tool) — инструмент для трансформации данных в хранилище.

Мы рассматриваем его как альтернативу «ручному» написанию сложных CTE и для понимания современного подхода к моделированию данных как кода.

Материалы:

Практика:

  • Клонировать jaffle-shop, установить dbt-duckdb, прогнать dbt build, dbt test, dbt docs generate && dbt docs serve — этого достаточно, чтобы увидеть весь цикл.

Когда блок расширенных навыков считаем пройденным:

Оценивайте выбранную тему по результату практики:

  • для Lakehouse можете записать таблицу через Spark, прочитать ее через Trino и объяснить роль Iceberg, каталога и объектного хранилища;
  • для dbt можете изменить SQL-модель, выполнить сборку и тесты, посмотреть зависимости в документации проекта.

Софт скиллы

[к оглавлению]

- Все ветви дохода в IT / Полный гайд по деньгам - Гайд как писать отзывы
- Гайд по Антистрессу


Дополнительные материалы

[к оглавлению]

Записи ОМ

About

План обучения - Data Engineering с нуля до middle

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages