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.

Похожие статьи:
[Об авторе: Владимир Железняк — 17 лет в отрасли, программировал, менеджерил, директорствовал, имел свой бизнес. Провел и прошел кучу...
У найближчий тиждень сім великих банків готуються підписати між собою меморандум про посилення обмежень карткових переказів....
Американська корпорація Microsoft тимчасово зупиняє продаж своїх товарів і надання послуг у росії, вочевидь, через її військове...
Всем привет! В августе вышла стабильная версия Rails 5.2.1, а популярный тест-фреймворк RSpec обновился до версии 3.8. Сообщество Ruby...
Привет, меня зовут Влад, и я ... (нет, не то, что ты подумал) я — тимлид. «Войти в АйТи» случилось со мной в 2010 году на позиции...
Яндекс.Метрика