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

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

Компания 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.

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Горячие события

Gismart Online Meetup
9 декабря

Gismart Online Meetup

Минск

Читайте также

Программиста из Витебска осудили на 2,5 года. Он защищал участницу митинга от милиции
Программиста из Витебска осудили на 2,5 года. Он защищал участницу митинга от милиции
Программиста из Витебска осудили на 2,5 года. Он защищал участницу митинга от милиции
4 комментария
Министр информации: «Мы впервые оказались в состоянии информационной войны»
Министр информации: «Мы впервые оказались в состоянии информационной войны»
Министр информации: «Мы впервые оказались в состоянии информационной войны»
9 комментариев
Суд лишил TUT.BY статуса СМИ
Суд лишил TUT.BY статуса СМИ
Суд лишил TUT.BY статуса СМИ
1 комментарий
В BelitSoft сотрудникам компенсируют $100 в месяц за посещение психотерапевта
В BelitSoft сотрудникам компенсируют $100 в месяц за посещение психотерапевта
В BelitSoft сотрудникам компенсируют $100 в месяц за посещение психотерапевта
5 комментариев

Обсуждение

2

Полезная штука, особенно радует что бесплатно :)
А есть ли возможность нарисовать stream chart, наподобие такого: http://homes.cs.washington.edu/~jheer/files/zoo/stacked_graph.png
я так и не нашёл годного инструмента для таких чартов - то рисуют криво, то не умеют делать красивые подписи, приходится править в фотошопе что никуда не годится в 2016 году :)

Я бы посоветовал сделать большую библиотеку разных визуализаций, которые можно выбрать и использовать на своих данных.

4

Выглядит неплохо и даже работает, что прекрасно. Но все же хотелось бы каких-то более интересных и полезных деталей, вроде в чем состоит суть алгоритма "распознавания домена входящих данных". Вот это бы интересно было почитать.

А так молодцы, чо.

1

Алгоритма "распознавания домена входящих данных" пока ещё нет. Но идея состоит том, чтобы сравнивая данные из неизвестных источников с уже загруженными определять домен (финансы, управление проектами, маркетинг и т.д.) и предлагать пользователям чарты, релевантные для этого домена.

2

а как можно определить домен, сравнивая данные из неизвестных источников с уже загружеными?
я вот про это.

1. я загрузил данные, выбрал режим отображения X
2. затем загружая последующие данные, которые похожи на данные из пункта 1 система автоматом выбирает режим отображения Х?

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

я не тролю, я серьезно.

1

В общем виде всё действительно сводится к этим двум пунктам. Основную сложность я вижу в интерпретации понятия "похожи". Здесь можно остановиться на любом уровне сложности: от полного совпадения до сложного семантического анализа.

2

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

2

Это всё хорошо, но ещё лучше - сделать интеллектуальную визуализацию.
Разместить подписи на чартах *красиво* и читаемо, как это сделал бы человек.
Сделать выноски где надо. Догадаться, что большие "куски" на графике требуют подписей, а маленькие можно спрятать, не лепить одно на другое, сделать чтобы подписи не закрывали интересные места на графике.

Я сейчас пользуюсь infogr.am, они примерно то же самое предлагают. Интерактивные графики выглядят нормально, но распечатать их или вставить статической картинкой не получается.

0

.

uncle-elcnu
uncle-elcnu Engineer в iTechArt Group
0

Хорошая идея, на заметку разработчикам - обратите внимание на вашего конкурента от Microsoft PowerBI (Desktop или Online) - очень мощная штука для анализа данных и построения кучи динамический графиков.

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже