BI-инструмент от Яндекса DataLens — теперь в опенсорсе

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Сегодня мы опубликовали на GitHub под открытой лицензией Apache 2.0 исходный код Yandex DataLens — сервиса для анализа и визуализации данных. Теперь использовать опенсорс‑версию DataLens может любой желающий и в любой инфраструктуре.

Меня зовут Павел Дубинин, вместе с Гаджи Гаджиевым мы в Yandex Cloud занимаемся развитием DataLens. Сегодня расскажем, какие задачи он помогает решать разным пользователям, какие возможности открываются с выходом в опенсорс и что можно развернуть у себя прямо сейчас.

Что такое DataLens 

DataLens — это BI‑инструмент, c помощью которого можно подключиться к источнику, описать модель данных, создать визуализации, собрать дашборд и поделиться результатом с командой.

Пример дашборда, который можно построить в DataLens
Пример дашборда, который можно построить в DataLens

С самого начала он развивался одновременно как внутренний инструмент в Яндексе и как cloud‑native‑решение для клиентов Yandex Cloud.

DataLens внутри Яндекса — это корпоративный стандарт для визуализации бизнес‑аналитики. Сейчас в нашей компании с данными регулярно работают больше 35 000 сотрудников всех сервисов: поискового портала, Yandex Go, Маркета, Карт, медиасервисов и всех остальных — и с аналитикой им помогает DataLens. Если вы используете сервисы Яндекса, то наверняка тоже касались DataLens, например, изучая статистику оценок на Кинопоиске.

У каждого сервиса свои продукты, свои данные и гипотезы, так что нужен был гибкий инструмент. Чтобы добиться демократизации данных в такой большой технологической компании, мы сфокусировались на простоте и скорости работы, а не на ручных кастомизациях. Преимуществом для внутреннего пользователя стала интеграция c YTsaurus и ClickHousе — BigData‑системой и аналитической СУБД, которые являются у нас основными источниками для аналитики и с которыми другие BI так работать не умеют.

DataLens как сервис в Yandex Cloud насчитывает больше 100 000 экземпляров — это самостоятельные окружения конкретных команд или компаний. Ими пользуются компании разных отраслей и масштабов: небольшие технологические стартапы, крупные банки, федеральные розничные сети.

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

Концептуальная архитектура
Концептуальная архитектура

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

Зачем использовать DataLens

DataLens помогает быстро проверять гипотезы, отслеживать ключевые показатели и формировать отчётность. Несколько примеров наших пользователей:

  • «Магнит» на базе DataLens делает аналитику цифровых продуктов: программы лояльности, доставки. Как это работает, показывали на конференции Yandex Scale»22.

  • «ТрансКонтейнер» перенёс в DataLens отчётность для более 600 сотрудников. На дашбордах можно отслеживать перемещение вагонов и контейнеров, фиксировать простои перевозок — здесь их история от первого лица.

  • «Ренессанс Страхование» за три месяца полностью перевезли в DataLens аналитику по страховым объектам и страховым случаям. В BI‑системе работают почти все подразделения компании.

  • SkyEng перевезли 7 ТБ данных AWS на Yandex Cloud и построили в DataLens аналитику для 1000 пользователей.

Опыт наших внутренних заказчиков может пригодиться и другим компаниям, так что поделимся и этими сценариями. Интересная история у Яндекс Маркет и Yandex Go. Исторически обе команды использовали для core‑отчётности Tableau. Когда появился DataLens, в него сначала перешла отчётность для массовых ролей (поддержка, внештатные сотрудники, работники складов) — это было дёшево и удобно. Чуть позже у обеих команд назрела необходимость миграции, и за три месяца они перенесли в DataLens более 700 отчётов для 4000 пользователей. Как это было в деталях, мы тоже рассказывали на Yandex Scale 2022.

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

Для чего развивать сообщество 

Со старта проекта мы развивали BI‑экспертизу среди пользователей: чем больше людей понимают, как с DataLens решать свои задачи, тем больше интересных сценариев — это двигает вперёд как сам проект, так и индустрию в целом. Для этого мы запустили несколько образовательных инициатив: провели BI‑марафон Data Yoga, несколько хакатонов, создали курсы по анализу данных на Нетологии и на Яндекс Практикуме и многое другое. Благодаря этому с 2020 года сообщество DataLens растёт: сейчас там больше 6500 человек.

Центр экспертизы уже сместился в сторону продвинутых пользователей: специфические решения и нетривиальные лайфхаки эффективнее искать не в продуктовой команде, а в сообществе. Порой мы сами удивляемся разнообразию задач и идеям. Активные участники делятся не только кейсами, но и практическими решениями: например, как собрать статистику из Telegram‑чатов или выбрать для разных задач правильную аналитическую функцию: агрегацию с детализацией или оконные функции. А один автор даже написал про DataLens книгу. Наcтоящую, печатную!

Почему опенсорсим

Выход в опенсорс — это следующий шаг в развитии DataLens. Так мы можем вовлечь в сообщество не только пользователей и аналитиков, но и разработчиков. Больше людей смогут вносить свой вклад в продукт напрямую, а его развитие не будет ограничиваться нашими ресурсами. Заказчики смогут разворачивать продукт на своём железе, не опасаясь облачного вендорлока, а также строить data‑экосистемы на базе нескольких опенсорс‑продуктов, например: YDB + YTsaurus + CHYT + Clickhouse + DataLens. Так мы способствуем открытости и развитию рынка российского BI.

Что важно, в качестве основного разработчика остаётся всё та же команда: UX, дизайн, аналитики, эксперты рынка. Мы создаём опенсорс‑продукт коммерческого уровня и будем и дальше в него вкладываться.

Преимущества от выхода в опенсорс получат все:

  • Заказчики смогут дорабатывать DataLens по своим требованиям и быть гибкими в выборе инфраструктуры.

  • Для партнеров это дополнительные возможности развития собственной экспертизы и реализации кастомных проектов внедрения.

  • IT‑вендорам это поможет использовать DataLens в собственных продуктах.

  • Сообщество BI‑разработчиков может стать контрибьютором в продукт.

Как технически устроен выход в опенсорс 

DataLens развивался по пути, стандартному для многих проектов в Яндексе: мы старались по возможности использовать принятые в индустрии технологии, но при этом всё равно зависели от внутренних библиотек и инфраструктуры.

На бэкенде мы используем стандартные для индустрии Python 3, aiohttp и sqlalchemy, однако разработка и сборка была глубоко завязана на монорепозиторий Яндекса.

Когда мы планировали публиковать исходный код, то сразу решили, что «source of truth» будет находиться в опенсорсе, а не во внутреннем репозитории. В этом случае разработчики сервиса работают в рамках доступных всем пул‑реквестов так же, как это делают внешние контрибьюторы. Так мы не просто открываем исходный код — мы делаем разработку продукта более открытой.

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

Перед открытием проекта предстояло убрать из кода всю внутреннюю специфику: вызовы библиотек, логику для работы с другими внутренними сервисами, некоторые части интерфейса и конфиги для наших окружений, таких как инсталляции DataLens в Yandex Team и Yandex Cloud.

Фактически, каждый из наших сервисов состоит из двух частей: опенсорс‑ядра, доступного теперь всем и closedsource‑расширений, которые оборачивают ядро, добавляя недостающие функции и специфику.

Самый очевидный пример — интеграция с системами аутентификации. На старте мы релизим опенсорс-версию без мультиюзерности и ACL, но в коде уже есть необходимые точки расширения: closedsource-часть использует их для интеграции с Yandex ID и Yandex Cloud IAM. Расширения позволяют модифицировать как серверную логику обработки запросов, так и интерфейс.

Со временем планируем сформировать API для плагинов и документировать его, открыв тем самым путь к созданию экосистемы опенсорс-расширений для DataLens.

Для разработки интерфейсов внутри Yandex Cloud мы всегда использовали стандартные технологии для сборки и работы с зависимостями, но при этом зависели от ряда внутренних библиотек. К счастью, параллельно с нами развивалась дизайн-система и наборы компонент от Gravity UI (о ней расскажем подробнее в ближайшее время) — и большая часть наших зависимостей также выехала в опенсорс.

Как и что можно развернуть у себя

Чтобы запустить DataLens локально, достаточно поднять несколько контейнеров через docker compose:

git clone https://github.com/datalens-tech/datalens
cd datalens && HC=1 docker compose up

После этого вы сможете: 

  • открыть интерфейс, 

  • изучить демо-примеры,

  • подключить источники,

  • построить свои дашборды. 

В первый релиз открытой версии входит всё необходимое, чтобы опробовать возможности DataLens на своей инфраструктуре. Сейчас в репозитории опубликовано ядро сервиса, набор основных коннекторов (PostgreSQL, ClickHouse и YTsaurus) и основные части интерфейса.

Мы понимаем, что это только первый шаг и впереди ещё много работы, но это важный для нас момент: открытие исходного кода принципиально меняет подход к поддержанию и развитию сервиса. Скоро на GitHub появится Roadmap по развитию опенсорсного DataLens, в котором мы учтём и фидбэк сообщества.

Теперь мы не просто разрабатываем сервис, а создаем открытый BI‑продукт — и делаем это вместе с вами.

Источник: https://habr.com/ru/companies/yandex/articles/762486/


Интересные статьи

Интересные статьи

Сайты госорганов начали избавляться от россыпи счетчиков и прочего кода, собирающего «аналитику» об их посетителях для третьих лиц. Почему государство выпинывает на мороз интернет-шпионов и причем т...
Привет! Меня зовут Сергей Кляус, и я как разработчик виртуальной сети сопровождаю создателей приложений, размещённых в Yandex.Cloud. При этом диагностические возможности самого облака ограничены: мы н...
В этот блок выдачи могут попасть только сервисы группы юрлиц Яндекса Я уже несколько постов разбираю наше обращение в ФАС по поводу интеграции поиска Яндекс с различными сервисами Ян...
Мини-компьютер Raspberry Pi был создан для обучения и экспериментов. Но с 2012 года «малинка» стала гораздо более мощной и функциональной. Плату используют не только для обучения, н...
В предыдущей серии: мы составили подборку советской мультипликационной научной фантастики. Собрали комментарии о тех мультфильмах, которые не вошли в первую часть — и рассказываем о них сейча...