КТО ТАКОЙ ДАТА-ИНЖЕНЕР
Данные должны быть актуальны, корректны и находиться в нужном месте - именно за это отвечает инженер данных.
Но что за этим кроется?
В каждой компании дата-инженер выполняет разную работу. У всех свой стек технологий и скоуп обязанностей. Сегодня поговорим о задачах дата-инженера и о том, что в его задачи не входит.
Классическое понимание Data Engineer
Если в компании правильно выстроены процессы, Data Engineer получает задание от системного аналитика, где детально написано, что нужно сделать. Сам инженер данных не принимает решений какую таблицу грузить в базу и какое поле в неё добавить. Всё это приходит в виде системных требований.
Инженер данных решает как именно грузить данные - инкрементно или полностью, как быть при повторном запуске и так далее. Это именно технические решения и техническая работа.
Когда задача завершена, тестировщик проверяет результаты. Только после всех проверок решение попадает в продакшн. Но процесс не всегда построен именно так...
Разный масштаб и команды
Описанное выше - стандарт больших компаний. Но что насчёт маленьких? В маленьких компаниях гораздо меньше ресурсов и нет возможности нанимать столько специалистов. Да и культура часто не простроена, а роли не распределены. В начале карьеры нужно быть к этому готовым.
В небольшой компании дата-инженер может заниматься чем угодно: поиском правильного решения совместно с бизнесом (вместо бизнес-аналитика), составлением системных требований (вместо системного аналитика), тестированием различных решений (вместо тестировщика) и, конечно, анализом данных и созданием BI-систем (вместо дата-аналитика и BI-аналитика). Всё это интересно, но это не работа дата-инженера.
Что по инструментам?
Стек технологий везде разный, но есть ключевые узлы. У вас должен быть оркестратор, чаще всего Airflow, иногда - Dagster. В оркестраторе идёт планирование процессов загрузки данных.
В любой системе есть источник (откуда данные грузятся) и приёмник (куда всё поступает). Тут всегда актуальны Python и SQL. Python - чтобы реализовать саму загрузку данных, SQL - чтобы правильно осуществлять вставки и проверить корректность данных.
Инструментами обработки данных могут быть Spark, DBT, Flink итд. В качестве финальной точки часто используют ClickHouse - на нём удобно делать витрины для UI или BI. Внутри системы можно столкнуться с Postgres, в Postgres обычно хранят транзакционные данные или метаданные. И конечно Kafka - через неё проходят потоковые данные, которые потом обрабатывает Flink или Spark Streaming.
Если компания работает с миллиардами строк, они могут использовать Lakehouse: хранение данных в S3 (Iceberg или Delta Lake). Если компания работает с миллионами строк и данные структурированы, ничего не мешает обходиться обычными Postgres и ClickHouse.
Из чего состоит ежедневная рутина?
Как и везде, вам придётся общаться с коллегами. Это могут быть аналитики, тестировщики или ваш руководитель. Коммуникация в любом случае будет. В моей работе созвоны и встречи обычно занимали ~10% времени.
У вас уйдёт время на разбор системных требований и деталей ТЗ. Это ключевой этап, иногда он занимает даже больше, чем работа с кодом. Сюда же добавим текстовую коммуникацию - нужно написать вопросы и отчитаться о сделанной работе. Текстовая коммуникация тоже занимает свои 10% времени.
Ну и база - работа с кодом. Это и запросы к нейросетям, и разбор проблемных моментов, и само написание кода. Несколько раз столкнувшись с ошибками нейросети в важных запросах или скриптах, вы точно начнёте всё проверять. Так что проверка, тестовый запуск и финальные правки - еще 20% работы перед публикацией в git.
Что примерно выходит по времени:
И напоследок
400-500К рублей в месяц - вполне реальные зарплаты для опытного дата-инженера в РФ. Ваша рутина может отличаться от описанной тут. Но, надеюсь, общее понимание у вас появилось.
Сама работа может показаться скучной - иногда это просто перекладывание данных из одной базы в другую. Но набор применяемых инструментов и подходов - крайне интересен.
Учиться работе с данными можно долго и это очень увлекательно. Если учесть востребованность и неплохие зарплаты, Data Engineer - одна из самых интересных современных IT-специальностей.
Если заинтересовало - в статье еще больше деталей
Данные должны быть актуальны, корректны и находиться в нужном месте - именно за это отвечает инженер данных.
Но что за этим кроется?
В каждой компании дата-инженер выполняет разную работу. У всех свой стек технологий и скоуп обязанностей. Сегодня поговорим о задачах дата-инженера и о том, что в его задачи не входит.
Классическое понимание Data Engineer
Если в компании правильно выстроены процессы, Data Engineer получает задание от системного аналитика, где детально написано, что нужно сделать. Сам инженер данных не принимает решений какую таблицу грузить в базу и какое поле в неё добавить. Всё это приходит в виде системных требований.
Инженер данных решает как именно грузить данные - инкрементно или полностью, как быть при повторном запуске и так далее. Это именно технические решения и техническая работа.
Когда задача завершена, тестировщик проверяет результаты. Только после всех проверок решение попадает в продакшн. Но процесс не всегда построен именно так...
Разный масштаб и команды
Описанное выше - стандарт больших компаний. Но что насчёт маленьких? В маленьких компаниях гораздо меньше ресурсов и нет возможности нанимать столько специалистов. Да и культура часто не простроена, а роли не распределены. В начале карьеры нужно быть к этому готовым.
В небольшой компании дата-инженер может заниматься чем угодно: поиском правильного решения совместно с бизнесом (вместо бизнес-аналитика), составлением системных требований (вместо системного аналитика), тестированием различных решений (вместо тестировщика) и, конечно, анализом данных и созданием BI-систем (вместо дата-аналитика и BI-аналитика). Всё это интересно, но это не работа дата-инженера.
Что по инструментам?
Стек технологий везде разный, но есть ключевые узлы. У вас должен быть оркестратор, чаще всего Airflow, иногда - Dagster. В оркестраторе идёт планирование процессов загрузки данных.
В любой системе есть источник (откуда данные грузятся) и приёмник (куда всё поступает). Тут всегда актуальны Python и SQL. Python - чтобы реализовать саму загрузку данных, SQL - чтобы правильно осуществлять вставки и проверить корректность данных.
Инструментами обработки данных могут быть Spark, DBT, Flink итд. В качестве финальной точки часто используют ClickHouse - на нём удобно делать витрины для UI или BI. Внутри системы можно столкнуться с Postgres, в Postgres обычно хранят транзакционные данные или метаданные. И конечно Kafka - через неё проходят потоковые данные, которые потом обрабатывает Flink или Spark Streaming.
Если компания работает с миллиардами строк, они могут использовать Lakehouse: хранение данных в S3 (Iceberg или Delta Lake). Если компания работает с миллионами строк и данные структурированы, ничего не мешает обходиться обычными Postgres и ClickHouse.
Из чего состоит ежедневная рутина?
Как и везде, вам придётся общаться с коллегами. Это могут быть аналитики, тестировщики или ваш руководитель. Коммуникация в любом случае будет. В моей работе созвоны и встречи обычно занимали ~10% времени.
У вас уйдёт время на разбор системных требований и деталей ТЗ. Это ключевой этап, иногда он занимает даже больше, чем работа с кодом. Сюда же добавим текстовую коммуникацию - нужно написать вопросы и отчитаться о сделанной работе. Текстовая коммуникация тоже занимает свои 10% времени.
Ну и база - работа с кодом. Это и запросы к нейросетям, и разбор проблемных моментов, и само написание кода. Несколько раз столкнувшись с ошибками нейросети в важных запросах или скриптах, вы точно начнёте всё проверять. Так что проверка, тестовый запуск и финальные правки - еще 20% работы перед публикацией в git.
Что примерно выходит по времени:
- речевая коммуникация ~ 10%
- текстовая коммуникация ~ 10%
- разбор требований к задаче ~ 20%
- написание кода ~ 20%
- проверка кода и тесты ~ 20%
- работа с Git (+ ребейзы, конфликты, итд) ~ 10%
- паузы, переключения, орг. моменты ~ 10%
И напоследок
400-500К рублей в месяц - вполне реальные зарплаты для опытного дата-инженера в РФ. Ваша рутина может отличаться от описанной тут. Но, надеюсь, общее понимание у вас появилось.
Сама работа может показаться скучной - иногда это просто перекладывание данных из одной базы в другую. Но набор применяемых инструментов и подходов - крайне интересен.
Учиться работе с данными можно долго и это очень увлекательно. Если учесть востребованность и неплохие зарплаты, Data Engineer - одна из самых интересных современных IT-специальностей.
Если заинтересовало - в статье еще больше деталей