В рубриці DOU Labsми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на editors@dou.ua.
Я — 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.