Как мы это сделали. Vizydrop — сервис визуализации данных

2 февраля 2016, 12:02

Компания Taucraft, создавшая небезызвестную систему управления проектами Targetprocess, недавно представила свой новый продукт. Это сервис визуализации данных Vizydrop. О его разработке dev.by рассказал руководитель продукта Олег Серяга.

Читать далее

Идея

— В наше время доступно множество инструментов, каждый из которых решает определённые проблемы. Google Analytics предназначен для сбора и анализа статистики посещаемости и использования сайта, TeamCity или Jenkins — для сборки и тестирования, SalesForce — для работы с клиентами и заказами, Targetprocess или Jira — для управления разработкой, NewRelic или Datadog — для мониторинга состояния серверов, UserVoice или ZendDesk — для работы с клиентами, GitHub — для работы с исходным кодом…

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

Нам пришла в голову идея создать инструмент, который сможет легко извлечь данные из приложений, где они хранятся, а затем также просто позволит эти данные визуализировать и по-возможности построит графики автоматически. Иными словами, пользователь даёт доступ к источнику данных — и Vizydrop предлагает список готовых к использованию чартов. Можно доработать визуализацию самостоятельно с помощью простого и интуитивно-понятного редактора. При этом не нужно заботиться об обновлении данных для визуализаций — это происходит автоматически.

Цели и задачи

Реализация идеи нам показалась интересной. Привлекала возможность создания инструмента для решения проблем, которые испытываем прежде всего сами. Всегда существует вероятность, что схожие проблемы могут испытывать и другие люди. К тому же сама по себе разработка такого рода инструмента позволяет нарастить опыт в области визуализации данных, статистики и машинного обучения. Выбранные для разработки Vizydrop технологии и стек отличаются от тех, которые мы используем в разработке Targetprocess.  

Планирование

Началось всё с того что, несколько лет назад я описал идею в виде скетчей, оценил примерное количество людей и время, необходимые для запуска первого рабочего прототипа. Taucraft приняла решение о старте нового продукта.

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

Мы решили, что для реализации пилотной версии не нужна большая команда. На данный момент это четыре разработчика, тестировщик, верстальщик и дизайнер. Первые работали с full-time-загрузкой, остальные — part-time. Хотелось набросать прототип и проверить интерес пользователей, как можно быстрее получить фидбэк. Сейчас продукт как раз находится на этой стадии.

Разработку продукта мы решили разбить на несколько фаз:

  1. Анализ данных на уровне примитивных типов и их хранение. Автоматические обновление данных. Алгоритм рекомендаций графиков, основанный на наборе статистических эвристик. Платформа, позволяющая импортировать данные из внешних систем и коннекторы к популярным инструментам. Базовый пользовательский интерфейс.
     
  2. Алгоритм распознавания домена входящих данных. Расширенные возможности трансформации и обработки данных, включая формулы, распознавание мета-данных. Усовершенствованный алгоритм рекомендаций графиков, основанный на машинном обучении. Автоматическое комбинирование визуализаций. Анализ и визуализация изменений динамических данных. Расширенные возможности редактирования чартов.

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

Разработка

На стек продукта можно глянуть здесь.

C точки зрения архитектуры Vizydrop представляет собой набор микросервисов, каждый из которых разрабатывается и может быть использован автономно. Для удобного деплоймента, масштабирования и разработки мы используем Docker. TeamCity — для сборки образов Docker и запуска тестов. В случае удачной сборки выкладываем образы в quay.io, которые затем развёртываются в Digital Ocean. Мы также разработали утилиту, которая позволяет выполнять обновление и масштабирование сервисов независимо друг от друга.

Вкратце перечислю наши сервисы.

  • Сервис хранения и анализа данных написан на Python. В качестве базы данных используется Postgre.
  • Сервис построения рекомендации графиков по набору статистических эвристик разработан на Python + Pandas.
  • Платформа импорта данных из внешних источников (Python + MongoDB).
  • Сервис front-end и хранение конфигураций чартов (NodeJS + React + MongoDB).
  • Сервис генерации картинок предпросмотра для графиков (QT).

Сложности

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

Vizydrop автоматически определяет формат входящих данных, распознаёт типы независимо от формата и языка. Но это в свою очередь сказывается на производительности. Оптимизация отнимает какую-то часть времени. Довольно сложной оказалась задача по построению рекомендаций чартов с использованием эвристик. Текущий алгоритм учитывает связи между данными, выясняет тренды. Зачастую пользовательские данные лишены каких-то закономерностей, что приводит к несовершенному списку рекомендованных графиков. По-прежнему работаем над этим и постоянно улучшаем, но выглядит так, что задача сможет быть решена в полной мере только после добавления машинного обучения к рекомендательному процессу.

Поскольку работали в режиме прототипирования, то некоторые сервисы придётся переработать в скором времени. Это касается прежде всего UI-слоя.

Итоги

После года работы над первой версией Vizydrop мы достигли почти всех намеченных для этой фазы целей. Сейчас собираем отзывы пользователей, чтобы выяснить, что мы упустили и какую функциональность следует добавить в продукт. Было разработано гибкое и масштабируемое с точки зрения архитектуры и деплоймента решение.

На данный момент продукт бесплатный. О его монетизации говорить рано.Сначала необходимо реализовать до конца задуманное, собрать базу пользователей.

Перспективы

Следующий год мы намерены посветить плотной интеграции в флагманский продукт компании Taucraft. Таким образом разработанный в Vizydrop редактор чартов и возможности по визуализации данных из внешних источников можно будет использовать в Targetprocess. Также будем совершенствовать возможности по редактированию и настройке созданных визуализаций. Добавим дополнительные опции импорта данных из популярных приложений и инстументов. В планах — разработка ещё одного сервиса, который позволит визуально анализировать изменение данных во времени.

Полезные ссылки


А как ВЫ это сделали

Хотите вынести ваш продукт на суд наших читателей? Пишите на editor at dev.by.

Обсуждение