Инженеры данных (англ. data engineer) готовят данные для анализа, машинного обучения и других целей. В деталях это означает множество операций с данными: сбор, хранение, обработка, интеграция, трансформация и представление в нужной для работы приложений и систем форме.
Из краткого определения сложно понять нюансы профессии и тем более захотеть стать инженером данных. Поэтому мы с коллегами собрали мифы о data engineering и выделили наиболее популярные.
Если вы неплохо знакомы с работой дата-инженера, мифы про бесконечный кодинг или однообразие задач могут показаться глупыми и смешными. Но не делайте поспешных выводов: при подготовке статьи мы тоже узнали что-то новое.
Мифы о работе инженера данных
Одним инженерам данных известно, чем занимаются инженеры данных. Поэтому вокруг профессии много мифов и стереотипов, даже среди работодателей. Разберём самые распространённые вместе с инженером данных из SberData (департамент управления данными). И оговоримся, что это не рейтинг: мифы идут не в порядке важности.
Миф 1. Дата-инженерам не нужно кодить
Миф появился, потому что инженер данных часто пользуется коробочными решениями. Это готовое no-code (от англ. «без кода») программное обеспечение, для работы с которым нужны минимальные знания языков программирования.
No-code-инструменты позволяют управлять данными или упрощают создание их базовых структур. С no-code-инструментами можно быстро создавать и настраивать БД, таблицы, схемы и другие элементы.
Но программирование — существенная часть работы инженера данных. Оптимизировать производительность базы клиентов или обработать большой объём данных для маркетплейса невозможно без языков программирования и аналитики.
Миф 2. Наоборот, data engineering — это очень много кода
Противоположное первому мифу мнение: большая часть задач в data engineering связана с написанием кода. У некоторых дата-инженеров программирование и правда занимает 80% времени. Но на практике всё зависит от задачи. Например, если основная работа специалиста — проектировать архитектуру системы, то он чаще ревьюит код, чем пишет сам.
Миф 3. Data engineering — это просто ETL
Суть ETL-процесса (Extract, Transform, Load) — извлечь данные из различных источников, преобразовать в нужный формат и загрузить в хранилище. ETL-процессы нужны для обработки больших объёмов данных.
И хотя настраивать этот процесс — одна из основных задач инженера данных, она не единственная. Помимо этого нужно:
проектировать, создавать и поддерживать инфраструктуру для обработки данных, выбирать подходящие инструменты и программы;
оптимизировать производительность и масштабировать ETL-процесс, чтобы он обрабатывал растущие объёмы данных и соответствовал бизнес-потребностям;
учитывать требования к безопасности данных, обеспечивать их конфиденциальность и целостность.
Миф 4. Инженеру данных нужен только SQL
SQL (Structured Query Language) — основной язык запросов для многих реляционных баз данных (БД). Реляционные БД организуют и хранят данные в таблицах, которые можно связывать.
Инженеры данных часто работают с реляционными БД. И SQL нужно знать, чтобы извлекать, фильтровать, сортировать или группировать данные, а также писать сложные запросы и создавать таблицы и БД. У SQL простой и понятный синтаксис, поэтому освоить можно быстро.
Но SQL не покрывает все потребности дата-инженера. Например, парсинг требует манипуляций с текстом: удаление лишних символов, разделение текста на отдельные элементы. SQL же предназначен для работы с базами данных. В SQL попросту нет встроенных функций для таких операций.
Аналогичная ситуация с инструментами. Когда данных много, SQL-операции замедляются, поэтому есть более подходящие программы:
Для Apache Hadoop и Apache Spark нужно знать Python, Java или Scala.
Для Apache Airflow — популярного инструмента управления данными — тоже пригодится Python.
Для Grafana — инструмента мониторинга и логирования (записи информации о событиях, происходящих в системе, в журналы или логи) — нужен InfluxQL или язык разметки данных.
Миф 5. Задачи инженера данных технические и однообразные
По первым четырём мифам может казаться, что задачи дата-инженера скучные и автоматические, но на практике они постоянно решают нестандартные задачи. Например, ищут новые способы оптимизировать пайплайны, чтобы настроить обработку данных в реальном времени, провести интеграцию с разными источниками или создать сложные алгоритмы обработки.
? Пайплайн (англ. pipeline) — это последовательность шагов и операций с данными: сбор, очистка, преобразование, агрегация и загрузка.
В результате пайплайны справляются с большим объёмом данных за меньшее время, повышают качество данных и могут масштабироваться, адаптируясь под изменения в бизнесе.
Кроме того, дата-инженеры, как и аналитики, могут визуализировать данные и создавать отчёты. Например, когда компании нужно оценить бизнес-метрики и увидеть тренды или спрогнозировать спрос и оптимизировать производственные планы.
Миф 6. Анализ данных и машинное обучение важнее data engineering
Ни одна крупная компания не может работать без данных и определять стратегии развития. А машинное обучение помогает в автоматизации, повышении эффективности и оптимизации операций.
В то же время инженер данных влияет на результат, действуя «за кулисами». Его работа не менее важна, чем анализ данных или МО, и вот почему.
Во-первых, неправильно подготовленные или неполные данные приводят к ошибкам в анализе. В маркетинге это может привести к неверной оценке эффективности рекламной кампании или к ошибке с целевой аудиторией, а в финансах — к неточному прогнозу рыночных трендов и рисков.
В машинном обучении некачественные данные приведут к тому, что модели не справятся с прогнозами. Например, если данные о предпочтениях пользователей содержат ошибки и пропуски, модель может неправильно или несвоевременно рекомендовать товары и контент.
Во-вторых, если архитектура и инфраструктура больших данных не продуманы, нельзя передавать их на анализ или машинное обучение. Нагрузка на серверы и задержка в обработке — только часть проблем. Инфраструктура может «упасть», а некорректные операции приведут к сбоям, потере данных или непредсказуемому поведению системы.
Без дата-инженера собрать и обработать данные тоже возможно. Но только этот специалист поможет компании справиться с большим потоком данных и построить инфраструктуру так, чтобы не было проблем на следующих этапах.
Миф 7. Инженеры данных нужны только в крупных компаниях
На первый взгляд, небольшому бизнесу основательный подход к хранению и обработке не нужен. Если данных не так много, зачем тратить ресурсы на инфраструктуру и сотрудников?
На деле data engineering важен любой компании, которая использует данные для работы: от небольшой консалтинговой фирмы до крупного интернет-магазина. Объёмы данных могут быть разными, а бизнесу в любом случае важно обрабатывать их качественно и быстро, чтобы принимать решения.
Допустим, интернет-магазин носков становится популярным благодаря вирусному контенту в социальных сетях. Число посещений и заказов резко растёт. Но оказывается, что система управления данными неэффективна. Как следствие, заказы задерживают, а клиенты недовольны. В этом случае инженер может продумать архитектуру, подсказать, как оптимизировать процессы, и выделить слабые места в инфраструктуре.
Но там, где небольшому бизнесу достаточно одного специалиста, крупные компании распределяют задачи между несколькими специалистами или даже командами. Одна ответственна за сбор данных и настройку системы, другая — за обработку и очистку, третья — за анализ и создание отчётов. Чем больше данных у компании, тем больше ресурсов нужно для сбора, хранения, обработки и анализа данных.
Миф 8. Data engineering можно полностью автоматизировать
Хранение и обработку данных можно автоматизировать: достаточно один раз спроектировать архитектуру, написать скрипты и настроить ETL-процессы.
Почему это не так — покажем на примерах:
У компании-перевозчика контейнеров есть много внутренних источников данных из разных областей. Когда компания решит агрегировать все источники в единое хранилище, появятся сложности. Например, передача данных из первого источника уже автоматизирована, а во втором источнике данные хранятся в другом формате. Обработку данных нужно менять, чтобы они правильно отображались в хранилище. А при переходе к следующему источнику появляется уведомление об изменении структуры данных в первом — и автоматизированный пайплайн перестаёт работать.
Для руководителя построили отчётность, которая обновляется автоматически при поступлении новых данных. Руководитель сменился — и новому нужны уже другие графики. В некоторых системах это подразумевает обновление логики, по которой строится отчётность. А значит, инженеру данных придётся менять процессы вручную.
Как технические, так и «человеческие» проблемы требуют изменений в уже работающем коде, чтобы обеспечить его непрерывную работу. Получается, что автоматизация не может полностью заменить инженера данных. Специалист постоянно поддерживает работу процессов — от обработки до защиты данных.
Где актуальны навыки инженера данных
Требования рынка меняются быстро, а инструменты и технологии подстраиваются. В работе дата-инженера тоже появляются задачи, которые вскоре могут пополнить число мифов. Зафиксируем актуальные направления:
Облачные технологии
Компании арендуют удалённые сервера вместо физических, а также вычислительные ресурсы в облаке, что сокращает затраты. Кроме того, масштабировать облачные системы проще: достаточно докупить необходимые элементы, а поддерживать их будут специалисты облачного сервиса.Расширение экосистемы инструментов для работы с данными
Новые инструменты приходят на замену старым или присоединяются к уже существующим системам. Среди новых можно выделить Apache Kafka, Apache Spark, Apache Flink, Apache NiFi, которые позволяют обрабатывать данные в режиме реального времени. Так, в Kafka и Spark можно собирать и анализировать данные о движении автомобилей. Эту информацию можно использовать для динамических карт с дорожными пробками.Графовые базы данных
Такие БД позволяют хранить и обрабатывать данные в виде графов и графовых структур. Вместо таблиц и строк данные представляют в виде узлов (вершин) и связей (рёбер) между ними. Благодаря этому можно анализировать связи и отношения между объектами и оперировать сложными структурами данных.
В социальных сетях графовые БД можно использовать, чтобы хранить и исследовать связи между пользователями или взаимодействиями между ними.Подготовка данных для обучения искусственного интеллекта
Для эффективного и точного искусственного интеллекта нужен существенный объём качественных данных. Их обработка и подготовка — ключевые задачи в обучении модели. Чем быстрее данные поставляются, тем точнее и качественнее обучается модель, особенно если это происходит в режиме реального времени.
Что должен уметь инженер данных
Специалисту по data engineering нужны знания о проектировании систем обработки, основах программирования, базах данных, сетевых протоколах и не только.
Основные технические навыки, или хард-скиллы:
Знания архитектуры данных. Умение проектировать и реализовывать сложные системы обработки данных.
Программирование. Инженеру данных нужен набор сразу из нескольких языков. SQL — для работы с БД и запросов на выборку данных. Python, Java или Scala — чтобы автоматизировать процессы, обрабатывать данные с помощью разных инструментов и создавать свои.
Работа с базами данных. На практике инженер данных сталкивается с разными типами БД: реляционные, NoSQL (MongoDB, Cassandra) и NewSQL (VoltDB, MemSQL, ClickHouse).
Знание оркестраторов, в которых настраиваются ETL-процессы: Apache Airflow, Apache NiFi или Talend.
Знание технологий для Big Data. Обработкой больших объёмов данных занимаются Apache Hadoop, Kafka, Greenplum. Они могут параллельно обрабатывать данные, например, распределяя их между множеством компьютеров в кластере, как делает Hadoop. И отличаются высокой отказоустойчивостью, чтобы минимизировать простои и потерю данных.
Понимание DevOps-подхода. Он помогает установить связь между разработчиками, тестировщиками и инженерами, запускающими код на реальные серверы, и оптимизировать процесс разработки. Чтобы включиться в этот процесс, инженеру данных пригодится знание таких программ, как Ansible, Terraform или Kubernetes.
Linux-системы и командная строка. Многие инструменты — те же Hadoop, Spark и Kafka — часто развёртываются и работают в среде Linux. Поэтому для работы с ними понадобится умение обращаться с терминалом, где пользователь может давать команды операционной системе.
Система контроля версий Git. С её помощью удобно работать в команде, контролировать версии кода и сохранять весь процесс разработки.
Облачные технологии: например, облачные сервисы Amazon Web Services (AWS), Google Cloud Platform (GCP) и Yandex Cloud.
Кроме этого, инженеру данных нужно интерпретировать требования заказчика и преобразовывать их в технические решения. Чтобы выбрать инструменты для обработки, нужно анализировать требования заказчика и возможности инструментов. А после — проводить мониторинг и анализ производительности системы, оперативно вносить изменения в работу процессов, обеспечивая оптимальную скорость обработки. И несмотря на то, что непосредственным анализом дата-инженер не занимается, он должен понимать структуру данных и её особенности, чтобы преобразовывать данные в желаемый формат и создавать работоспособные процессы.
За подготовку и идею статьи благодарим ревьюера на курсе «Инженер данных» от Практикума и инженера данных в SberData Кирилла Дикалина, а также авторов курса и редактора Варвару Скопину.