Курс — 21 модуль, ~90 часов чтения и lab-практики. Он построен слоями: от архитектуры процессов (что такое JM/TM и как они общаются) через runtime-механики (network, memory, state) и протоколы (checkpoint, watermarks) к специализированным фичам (Calcite, ForStDB, adaptive scheduling) и production-практикам. Capstone в конце — реальный проект production-grade Flink-платформы.
Курс не предполагает линейного чтения “от модуля 1 до модуля 21”. Многие модули самодостаточны и могут быть прочитаны в порядке практической необходимости. Но фундамент (модули 02-08) лучше идти линейно — каждый следующий опирается на предыдущий.
Что такое stream processing: концепции и моделиКарта 21 модуля
Раскладка по фазам
Phase 1: Введение (модули 00-01)
Два первых модуля — это setup. Если вы уже знаете Flink и хотите быстрее, можно прочитать только текущий урок и сразу прыгнуть в модуль 02. Но рекомендую не пропускать модуль 01 (Философия Flink) — он даёт mental model “stream first”, без которой многие архитектурные решения Flink (например, почему batch — это bounded stream) выглядят странными.
Phase 2: Фундамент (модули 02-08)
Это — обязательная последовательность для всех. Каждый модуль строится на предыдущем:
- Архитектура (02) объясняет, какие процессы у Flink и как они общаются. Без этого никакая дальнейшая дискуссия про checkpoint или backpressure не имеет смысла.
- Network (03) — как байты передаются между Task-ами. Это база для понимания backpressure и checkpoint alignment.
- Memory (04) — как Flink режет TM heap, что такое managed memory, почему OOM в Flink часто не выглядит как обычный Java OOM.
- State backends (05) — как state хранится. Если вы не понимаете LSM-tree и RocksDB compaction, вы не сможете тюнить state-heavy job-ы.
- Checkpoint (06) — алгоритм и его реализация. Самый сложный модуль фундамента.
- Savepoints (07) — практическое применение state: миграция, schema evolution, State Processor API.
- Watermarks (08) — event-time механика. Без знания нюансов watermark holders и idleness detection у вас будут регулярные production-инциденты с “потерянными” окнами.
Phase 3: SQL слой (модуль 09)
Часть инженеров с Flink не работают на DataStream API, а живут в SQL мире. Если вы — один из них, обязательно читайте модуль 09. Calcite — отдельная экосистема, и без понимания, как Calcite планирует ваш SELECT, тюнить SQL job-ы невозможно.
Phase 4: Новое в Flink 2.x (модули 10-14)
Это — самая динамичная часть курса. Disaggregated state (10) — главное архитектурное изменение Flink 2.0+. Adaptive scheduling (11) стал default-ом в 2.0. Exactly-once (12) — это про 2PC protocol, который понятен только в контексте transactional Kafka. Source/Sink V2 (13) — современный connector API, к которому все мигрировали в 2.x. Lakehouse (14) — это про Paimon и Fluss, два проекта, которые меняют ландшафт streaming-data.
Phase 5: Специальные темы (модули 15-18)
Эти модули можно читать в любом порядке, в зависимости от ваших задач:
- CEP (15) — если у вас patterns/anomaly detection workloads.
- AI (16) — если интегрируете LLM/ML в streaming pipeline. Самая свежая тема — большая часть фич появилась в 2.1/2.2.
- Сериализация (17) — если вы боретесь с производительностью или schema evolution.
- PyFlink (18) — если вы пишете на Python.
Phase 6: Production и Capstone (модули 19-21)
Performance (19) — это про инструменты диагностики: flame graphs, async-profiler, метрики, dashboards. Multi-region DR (20) — про disaster recovery в реальных production-настройках. Capstone (21) — это финальный проект, где вы собираете всё вместе: K8s Operator, CI/CD, secrets, multi-tenancy.
Killer-модули
В курсе есть четыре модуля экстра-глубины, без которых невозможно ни тюнить, ни дебажить production:
Эти четыре модуля в сумме — около 30% курса по объёму, но дают, вероятно, 60% долгосрочного value.
Рекомендуемые learning paths
В зависимости от вашей задачи, рекомендую разные подмножества курса.
Path 1: Production debugging (быстрый старт)
Если вам нужно срочно научиться диагностировать production-инциденты:
- 00 -> 01 (контекст и mental model — 1 час)
- 02 (архитектура — must)
- 06 (checkpoint internals — must)
- 03 (network и backpressure)
- 05 (state backends)
- 19 (performance и observability)
Это — минимум для production-инженера. ~25 часов чтения.
Path 2: SQL/Table API focus
Если вы живёте в Flink SQL:
- 00 -> 02 (introduction + архитектура)
- 09 (Calcite — главный модуль для вас)
- 05 (state — даже в SQL это критично)
- 06 (checkpoint)
- 14 (Lakehouse: Paimon)
- 16 (AI: ML_PREDICT в SQL)
Path 3: Миграция с 1.x на 2.x
Если у вас legacy Flink 1.18/1.20 и впереди upgrade:
- 00 -> 01 (особенно 01: эволюция от 1.x до 2.2)
- 02 (адаптивный scheduler — default в 2.0)
- 05 -> 10 (state и disaggregated state)
- 11 (adaptive scheduling)
- 13 (Source V2 — нужно мигрировать ваши коннекторы)
- 20-21 (deployment patterns)
Path 4: Полный курс
Если у вас есть время (~3-4 месяца, ~5 часов в неделю) — идите линейно. Это даст самое глубокое понимание, и вы будете лучше многих core-разработчиков Flink в Apache.
Формат уроков
Каждый урок единого формата:
- MDX-урок — теория с диаграммами, code references к классам Flink, callout-блоками. 20-30 минут чтения каждый.
- Quiz после урока — 3-5 вопросов (multiple-choice + true/false) разной сложности — от conceptual до analytical. Senior-курс, поэтому большинство вопросов — на анализ.
- Module exam — 6 deep-вопросов в конце каждого модуля, passing threshold 70%.
- Labs на ключевые модули — поднятие реального Flink кластера (Docker Compose), эксперименты с reproducible failures, прочтение JM/TM-логов.
- Code references — каждый урок ссылается на конкретные классы Flink (
org.apache.flink.runtime.dispatcher.Dispatcher, etc.), которые рекомендуется открыть в IDE параллельно с чтением.
Стек курса
- Apache Flink 2.2 (current stable, May 2026)
- Java 21 (LTS, поддерживается с Flink 1.19)
- Apache Kafka 4.0 (transactional producer для exactly-once)
- Kubernetes + Flink Kubernetes Operator (recommended deployment)
- RocksDB 8.x / ForStDB (state backends)
- Apache Paimon + Fluss (lakehouse примеры)
- Docker Compose для labs (минимальная инфра)
- Prometheus + Grafana для observability
Что НЕ покрываем
- Yarn deployment — кратко упомянем как legacy, deep dive нет.
- Mesos — устарел, removed в 1.13.
- Стандартные DataStream-программы — это материал basic-курса. Если не умеете писать
KeyedProcessFunction— этот курс не для вас. - Подробное API connector-ов — обзорно покроем V2 архитектуру, но не каждый connector.
- PyFlink на уровне API — затронем internals (как работает gateway), но не API design.
Где встречаемся со source code
Вот несколько конкретных классов Flink, к которым курс часто возвращается. Их полезно знать наизусть:
В каждом deep-уроке курс будет указывать конкретный класс и часто конкретный метод (например, CheckpointCoordinator#triggerCheckpoint). Откройте, прочитайте, поймите.
Когда курс не нужен
Будем честны. Если вы:
- Только начинаете изучать Flink -> пройдите basic-курс сначала.
- Используете Flink только через managed-сервис (Confluent Flink, Aiven, AWS Managed Flink) и не планируете тюнить — большая часть курса вам не нужна. Достаточно концепций (модули 01-02) и того, что специфично managed (для exactly-once, для savepoint).
- Архитектор, который выбирает между Flink и альтернативами — модули 00-02 + 05-06 дадут материал для решения, остального не нужно.
- Студент, который пишет research-проект на Flink — курс полезен, но интенсивность senior-уровня может быть фрустрирующей. Идите медленно, не пытайтесь “выучить за неделю”.
Курс длинный — это не недостаток, а особенность. Чтобы стать senior-инженером по Flink internals, требуется время и накопление контекста. Не торопитесь. Один-два модуля в неделю с lab-ами — нормальный темп.
Следующий шаг
В следующем уроке — tour по source code Flink: как разложен monorepo Apache Flink, какие модули важны, что такое FLIP (Flink Improvement Proposal) и как читать FLIP-ы для понимания design decisions.
После этого начинается модуль 01 (философия), и оттуда — фундаментальный блок.