Колонки

Инженер данных: что это за специалист и как им стать?

Колонки
Рашид Гиниятов
Рашид Гиниятов

Инженер данных в СИБУРе

Павел Лебедев

Rusbase вместе с IT-командой «СИБУР Холдинга» продолжает серию публикаций о том, кто делает промышленную революцию в России. Мы уже успели разобраться, кто такие дата-сайентист, архитектор индустрии 4.0 и скрам-мастер. Настала очередь инженера данных. Кто это такой и зачем он нужен в нефтехимии, рассказывает Рашид Гиниятов, инженер данных в СИБУРе.

Инженер данных: что это за специалист и как им стать?
Присоединиться

Кто такой инженер данных?

Инженер данных — это специалист, который занимается созданием и развитием платформы, осуществляющей сбор, обработку, хранение и выдачу данных. По этому определению, конечно, сложно представить, что же он делает.

Раньше я работал в банке, и люди, не связанные с ИТ, спрашивали меня о профессии. Я отвечал, что знаю все о клиентах. Это, конечно же, шутка, потому что данные обезличены. 

Сейчас говорю, что компания анализирует большие объемы данных для принятия решений, а я занимаюсь их сбором и кластеризацией. По крайней мере, это понимают молодые люди. Но находятся и те, кто просто считают меня программистом и, не вдаваясь в подробности, просят «починить комп». И я, конечно, не отказываю.

 


Но вы же тут немного разбираетесь в ИТ и вам нужно больше подробностей? Тогда усаживайтесь поудобнее — сейчас расскажу вам историю.

По мере того как развивались технологии, компании, которые их используют, стали производить больше данных. Соответственно, изменились и подходы к их хранению. Если раньше довольствовались базами данных SMP (symmetric multiprocessing), то сегодня существуют иные подходы и технологии, такие как базы данных MPP (massive parallel processing) и Hadoop.

SMP хороши для транзакционных данных, веб-форм и метаданных. MPP лучше подходят для высоконагруженных запросов, отчетности, быстрой обработки за счет деления данных по нескольким узлам. А Hadoop — для хранения огромных массивов «холодных» данных. 



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

Таким образом, стали появляться разные технологии баз данных: документоориентированные, key-value, time series, in memory, пространственные, графовые, вероятностные и прочие.

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

  • администратора (который занимался инфраструктурой),
  • разработчика (который писал SQL-запросы и «переливал» данные посредством ETL-инструмента), 
  • аналитика (который общался с бизнес-заказчиками и формировал требования к разработке потоков данных).

Теперь же есть потребность использовать гибридный вариант платформ с различными технологиями, — соответственно, нужны специалисты, обладающие более широкими знаниями и способные при необходимости быстро развернуть ПО, например, в облаке. Так появился data engineer. 

Как он это делает?

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

Например, работа инженера в СИБУРе в первую очередь отличается большим количеством производственных данных, генерируемых промышленным оборудованием, АСУ ТП (автоматизированная система управления технологическим процессом), сенсоров и датчиков.

Например, мой коллега написал приложение, которое собирает данные с АСУ ТП предприятия в Тобольске и отправляет их на брокер сообщений (программа, которая принимает сообщения от различных отправителей, формирует из них очередь), чтобы доставить их в хранилище. Дальше они заливаются в базу данных, предварительно пройдя фильтрацию и унификацию.

Сам я занимаюсь развертыванием системы мониторинга и сбора метрик, основанных на time series. В СИБУРе есть огромное количество ИТ-систем и серверов продуктов, каждый из которых должен стабильно работать.

Если одна из систем «упадет» и какая-то часть данных не будет загружена на серверы, компания может понести потери, в том числе и финансовые. За работоспособностью систем нужно внимательно следить — этим и занимается система мониторинга.

Каждые 10 секунд с каждого продуктового сервера компании в нее поступают метрики (данные с временной меткой), например, информация о загрузке процессоров, нагрузке на сеть или объеме свободной памяти. Динамика этих показателей отображается на дашбордах (графиках).


    

Также я занимаюсь внедрением Elasticsearch — поискового движка, который помогает поиску по большому объему данных. В СИБУРе мы пока задействуем его для сбора логов с серверов, но планируем использовать значительно шире, потому что вариантов множество.

Объяснять пользу этого движка в работе с большими данными можно на примере статей rb.ru. С помощью Elasticsearch можно не только легко найти конкретного автора, но и определить, чем он занимается и какие слова употребляет в своих колонках чаще других спикеров. 

Как стать инженером данных?

С детства мне было интересно, как устроена техника. У меня был компьютер и мотоцикл, которые я периодически разбирал, перебирал, что-то дорабатывал. В школе начал увлекаться физикой, участвовал в олимпиадах и даже поступил на кафедру технической физики в Бауманку. 


  


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

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

Сперва устроился в ИТ-компанию, где работал все тот же друг. Компания была подрядчиком «Альфа-Банка», и я сидел вместе с другими сотрудниками банка в их офисе. Работал с SMP-базами данных, создавал инструменты для загрузки и трансформации данных. 

Через два года я понял, что хочу заниматься большими данными и получил такую возможность в «Тинькофф Банке». Там я уже начал работать с базами данных MPP и брал на себя задачи, связанные с Hadoop, Kafka, HBase и Spark. 

Еще через пару лет я узнал термин data engineer и понял, кто я на самом деле. В то же время мне хотелось развиваться дальше и заняться каким-то проектом с нуля, чтобы научиться администрировать, устанавливать программное обеспечение, конфигурировать его. 

Я тогда не искал работу, СИБУР нашел меня сам через LinkedIn, предложил должность инженера данных, и я согласился. Меня привлекло в том числе и то, что мой руководитель в СИБУРе Артем Данилов раньше работал в «Авито» и хорошо знает новейшие подходы к работе с данными. Именно поэтому компания сразу начала искать нужных людей. 

Переход из финансовой сферы в нефтехимию меня не беспокоил: по большому счету для грамотного специалиста неважно, чем занимается компания, главное, что есть большие массивы данных и бизнес-задачи, которые с их помощью можно решить. А в СИБУРе много и того, и другого.

Это моя история и, конечно, не единственно верный путь. У других он может быть иным, но пару советов о том, как стать инженером данных, дать все же можно.
  1. Желательно окончить технический вуз, потому что, например, у меня было очень много математики, и она реально пригодилась. Но все-таки лучше, чтобы был уклон в computer science: в программирование и ИТ. Я учился на физика и, возможно, упустил некоторые моменты, которые мне приходится наверстывать до сих пор на разных курсах. 
  2. Дополнительное образование точно не будет лишним. Например, я изучал Python на Coursera, прошел стэнфордский курс по базам данных, задачи брал на sql-ex.ru. Пригодятся и знания Scala и Java. 

В некотором смысле инженер данных — это и разработчик, и администратор. Он должен хорошо разбираться в SQL-базах данных, отлично знать SQL, иметь опыт работы с Unix-системами, владеть несколькими языками программирования (например, Python, Java, Scala), понимать основы распределенных систем, знать, что делать с большими данными в Hadoop, Spark, Kafka. Всего-то.

Качества, необходимые дата-инженеру

  • Способность и желание учиться. Человек должен уметь быстро переключаться на новую для себя область и также быстро в ней развиваться. Иначе не успеть за прогрессом технологий.
  • Любовь к автоматизации. Грамотный специалист умеет быстро и красиво упростить рутинную работу, чтобы не делать постоянно одно и то же, а только контролировать автоматический процесс.
  • Внимание к мелочам. К примеру, часто возникают ситуации, когда в конфигурационном файле появляется неверное значение, и система начинает работать неправильно. Внимательный инженер решит эту проблему быстрее.

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

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

Фото в материале и на обложке: архив компании

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 Монетизация Big Data: как бизнесу заработать на данных?
  2. 2 В России катастрофически не хватает инженеров данных – кому и зачем они нужны
  3. 3 Кто такой дата-сайентист и как им стать