Дата Инженер Лаб | Артём Подвальный
1.83K subscribers
65 photos
65 links
🔹 Обзор инструментов и методов
DE & DS
🔹 Подготовка к интервью и офферам
🔹 Разбор архитектур без воды

Менторство и вопросы: @ampodvalniy

Отзывы: https://t.me/podvalny_otzyv

Подробнее: https://dataengineers.pro/mentors/artyompodvalny
Download Telegram
Channel name was changed to «Data Engineer Lab | Артём Подвальный»
Рынок Data Engineering в 2026 — это уже совсем другой уровень!
За этот год требования значительно взлетели.
Теперь на собеседованиях мало просто «понимать технологии» — от тебя ждут реального опыта, глубоких деталей и умения рассказать, как ты решал настоящие проблемы в продакшене.

Типичные вопросы сейчас:
Какой самый сложный ETL-процесс тебе приходилось разрабатывать?
Как организована поставка в прод?
Сколько строк в секунду реально лилось через пайплайн?
На чём был реализован процесс (Spark, Flink, Airflow, dbt, Kafka Streams…)?
Как проходила миграция данных / схем / хранилища?
Какие требования бизнеса / SLA стояли?
Какая была твоя роль на проекте ?

Вкатиться самостоятельно стало в разы сложнее.
Поверхностные знания уже не прокатывают — работодатели копают глубоко и хотят слышать конкретные истории успеха и фейлов.
Но хорошая новость: за последний месяц я с командой проработал много реального материала:
🔘 Собрали настоящие кейсы из жизни дата-инженеров
🔘 Разобрали вопросы по компаниям (от Big Tech до российских продуктовых)
🔘 Составили мощные легенды и структурированные рассказы о проектах
🔘 Подготовили ответы, которые реально цепляют интервьюеров
Результат? Люди проходят сложные этапы и получают долгожданные офферы
Хочешь такую же детальную легенду под себя + уверенный рассказ о проектах, который не развалится под давлением?
Приходи на менторство.
Последние отзывы от ребят:
https://t.me/it_mentors/6596
https://t.me/it_mentors/6514
Пиши в личку, обсудим твою ситуацию:
В 2026 году офферы берут не те, кто «знает теорию», а те, кто может уверенно рассказать «как я это делал в проде и что было сложно».
Давай сделаем так, чтобы это был ты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁8💯6👍5🤨52
Как работает CDC pipeline?

🌐В современных дата-платформах данные редко грузят батчами раз в сутки.
Чаще используют CDC (Change Data Capture) — потоковое получение всех изменений из базы.

Разберём классический пайплайн:

MySQL → Debezium → Kafka → ClickHouse

1️⃣В MySQL все изменения пишутся в binlog (binary log) - по сути журнал транзакций базы.
Каждая операция фиксируется как событие: INSERT,UPDATE,DELETE

2️⃣Debezium — это CDC-коннектор (обычно работает через Kafka Connect)
Он:
➡️подключается к MySQL
➡️читает binlog
➡️превращает события в Kafka messages
➡️пишет события в Kafka топики

3️⃣Kafka: транспортный слой между OLTP и аналитикой которая позволяет довольно продолжительное время накапливать историю

4️⃣Далее все направляется в ClickHouse: аналитическое хранилище
Он читает Kafka через Kafka Engine или ingestion сервис.
Выглядит это примерно так:
Kafka topic

Kafka Engine Table

Materialized View

MergeTree таблица

🧐Почему такая архитектура стала стандартом

Она даёт:
➡️Near real-time данные
➡️минимальную нагрузку на OLTP
➡️возможность replay истории
➡️масштабируемость

Было полезно? Ставьте 🔥
#dataengineering #cdc #debezium #kafka
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥386💯32
👋Рад тебя видеть в Дата Инженер Лаб!

Я — Артём Подвальный. Помогаю разобраться в работе инструментов обработки больших данных и как происходят эти процессы в компаниях. Здесь я стараюсь простым языком объяснить самое важное что надо знать начинающему DE и получить заветный оффер.

Самое полезное, что уже можно найти в канале:

🔥 Обязательно для прочтения:
Легендарный Roadmap для DE. Проверь, всё ли из этого ты знаешь

🏗 Все самое полезное для DE

💼 Для тех, кто ищет работу или планирует вкатываться в DE

Давай общаться!
Задавай вопросы в комментариях к любому посту или пиши мне лично: @ampodvalniy.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥75🏆5🤨2
Channel name was changed to «Дата Инженер Лаб | Артём Подвальный»
Давайте разберем такую ситаацию: твой пайплайн упал и данные за последние 3 часа «испарились», а восстановить их не из чего 💀

Если у тебя стоит RabbitMQ — это реальный сценарий. Если Kafka то проблема может решится парой команд в консоли. Так почему же один брокер будет прощать ошибки, а другой — нет? Разбирем фундаментальную разницу между Smart Broker и Dumb Broker, чтобы вы больше никогда их не путали.

Главное различие — в «интеллекте» системы:

🔘RabbitMQ (Smart Broker): Брокер сам следит за состоянием очередей, маршрутизирует сообщения и удаляет их сразу после подтверждения (ack). Это модель Push: брокер сам «толкает» данные потребителю. Это упрощает код клиента, но нагружает систему при росте данных.

🔘Kafka (Dumb Broker): Это распределенная платформа потоковой передачи, работающая как распределенный коммит-лог. Она просто записывает данные и хранит их. Здесь работает модель Pull: потребители сами запрашивают данные, когда готовы их обработать.

👀 Почему для Data Engineering почти всегда нужна Kafka?

🔛 Гипер-масштабируемость: Кафка переваривает миллионы сообщений в секунду. Секрет в партиционировании (partitions): топики делятся на части и распределяются между брокерами. Это позволяет распараллеливать чтение и запись на петабайтах данных. Мы упоминали это, когда разбирали современный Lakehouse.

🔛 Постоянство данных (Retention Policy): Сообщения не удаляются после прочтения. Они хранятся по времени или объему. Это позволяет нескольким потребителям читать одни и те же данные в разное время.

🔛 Replayability (Повтор): Если в пайплайне баг, ты просто перечитываешь данные заново. В RabbitMQ «съеденное» сообщение пропадает навсегда.

🔛 Гарантии Exactly-once: Кафка умеет доставлять сообщение «ровно один раз», что критично для финансов. Рэббит обычно гарантирует только «хотя бы один раз».

🐰Когда RabbitMQ — это НЕ ошибка?
🔘Сложная маршрутизация: Если нужно раскидывать задачи по куче условий (exchanges: direct, fanout, topic, headers). Кафка в базе так не умеет.

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

🔘Низкая задержка на малых данных: При небольших объемах Рэббит может быть быстрее, но при росте нагрузки его задержки растут лавинообразно.

Итого:
Если ты строишь Data Lake, систему аналитики или ETL-пайплайны — твой выбор Kafka. Она идеально ложится в архитектуру Data Vault, сохраняя историю без потерь.

RabbitMQ оставляем для микросервисов и простых очередей (например, фоновая отправка писем).

🔖Что почитать по теме: https://habr.com/ru/companies/slurm/articles/666326/

Вопрос к тем, кто учится:
Представь, что тебе нужно собирать логи со 100 серверов и сохранять их в базу для аналитики. Что выберешь после этого поста и почему?
Пиши в комментариях, обсудим! 👇


#Kafka #RabbitMQ #DataEngineering #ITCareer #CareerDE #DataScience
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👏4💯31👍1
Вопрос по которому часто возникают трудности у кандидатов😐

«Как вы боретесь с дублями в Kafka на проде?». Напиши свой ответ в комментариях и сравнивай:

Ответ: "Три уровня защиты. Producer: enable.idempotence=true — закрывает сетевые ретраи. Consumer: проверяю event_id в Postgres перед обработкой. Транзакции — только для read-process-write между топиками Kafka. Главное правило: check → process → commit offset."

Совпало? Теперь разберем по полочкам, почему это важно: 👇

Почему дубли вообще есть?
1️⃣Producer retry
Producer отправил сообщение → брокер не ответил → producer отправил СНОВА
Kafka получила 2 одинаковых сообщения

2️⃣Consumer crash
Consumer прочитал сообщение → начал обработку → УПАЛ
При рестарте читает то же сообщение СНОВА

3️⃣Rebalance группы (80% проблем на проде!)
Consumer A обработал партицию → Consumer B взял её → обработал СНОВА
Как это можно решить:

🔵Настройка продюсера

Кафка выдает тебе Producer ID (PID) и заставляет нумеровать сообщения. Если брокер видит сообщение с номером, который уже был - он его просто выкидывает.

Настройка: enable.idempotence=true.

Почти не влияет на скорость. Включай всегда по умолчанию.

🔵Транзакции

Объединяет чтение и запись в одну неделимую операцию (Read-Process-Write). Если что-то упало - вся цепочка откатится, и дублей в конечном топике не будет.

Настройка: transactional.id + isolation.level=read_committed.

Добавляет задержку (latency). Используй только там, где критичен идеальный порядок.

🔵 Идемпотентность консьюмера

Кафка не знает, что в твоей базе. Если сервис записал данные, но «упал» до фиксации оффсета - кафка пришлет дубль. Поэтому проверяй уникальность ключа на входе в базу.

Пример: INSERT ... ON CONFLICT DO NOTHING в Postgres или SET NX в Redis.

Самый надежный способ, который спасет, даже если настройки кафки не помогли.

🤔Какой следующий вопрос разобрать?

#Kafka #DataEngineering #ITCareer #CareerDE #DataScience
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7💯73👍3🤔3👀1
Страшно начинать с нуля 😱

Это первая мысль, когда решаешь уйти из другой сферы или только заканчиваешь универ…

📌Но вот в чём штука — ты и не начинаешь с нуля

Ноль — это когда нет ничего. А у тебя есть: годы учёбы или работы, насмотренность, понимание того, как устроены процессы, люди, системы. Это не обнуляется от того, что ты открыл первый туториал по Python⚠️

Именно прошлый опыт часто становится скрытым преимуществом:

Умение структурировать хаос🌪
Пайплайны, зависимости, ошибки, потоки данных — это управляемый хаос. Если умел наводить порядок в процессах, документах или хотя бы в своих курсовых — здесь будет понятна логика.

Коммуникация
DE — это не только код. Объяснить аналитику, почему данные «поехали», согласовать с бизнесом приоритеты — это добрая половина работы 🍻

Проектное мышление 🖥
Привычка доводить задачи до конца, держать сроки и не теряться в приоритетах — это видно сразу и ценится высоко.

Внимание к «скучным» деталям
Бухгалтерия, документирование процессов, контроль качества — там, где без проверок нельзя. Этот «занудный» навык в DE превращается в суперсилу 👀

Гибкость в освоении нового
Если ты уже менял роли или сферы, твой мозг умеет перестраиваться. Новый стек, новая терминология уже не шок 🧑‍💻

Опыт работы с документацией
Умеешь читать инструкции, регламенты, стандарты? Значит, разобраться в API, логах и метриках — вопрос времени, а не способностей.

🏫А если ты только из универа?
Учился на экономиста, биолога, физика, юриста — неважно. Ты уже умеешь разбираться в сложных системах, работать с большим объёмом информации и доводить задачи до результата под дедлайн. Это и есть база, на которую ляжет DE.

Твой опыт, абсолютно любой — это актив. Его стоит ценить и использовать!


📱 SQL, Python, облака и оркестрацию выучить можно. А умение не паниковать, когда всё горит, чувствовать бизнес и структурировать хаос — это приходит с опытом, который у тебя уже есть

Если сейчас стоишь перед этим шагом и не знаешь, с чего начать — пиши в личку @ampodvalniy 👋

Расскажешь про свой
бэкграунд, разберём вместе: что уже есть, что нужно подтянуть и как выстроить путь без хаоса👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👏7🥰4👀31🤔1🤨1
📊Ты считаешь ежедневных юзеров, и вдруг DAU (Daily Active Users) подскочил на 25%! Команда празднует вирусный рост, а ты хватаешься за дебаггер ⚠️
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰6🔥4👏4
Правильный ответ:

Повторная загрузка одних и тех же данных (отсутствие идемпотентности)🔁

Почему это происходит?

Инкрементальная загрузка - это когда мы не перекачиваем все данные заново, а только добавляем свежие кусочки (например, за вчерашний день)
🧩 Но иногда случаются сбои: процесс может упасть на середине или его могут запустить дважды по ошибке ⚠️

В чем косяк
♠️?

Если твой процесс просто «дописывает» данные (Append) и не проверяет, были ли они загружены ранее, то при повторном запуске он добавит те же самые строки еще раз. Это называется отсутствием идемпотентности
🙅‍♂️ В итоге количество пользователей (DAU) в базе вырастет, но это будут не новые люди, а «клоны» старых.

Как исправить?

Вместо простого добавления использовать стратегию MERGE (обновить, если есть, или вставить, если нет) или INSERT OVERWRITE (сначала удалить старые данные за этот день, а потом записать новые)
✔️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👀421😁1🤔1
Ребята, давно хотел обновить свой роадмап по Data Engineering - и вот наконец сделал. Кстати, на канале появилось много новеньких - привет всем, кто только подписался, вы тут вовремя появились👋

Переписал роадмап под реалии 2026: убрал лишнее, добавил актуальные инструменты, прикрепил ссылки на материалы и вилки по каждому грейду. Получилось объёмно, но по делу.

Если заходите в профессию или думаете куда расти 📈

-> ЧИТАЕМ ТУТ

P.S. Буду благодарен за комментарии и лайки, хотелось бы продвинуть статью😋
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥11👏5🤨5👍4🤔3👀2
❗️Задачка на проверку твоих знания в DE
В понедельник приходит отчёт: продажи за выходные выросли на 35% по сравнению с прошлой неделей, аналитики в шоке от "успеха" 😃 Ты копаешь код и ищешь косяк…
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Правильный ответ:

Разный grain (считают по заказам, а агрегируют по позициям — строки размножаются) 🔄

Почему это происходит?

Представь, что у тебя есть таблица «Заказы» (где 1 заказ = 1 строка) и таблица «Товары в заказе» (где 1 товар = 1 строка)
📦Если в одном заказе купили 3 разных товара, то при объединении (JOIN) этих таблиц одна строка заказа «размножится» на три

В чем косяк? Если ты начнешь считать сумму продаж по такой «раздутой» таблице, SQL сложит сумму одного и того же заказа трижды
🥲 В итоге в отчете цифры будут гораздо выше реальных (тот самый «взрыв дублей»), хотя на самом деле продаж больше не стало 📉

Как исправить? Нужно сначала «схлопнуть» (агрегировать) данные о товарах до уровня заказа и только потом делать JOIN
☑️
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆7🤯5👏4
Снова увидел S3 в требованиях? Давай раз и навсегда разберёмся

🤔 Часто в вакансиях вижу S3. Решил напомнить (или рассказать тем, кто не знает) - что это вообще такое 👇

S3 (Amazon Simple Storage Service) - если совсем просто, это «бездонная бочка». Гигантский виртуальный склад. Кидаешь туда файл любого типа и размера - и не думаешь, что место кончится.

Как оно устроено?

В отличие от компбютера(файловой системы) где файлы лежат в папках, тут всё плоское. Без иерархий. Вот три основных понятия, которые надо знать:

🪨Объект - сам файл. Картинка, видео, документ, лог. У него есть:
🔘сами данные
🔘метаданные (размер, тип и прочее)
🔘ключ - уникальный адрес, по которому его найдёшь

📦Бакет - контейнер верхнего уровня, куда складываешь объекты. Название бакета должно быть уникальным во всей системе. Вообще всей.

🔑Ключ - полный путь к файлу. Например,
documents/2023/invoice.pdf. 

Вся строка целиком - это и есть ключ. Похоже на папки, да. Но внутри - нет, просто строка.

Почему S3 все так любят?

Место не кончается - терабайты, петабайты. Система сама расширяется, когда ты добавляешь файлы.

💰 Дёшево - в 10–20 раз дешевле, чем хранить то же самое в нормальной базе данных или Data Warehouse.

❤️Никуда не денется - данные копируются между серверами и даже между разными городами (дата-центрами). Риск потерять почти ноль.

Но есть и минусы, куда без них

Неизменяемость - объекты нельзя просто «поправить». Хочешь изменить одно слово в текстовом файле? Качай новую версию целиком, перезаписывай старую. Всё заново.

Не для баз данных - S3 медленнее, чем обычный диск. Не подходит для вещей, где данные надо менять мгновенно (например, для работающей базы интернет-магазина).

Задержки - доступ к файлу может быть медленнее, чем в обычной файловой системе.

А ещё S3 — это фундамент современной аналитики

Его называют «фундаментом» для Lakehouse. На S3 лежат огромные массивы сырых данных в открытых форматах (типа Parquet). А системы вроде Delta Lake или Apache Iceberg превращают эти файлы в удобные таблицы для аналитиков. Красота 🍾

Сделать вам обзор на Delta Lake и Apache Iceberg (или уже 10 раз про них успели прочитать)?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥12🥰5
Неделя офферов 💵💵

Редко пишу про успехи менти, но на этой неделе результаты такие, что хочется поделиться. Сразу три оффера 🔥

Самый яркий кейс - Кирилл (имена изменены). Учится очно в вузе на 4 курсе. С нуля, за 6 месяцев (обучение + собесы) получил оффер на 295 000 ₽.

Это к вопросу о том, что отсутствие профильного бэкграунда в IT не закрывает твоё будущее в DE. Будет труднее, но навык обучаться помогает справится со всеми сложностями!

Еще двое ребят с опытом за два месяца подготовки выросли в грейде и получили офферы на 340 000 ₽ и 327 000 ₽ 🔥

💬 За неделю до своего оффера Кирилл написал в наш закрытый чат сообщение, которое будет полезно всем, кто сейчас в процессе поиска:
Для тех, кто не собесился, напишу. Мне оч страшно было резюме выкладывать, я смотрел записи других собесов и пугался: почему так сложно, как же будут люто спрашивать, я опозорюсь капец блин.

2 недели собеседуюсь уже, 3 оффера есть, от еще одной компании жду ответ, но собес там хорошо пройден. И могу сказать — реально уверенность в легенде своей решает. Если прям прочувствовать легенду свою, знать полностью, что ты делаешь на работе, каждый шаг, каждый даг пхпхпх, то норм будет. Потому что все теор вопросы по инструментам есть в роадмапе (в роадмапе даже больше, чем по факту спрашивают), а остальные вопросы по опыту по типу: “А у вас Greenplum распределенный был? А как ты distribution key выбрал, а partition by что делал?”. И если прям хорошо легенду знать, то на эти вопросы можно ответить. А если что-то прям вглубь копают, можно ответить, что не использовали это, но думаю, что это нужно для таких-то целей.

Иногда дают на собесах задачки по SQL и Python, но Python вот в * и * прям оч легкий был, без ООП, без всего. А SQL ну знать надо, это да. Поэтому основное для подготовки к собесам — это влюбиться в легенду свою, штуки по оптимизации знать и про план запроса (как анализировать), кратко про фишки инструментов и хорошо знать SQL.

Но к сожалению, даже если хорошо пройдешь собес, бывает, что у собеседующего настроение не то и не хочет тебя брать. Бывает, когда ну не прям грубят, но атмосфера прям неприятная, хочется уйти. Это у всех может быть вне зависимости от знаний. И тут только выдохнуть после собеса, покушать вкусно и не воспринимать слишком близко, идти дальше. Значит, не судьба, будут еще собесы. Всем удачи и побольше офферов, побольше мест, где вам будет приятно работать!
Если вы сейчас тоже в поиске или только планируете выходить на рынок - для начала можете почитать мой Roadmap по Data Engineering ➡️Там я собрал необходимые знания, чтобы претендовать на офферы уровня 200к+

Сейчас я беру на менторство всего пару человек в месяц, чтобы сохранять качество и личный контроль ‼️Если вы хотите через полгода так же писать в чат о своем результате - пишите мне в личку @ampodvalniy, договоримся о коротком созвоне. Разберем вашу ситуацию и поймем, смогу ли я вам помочь 🫱‍🫲
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6🤔64👏4
Первое видео на YouTube! 📹📺

Знаю по своим ученикам (да и по себе), что самое сложное на собеседовании - это уверенно рассказать о своем опыте. Особенно если его объективно мало или вы решили немного приукрасить резюме.

Записал для вас видео, где мы с Катей провели мок-интервью

В этом видео:

🔷 Как рассказывать о своем опыте?
🔷Как отвечать на вопросы про стек, объемы данных и сложные ETL-процессы?
🔷Что говорить об опыте, если его пока не хватает?
🔷Можно потренироваться отвечать на вопросы

Полезно для тех, кто сейчас активно ходит по собесам или готовится к ним👍

Смотреть тут:
🔥YouTube
💙RuTube

Буду рад вашей поддержке: лайки и комментарии очень помогают продвигать видео. И пишите, какие темы разобрать в следующих выпусках — я все читаю 🍾
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍107