DOU Labs: як EPAM створив DLab — інструментальний сервіс для фахівців Data Science

В рубриці DOU Labs ми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Я — Software Engineering Manager та керівник внутрішніх проектів EPAM Big Data Competency Center. Вже більше 10 років я працюю в ІТ-індустрії на проектах з різних бізнес-доменів: retail, finance, travel & hospitality, e-commerce тощо. У цій статті хочу більш докладно розповісти про проект — DLab. Його призначення підкреслює гасло: «Let your data scientist think about data and nothing but data».

Ідея

Як правило, такі продукти, як DLab, ініційовані потребами ринку, коли не вистачає якісних інструментів, або ж де ціна та політика ліцензування комерційних продуктів стримують розвиток галузі.

Сьогодні більшість компаній, котрі еволюціонують в «digital», частіше вдаються до аналізу внутрішніх та зовнішніх даних. Різноманіття вхідних даних та їхні обсяги, захист даних, наявність «sensitive» інформації, відсутність обчислювальних потужностей, інструментарію та можливості «експерементувати» з даними, не боячись «покласти» інфраструктуру та втратити дані, — унеможливлюють будь-яку аналітику та ускладнюють роботу data science та machine learning експертам.

Власне з цих та інших причин ми створили DLab — інструментальний акселератор у вигляді self-service для Data Scientist-ів, котрий допомагав би їм швидко розгортати потужні аналітичні «пісочниці» в «клаудах» без жодних DevOps-навиків. При потребі користувачі можуть додавати обчислювальні потужності, використовувати зручний інтерфейс для встановлення додаткових бібліотек та залежностей, взаємодіяти в межах команди та водночас не перейматися за безпеку середовища та даних.

Наш продукт є крос-платформеним та може встановлюватись на Amazon, MS Azure та Google Cloud. Задача DLab — забезпечити можливість data scientist-ам брати участь у проектах на стадії аналізу, пришвидшувати прийняття аналітичних рішень, не чекаючи моменту, коли остаточна інфраструктура буде доступною та архітектура буде узгоджена.

Чому вирішили зробити продукт open-source? За своєю суттю, DLab — такий собі оркестратор або панель керування, що поєднує безліч інструментів. Всі інструменти, технології та фреймворки, які увібрав у себе DLab, є у відкритому доступі: MongoDB, Docker, Angular, Jupyter, Zeppelin, RStudio, Git, LDAP, Python, Spark, Scala тощо. Ми вирішили розробити DLab як систему з відкритим кодом і під відкритою ліцензією (Apache 2.0), щоб допомогти іншим розробникам, data scientist-ам, фахівцям з machine learning зосередитись на обробці даних, тренуванні моделей та дослідженні даних, не переймаючись комерційною стороною продукту та проблемами ліцензування.

Команда

Розробка DLab стартувала в грудні 2016 року, коли наші колеги з EPAM Data Practice побачили потребу в такому рішенні. Зараз в команді працює три devops-інженери, front-end розробник, java-розробник, інфраструктурний архітектор і проектний менеджер. Вся команда знаходиться у Львові. Більшість вимог та побажань була сформована спеціалістами Data Science та Machine Learning, також ми тісно співпрацювали з фахівцями з інших галузей. Продукт є вже достатньо зрілим (10 релізів за 1 рік), але водночас «живим» — він постійно вдосконалюється.

Проектна команда DLab

Можливості сервісу

DLab — це self-service, кінцевими користувачами якого є безпосередньо Data Scientists. Але і працівники суміжних спеціалізацій або просто члени однієї команди, наприклад QA/QC інженери чи інші фахівці, які працюють з даними, також можуть вільно ним користуватися. Розгорнувши продукт у хмарі (Amazon, MS Azure та незабаром у GCP), вони отримують робоче середовище з простим та зрозумілим веб-інтерфейсом.

Ключові можливості DLab:

  • інтеграція з необхідними для роботи аналітичними інструментами, такими як Jupyter, Zeppelin, RStudio, TensorFlow, Spark тощо;
  • підтримка різних мов програмування (Python, Scala, R, Java);
  • можливість встановлення різноманітних бібліотек та фреймворків;
  • можливість під’єднати Spark кластер (або ж Cloud Data Engine, такий як EMR на AWS, Data Proc на GCP, HDInsight на MS Azure) і додати обчислювальних потужностей, коли потрібно обробляти великий обсяг даних і локальних ресурсів не вистачає;
  • інтеграція з Azure Data Lake;
  • безпека даних at rest та in motion;
  • аутентифікація через LDAP, Cloud Identity Management Services, SSO;
  • персональні та спільні сховища даних (AWS S3, Azure Blob storage, Azure Data Lake, Google buckets);
  • фінансові звіти по утилізації клауд-середовища;
  • можливість використання Spot Instances, Low priority та Preemptible VMs для економії коштів на AWS, Azure, GCP інфраструктурі відповідно.

DLab дає можливість ефективної роботи як для індивідуальних користувачів, так і для команд, надаючи спільний та водночас закритий від інших репозиторій. Безпека даних, захищений доступ, «сек’юрний» периметр гарантують будь-якому розробнику те, що його дані «не витечуть» на зовні.

Що всередині

Щоб зрозуміти, як працює DLab, пропонуємо розглянути діаграму з логічною архітектурою та головними компонентами сервісу (на прикладі AWS реалізації):

На діаграмі представлені основні компоненти DLab. Так виглядає розгорнута інфраструктура та візуалізована взаємодія між елементами системи.

Головні компоненти сервісу:

  • Self-service node (SSN);
  • Edge node;
  • Notebook node (Jupyter, Rstudio, Zeppelin, etc.);
  • Data engine cluster;
  • Data engine cluster as a service provided with Cloud.

Self-service node (SSN)

Створення Self-Service node — це перший крок для розгортання сервісу DLab. Саме SSN є базовою нодою, з якої починається встановлення середовища. Вона містить такі ключові сервіси та компоненти:

  • DLab Web UI — веб-інтерфейс користувача для управління всіма компонентами DLab;
  • MongoDB — база даних, яка містить частину конфігурації DLab, персональні налаштування користувача, системні метадані;
  • Docker — застосовується для розгортання інфраструктури;
  • Jenkins — встановлюється на SSN ноду та може використовуватись для менеджменту інфраструктури як альтернатива Web UI.

Edge node

Створити Edge node — це наступний крок, який користувачеві потрібно зробити після входу в DLab. Він використовується як проксі-сервер та шлюз SSH для користувача. Завдяки Edge node користувачі можуть отримати доступ до Notebook через HTTP і SSH. Edge Node має попередньо встановлений веб-проксі-сервер HTTP.

Notebook node

Наступний крок — налаштування Notebook node (або Notebook server). Це сервер з попередньо встановленими програмами та бібліотеками для обробки даних, очищення та перетворення даних, математичного моделювання, Machine Learning тощо.
Аналітичні інструменти DLab, які інсталюються на Notebook node:

  • Jupyter
  • RStudio
  • Zeppelin
  • TensorFlow + Jupyter
  • Deep Learning + Jupyter.

Також Apache Spark встановлюється для кожного з аналітичних інструментів, зазначених вище.

Data engine cluster

Після розгортання Notebook node користувач може створити для нього такі кластери:

  • Data engine — автономний Spark кластер.
  • Data engine service — платформа клауд-кластерів (EMR для AWS, HDInsight для MS Azure або ж Google Dataproc). Це спрощує використання Hadoop та Apache Spark під час процесу обробки та аналізу величезної кількості даних. Додавати кластер необов’язково і потрібно лише у випадку, якщо для задача потребує додаткових обчислювальних ресурсів.

Досвід використання DLab

Ми вже встановили DLab для кількох клієнтів EPAM, протестували його на внутрішніх проектах в середовищах AWS і Azure. Зараз активно розробляється та тестується інтеграція з GCP.

Крім встановлення та налаштування DLab замовнику, ми проводимо воркшопи та тренінги. Команда неодноразово робила Proof Of Concept, інтегровуючи DLab в екосистему замовника, або ж на ізольованому середовищі. Подібні консультації, тренінги та загалом спілкування з замовниками — надзвичайно корисні, оскільки нерідко трапляється ситуація, коли замовник постійно отримує величезний потік даних (з сайтів, внутрішніх та зовнішніх сховищ та сервісів, різноманітних логів, відгуків користувачів в соціальних мережах, баз даних тощо), проте не завжди розуміє, як і яку користь ці дані можуть йому принести.

Ми завжди отримуємо зворотній зв’язок від аналітиків та machine learning експертів наших клієнтів, які використовують DLab для внутрішніх потреб. Такі фідбеки зазвичай переростають у реалізацію нового функціоналу або ж у покращення того, що вже існує.


Якщо вас зацікавила розробка DLab і ви хочете приєднатися до проекту на волонтерських засадах, ознайомтеся, будь ласка, із файлом — CONTRIBUTING.md. Ми співпрацюватимемо зі спеціалістами з будь-якими знаннями та вміннями, які готові удосконалювати веб-інтерфейс, документацію, код, писати тести або ж просто вносити пропозиції та реалізовувати їх у середовищі DLab.

Докладну інформацію про архітектуру, можливості та особливості розгортання DLab можна знайти в корені проекту чи в навчальних відео на DLab Community. Також ви можете завітати на сайт проекту — DLab.

Похожие статьи:
[В рубрике «Как я работаю» мы приглашаем гостя рассказать о своей работе, организации воркспейса, полезных инструментах...
Эта серия статей предназначена для стойких духом инженеров — в ней мы рассмотрим существующие NoSQL технологии,...
Внаслідок російської ракетної атаки на Суми 13 квітня 2025 року зазнав значних руйнувань Сумський державний...
10 серпня видання AIN повідомило, що мережа побутової техніки та електроніки «Ельдорадо» проводить...
У випуску: огляд функціональних можливостей Python, про переїзд репозиторія cPython на GitHub, бібліотеки...
Яндекс.Метрика