Data-driven підхід — один із ключових способів прийняття рішень у бізнесі. Він дозволяє швидко реагувати на зміни, перевіряти гіпотези, знаходити точки зростання та слабкі місця. Згідно з дослідженням, 88% компаній збільшили інвестиції у технології, повʼязані з корпоративними даними та аналітикою 2022 року. Вивчаючи величезні масиви даних, аналітики та дата-саєнтисти творять дива — знаходять інсайти та причинно-наслідкові звʼязки, прогнозують поведінку користувача та розробляють моделі, щоби персоналізувати його досвід. Ця магія неможлива без дата-інженера. Ми поговорили з Давидом Семенюком, Data Engineer в Headway, партнерській компанії Genesis, та дізналися, у чому полягає його роль, ключові навички та компетенції.
Суть роботи Data Engineer
У міру зростання кількості даних у проєкті та продукті, з’являється необхідність ними керувати. Перш за все їх треба «витягнути» з різних джерел та «подружити» між собою. Data Engineer забезпечує релевантними даними команди, які в них зацікавлені — аналітиків, фінансистів, менеджерів, розробників або навіть кінцевих користувачів.
«Розглянемо цей процес на прикладі рекламних кампаній в Facebook. Для того, щоб оцінювати їхню ефективність, треба як мінімум відстежувати статистику за витратами різних кампаній, груп оголошень, або, навіть, окремих оголошень. Водночас бажано, щоби дані оновлювалися в реальному часі, або наближено до нього, — пояснює Давід Семенюк. — Facebook же має ліміти на запити до цих даних, при цьому інженер має свою часові рамки, щоб їх отримати. Коли йдеться про багатотисячні рекламні бюджети, маркетологам важливо якомога швидше приймати рішення і мати постійний доступ до інформації. При цьому щодня даних ставатиме все і більше. І якщо не подбати про їхнє ефективне збереження, то з кожним днем зростатимуть витрати на інфраструктуру. Також ці дані потрібні аналітикам, і це буде тягнути за собою додаткові витрати на запити до цих даних».
Отже, завдання дата-інженера — подбати про збереження, обробку та доставку даних з одного місця в інше, щоби аналітик, маркетолог чи інший спеціаліст могли в будь-який момент зробити запит до бази даних та отримати швидкий релевантний результат. Також серед компетенцій такого співробітника — розбудова та дизайн аналітичного сховища даних.
До якої команди входить Data Engineer? Існують різні варіанти взаємодії. Загалом Data Engineering — досить самостійна та окрема ланка. Іноді вона може бути частиною бекенд, аналітичної та продуктової команди або ж функціонувати окремо на рівні проєкту.
«Деякі команди справляються без дата-інженерів та закривають внутрішні проблеми завдяки розробникам, або навіть дата-аналітикам. Цей підхід має право на існування, але в розробника не завжди є час і бажання, щоби розбиратися в ефективних інструментах, а в дата-аналітика не вистачає технічних знань, щоби побудувати систему, яка буде стабільно працювати», — пояснює Давід.
Потреба в дата-інженері є не лише у компаній, що працюють з Big Data. Якщо проєкт не генерує щодня великі масиви даних, то за кілька років усе одно наберуться терабайти, які також треба правильно зберігати та обробляти.
Пайплайни, ETL/ELT та Data Lake
Пайплайн у дата-інжинірингу — це послідовність етапів обробки даних. Data Engineer відповідає за створення нових та стабільну роботу поточних пайплайнів, управління, моніторинг, алертинг, безпеку. Ще одна його відповідальність — визначення методу та архітектури місця збереження даних.
Кожен пайплайн містить такі етапи:
Збір даних із різних джерел.
Обробка: очищення, видалення дублікатів, конвертація, фільтрація, структурування через ETL або ELT тощо.
Збереження даних у відповідних сховищах — Data Warehouse або Data Lake.
Аналіз: виконання запитів та візуалізація.
Пайплайни можуть бути складнішими та містити більше етапів, залежно від потреб проєкту.
Щоби структурувати дані, використовують методи ETL (extract-transform-load) або ELT (extract-load-transform). Основна відмінність між ними полягає в послідовності завантаження даних та їх трансформації. У ETL дані трансформуються перед завантаженням у систему призначення. У ELT — трансформація відбувається в системі призначення.
Data Warehouse та Data Lake — це два підходи до зберігання та обробки даних. Data Warehouse — централізоване сховище, де зберігаються структуровані дані. Data Lake — сховище для зберігання різнорідних даних — структурованих, напівструктурованих та неструктурованих. Другий тип обирають, коли потрібно зберегти «сирі» дані в такому вигляді, як вони надійшли в систему. Зазвичай такими сховищами користуються дата-саєнтисти, яким для побудови моделей потрібні великі масиви даних.
Чим відрізняються обов’язки дата-інженера, дата-аналітика та дата-саєнтиста
Часом роботу дата-інженера ототожнюють із дата-саєнтистом та дата-аналітиком. Якщо кілька років тому ці спеціальності дійсно перетиналися, то нині вони мають різний стек технологій та обов’язків, хоч і працюють разом.
Data Analyst займається вибіркою, обробкою та аналізом даних з метою пошуку ефективних бізнес-рішень. Використовує такі інструменти як Excel, SQL, Tableau тощо.
Data Scientist займається розв'язанням складних завдань, пов'язаних з обробкою та аналізом великих обсягів даних, з допомогою алгоритмів машинного навчання та інших методів штучного інтелекту. Використовує такі інструменти як: SQL, Python, R, Pandas тощо.
Data Engineer створює основу для їхньої роботи, надаючи підготовлені дані у тому форматі, який буде оптимальним для виконання завдання. Використовує такі інструменти як Python та (або) Scala, SQL, NoSQL, Spark, хмарні технології тощо.
«Найчастіше процес роботи побудовано так: дата-аналітик приходить із запитом релевантних даних до дата-інженера, який своєю чергою дістає, обробляє та заливає їх у сховище. Дата-саєнтист — це людина, яка будує прогнози, створює моделі, навчає нейромережі за допомогою «сирих» даних, які надає дата-інженер. Він також залучається до процесів обчислення», — пояснює Давід Семенюк.
Як стати дата-інженером та які навички для цього потрібні
Data Engineer — це поєднання декількох професій: Software Engineer, Cloud Engineer та Database administrator.
Software Engineer займається проєктуванням, розробкою, тестуванням та підтримкою програмного забезпечення;
Cloud Engineer — це фахівець із розробки та підтримки хмарних інфраструктур, відповідає за розгортання, налаштування та керування хмарними сервісами;
Database Administrator відповідає за архітектуру та основні операції з даними: контроль доступу, резервне копіювання та відновлення даних, оптимізацію роботи баз даних тощо.
«Найчастіше переходять із позиції Software Engineer. Про свій досвід можу сказати, що я починав як BI Engineer, потім був Python Engineer, далі — Big Data Engineer, і зрештою потрапив у Headway на позицію Data Engineer», — розповідає Давід Семенюк.
Ключові хард-скіли Data Engineer:
Мови програмування, які використовуються в інженерії даних — Python та (або) Scala, SQL;
Технології для роботи з Big Data: NoSQL, Apache Spark, Apache Beam;
Хмарні технології: GCP, Azure, AWS;
Оркестрація: Airflow тощо;
Контейнеризація: Docker, Kubernetes;
Брокери для роботи зі стрімінгом: pub/sub, Kafka;
Розуміння побудови OLTP та OLAP систем.
Ключові софт-скіли Data Engineer:
вміння знайти спільну мову з колегами різних професій: розробник, аналітик, маркетолог тощо;
здатність пояснювати технічні концепції в доступній формі та слухати потреби різних стейкхолдерів;
допитливість та схильність до безперервного навчання.
«Ця сфера досить швидко розвивається, тому класною навичкою є вміння тримати руку на пульсі, постійно навчатися, читати, вивчати нові підходи. Враховуючи те, що спеціальність знаходиться на перетині декількох сфер, доводиться взаємодіяти з багатьма людьми різних спеціалізацій, треба вміти знаходити спільну мову з ними», — розповідає Давід.
Головні виклики та подальший розвиток кар’єри для Data Engineer
«На цій позиції доволі часто доводиться продумувати архітектуру та шукати рішення для побудови пайплайнів. Для однієї проблеми є багато різних інструментів — дані можна обробити, витративши багато ресурсів, або навпаки придумавши просте ефективне рішення, — ділиться Давід. — Для мене найцікавішими є задачі, коли потрібно працювати з великими даними в обмежених фінансових ресурсах».
Дата-інженер може зростати вертикально у своїй галузі — до Lead Data Engineer, Data Architect. Або ж розвиватися як менеджер до CTO, Head of Data, VP of Engineering тощо.
Тренд на цю спеціальність зростає. Деякі команди можуть повністю складатися з дата-інженерів, які самостійно закривають end-to-end проєкти. Такі команди можуть розробляти мікросервіси для кінцевих споживачів.