Как мы импортировали из Miro почти 17 млн объектов за 5 дней

Привет! Меня зовут Виктор, я один из основателей holst.so — мы разрабатываем качественную альтернативу Miro.

Сегодня я расскажу, как мы помогаем полностью переносить миллионы различных объектов с досок в Miro на нашу платформу.

После объявления Miro о блокировке российских аккаунтов перед нами встала амбициозная задача — предоставить достойную альтернативу и максимально качественный импорт, который позволил бы продолжить работу с досками и сохранить наработанные данные.

Как мы импортировали из Miro почти 17 млн объектов за 5 дней

Эта масштабная задача состоит из трёх частей:

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

Давайте по порядку разберёмся, как мы решили каждую из этих задач.

Импорт данных из Miro

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

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

Пример доски в Миро с множеством различных элементов 
Пример доски в Миро с множеством различных элементов 

Пришлось найти обходной путь: мы остановились на браузерном расширении, позволяющее пользователю зайти на свою доску и выгрузить данные, которые на ней представлены.

Понять, как и где Miro хранит данные, было несложно, но учесть все мелкие нюансы — оказалось нетривиальной задачей. За 10 лет развития команда Miro несколько раз меняла схему хранения данных своих элементов. Для каждой из этих схем нужно было найти пример, иначе такие бы доски переносились некорректно! Спасибо всем, кто поделился с нами своими досками в нашем Telegram-канале

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

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

Holst как замена Miro

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

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

Вот как выглядит импортированная доска с изображения выше к нам в Холст
Вот как выглядит импортированная доска с изображения выше к нам в Холст

Функции, которых у нас пока нет, мы не хотели просто пропускать, поэтому искали компромиссные решения. Например, майндмэпы мы заменили на текст со стрелками, элементы embed — на внешние ссылки, а PDF — на ярлыки файлов.

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

Работа с большими досками без лагов

Вы когда-нибудь видели доски с 30-50 тысячами элементов? Обеспечить высокую производительность на таком объёме — это фундаментальный вызов. Для его решения нужно либо идти на компромиссы с пользовательским опытом, либо глубоко погружаться в технические аспекты рендеринга. К счастью для наших пользователей, мы выбрали второе.

Мы начали заниматься разработкой собственных эффективных решений для рендеринга на видеокарте ещё задолго до создания доски — и это наше огромное преимущество. Наш главный вдохновитель в этих вопросах — Figma. Мы очень надеемся когда-нибудь превзойти их!

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

Как мы импортировали из Miro почти 17 млн объектов за 5 дней
Как мы импортировали из Miro почти 17 млн объектов за 5 дней

Наш опыт переноса данных из Miro

С помощью нашего решения мы перенесли из Miro в Holst более 7000 досок разного размера и больше 16 миллионов объектов всего за два дня.

На диаграмме ниже можно посмотреть, как перенесённые объекты распределяются по видам. Почти треть из них — рисунки. Как я уже упоминал, эти элементы, как и многие другие, стандартным способом API Miro импортировать не позволяет.

Распределение по типам перенесённых объектов
Распределение по типам перенесённых объектов

Доски очень сильно варьируются по размеру. Одна треть содержит больше 1 000 объектов, а 19 гигантов — больше 30 000 объектов.

Распределение по размеру импортированных досок
Распределение по размеру импортированных досок

Если вы ищете замену Miro, у вас много важных данных, за доступность которых вы переживаете, вам важна производительность и качество инструментов — приходите к нам в Holst. Мы вас приятно удивим!

До 1 октября вы сможете использовать сервис полностью бесплатно, после — по одному из нескольких тарифов. Их можно посмотреть тут.

2727
66
21 комментарий

пацаны вообще ребята. супер импорт и очень удобный

3
Ответить

Самый перспективный и топовый продукт сейчас среди всех, имхо. Ещё и фигму если запилят, как изначально хотели — будут максимальные красавчики!

1
Ответить

Спасибо за приятные слова!

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

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

Сейчас пользуемся возможностью обкатать всё на доске. Если мы выпустим свою "лагающую фигму" - нас сожрут =), а к доске ожидания ниже, да и не уступаем самому миро по производительности)

3
1
Ответить

🔥 планируется ли до октября реализовать функцию группировки объектов на разных слоях с сохранением порядка слоев (чтобы не переносились на один уровень)?

1
Ответить

Текущее поведение - наше наследие от Figma, где группа является фактически отдельным элементом, с собственным порядком. За счет этого мы выигрываем в различных других аспектах.

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

1
Ответить

вроде хорошо, молодцы! только шаблонов нету под разные задачи, и графиков...

1
Ответить