Сегодня мы опубликовали на GitHub под открытой лицензией Apache 2.0 исходный код Yandex DataLens — сервиса для анализа и визуализации данных. Теперь использовать опенсорс‑версию DataLens может любой желающий и в любой инфраструктуре.
Меня зовут Павел Дубинин, вместе с Гаджи Гаджиевым мы в Yandex Cloud занимаемся развитием DataLens. Сегодня расскажем, какие задачи он помогает решать разным пользователям, какие возможности открываются с выходом в опенсорс и что можно развернуть у себя прямо сейчас.
Что такое DataLens
DataLens — это BI‑инструмент, c помощью которого можно подключиться к источнику, описать модель данных, создать визуализации, собрать дашборд и поделиться результатом с командой.
С самого начала он развивался одновременно как внутренний инструмент в Яндексе и как 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‑продукт — и делаем это вместе с вами. Будем рады видеть вас на новых мероприятиях и в нашем комьюнити.