Как мы создавали Miro и Zoom в одном флаконе

getLocus.io — чему мы научились за четыре месяца после релиза.

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

Пару слов о нашем продукте.

getLocus — интерактивная доска (whiteboard), поверх которой перемещаются аватарки с видеосвязью. Причём пространство доски имитирует комнаты — чем дальше аватарки друг от друга, тем меньше они друг друга слышат.

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

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

  • Мы про коммуникации «каждый с каждым», а не «говорящая голова со всеми». На нашей площадке удобно проводить QA-сессии и нетворкинги: пользователи могут «сбиваться» в пары-тройки-микрогруппы по интересам и быстро пересобираться в других составах.
    К примеру, организаторы DotFest пришли к такому формату — доклад спикера по ВКС, а затем общение и вопросы со спикером на нашей площадке.
Пространство для QA на DotFest CodeFest
  • Мы для удаленных команд. Акцент на интерактивную «доску» или «экран» или «планшет», аля miro. Виртуальная комната это место в котором можно собрать множество визуальных объектов (файлы. img,. png,. jpeg,. gif,. pdf, youtube–видео) и группировать их, например, описывая CJM. Можно шарить экран, можно рисовать схемы и формулы на доске и сохранять их в svg для отдельного редактирования.
Доска на семинаре в МФТИ Nicolas Borisov
  • Мы для психологов/тренеров/педагогов. Собственный аватар с видеосвязью имитирует физическое присутствие и ощущение собственных границ, что делает возможным проведение разных групповых форматов, ранее недоступных для онлайна.
    Преподаватели и студенты старших курсов факультета психологии МГУ имени М.В. Ломоносова сравнили для проведения тренингов «Zoom + Miro», «Minecraft + Discord» и getLocus.

GetLocus удобен для создания и развития на его основе специализированной тренинговой платформы. Совместными усилиями уже ведется работа по запуску spin-off «T-matrix». Проведена первичная интеграция c API getLocus. Формируется сообщество «цифровизаторов тренинговой практики».

Алексей Журавлев, CEO «T-Matrix», к.псх.н

Не обошлось без трудностей

Выявили проблему в коммуникации между CTO и продакт менеджером.
Для поиска решений подготовили парный доклад и выступили на DevOpsLive2020.

Рассказали о сложности фиксации и исправления багов в формате открытой дискуссии с экспертами и участниками. Беседа развивалась вокруг понятия «ошибка» и различении того, что считает ошибкой пользователь и продакт, и как она может быть интерпретирована разработчиками «из-под капота». Из полезного посоветовали почитать и подумать про DoD бага, test requirements, bdd (behavior-driven development).

Планируем написать об этом отдельную статью.

Неудачная архитектура

После релиза, клиенты стали проводить пробы с большим числом участников (от 20 одновременных подключений и больше). Только в этот момент к нам пришло осознание, что стартовая техническая задумка, организовать видеосвязь через p2p — провальна (кто бы мог подумать).
Заявленная мощность браузеров по числу одновременных p2p соединений оказалась в разы меньше заявленной и пользователям не удавалось подключиться сразу ко всем участником доски, а скорость подключения оказалась неприемлемой.

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

Серьезный трафик

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

Изучив проблему подробнее, пришли к выводу, что с такой проблемой в той или иной мере сталкиваются ~11% наших юзеров. Проблема была вызвана потерей «пакетов», за которым следовала потеря связи на доли секунды. А вот дальнейшее переподключение уже занимало несколько секунд, что негативно сказывалось на пользовательском опыте.

Такое часто случается на старых wi-fi роутерах или когда не очень надежный интернет-провайдер. При этом, скорость интернета может оставаться очень даже высокой. Это напоминает мигание лампочки, при некачественной проводке.

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

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

Ближайшие планы

  • Протестировать удобство getLocus для торжественных мероприятий (торжественные итоги года в компаниях) и их продолжение: «тусовки» и «посиделки».
  • Улучшить доску для рисования, добавить стикеры с надписями, интегрировать офисные программы.
  • Проработать онбординг и UX: разработали много фич, а теперь нужно сделать их понятными и научиться просто рассказывать про функционал.
  • Подготовить бэкенд к highload, сейчас переключение между серверами происходит вручную и через «хард-кодинг», что крайне усложняет жизнь, так как предел одного сервер ~700 одновременно подключенных пользователей.

Спасибо команде за вовлеченность, а пользователям за фидбек, обратная связь помогает нам лучше понять себя:)

0
44 комментария
Написать комментарий...
Angmar Genso

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

Ответить
Развернуть ветку
Владислав Капицын
Автор

Спасибо за теплые слова!
Будем стараться рости быстрее и не превращаться в трудного подростка)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Владислав Капицын
Автор

🙈

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Ольга Кад

Какие вы крутые! Респект за такую интересную идею и работу с универами

Ответить
Развернуть ветку
Vasile Lixcode

"Респект за такую интересную идею и работу с универами" - а про программистов ни слово :\

Ответить
Развернуть ветку
Юлия

Программистам высшая похвала и респект ;)

Ответить
Развернуть ветку
Petr

Ну и раз уж я разошелся, еще спрошу: у вас сайт на русском. Вы выбрали РФ как ключевое гео для себя? Почему?

Ответить
Развернуть ветку
Владислав Капицын
Автор

Попробую ответить на все вопросы одним комментарием)

1. Статья не про рост, а про развитие продукта, причем с точки зрения клиентского опыта, потому цифры и не приводим. В следующем году обязательно будем делать статью о росте и продвижении - там цифры и покажем.
2. То что вы не нашли для себя причин сейчас переходить к нам из miro и zoom - это нормально) Мы стараемся развивать продукт через cust dev, адаптируясь под конкретную деятельность клиентов, например под тех, кто проводит психологические тренинги. Будет круто, если вы попробуете у нас поработать и дадите обратную связь, тогда мы сможем улучшить продукт и найти причины перехода именно для вас, в вашей ситуации.
3. На РФ стартовали из-за опыта и специфики команды, как работать с русскоязычной аудиторией - понимаем, как с западной - пока нет. Про сложности выхода из РФ на мир неоднократно слышали и про нелюбовь инвесторов к таким проектам тоже)

Спасибо, что обращаете на это внимание - вероятно, стратегию по этому вопросу в ближайшее время будем менять

Ответить
Развернуть ветку
Petr

По РФ: Я регулярно задаю этот вопрос и, почему-то, регулярно получаю такой же ответ. 

Ответить
Развернуть ветку
Владислав Капицын
Автор

А какой ответ правильный?)

Ответить
Развернуть ветку
Roman Nenznaskiy

3. я думаю, что в этом пункте шла речь не про инвесторов и их нелюбовь ко всему не американскому, а про то, что условное CAC в USA раза в 2-3 выше нашего, но средний чек там выше минимум в 10 раз и рынок больше в сотни раз.

Искать потерянные ключи под фонарем, потому что под ним светлее - заведомо провальная идея. 

Ответить
Развернуть ветку
Muslim Shortanov

Вот это Хороший вопрос :) с мощным приколом :)

Ответить
Развернуть ветку
Alexander Malakhov

"Zoom, Skype и другие нативные приложения справляются с этой проблемой, просто игнорируя потерю пакетов — потеря нескольких кадров на видео, обычно некритична для пользователей"

А Google Meet (и не только)  как справляется, ведь он только в браузере?

Вроде бы есть исследования по WebRTC and packet loss - https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41611.pdf 

Ответить
Развернуть ветку
Владислав Капицын
Автор

Спасибо за вопрос!

Дело в том, что нам необходимо синхронизировать не только видео/аудио, а саму доску, её объекты и перемещение юзеров по ней (причем как друг с другом, так и с сервером).
Причем важно это делать непрерывно и с высокой скоростью, поэтому мы всё прогоняли через TCP (отчасти решение было сделано по неопытности + у всей команды оказался стабильный интернет и проблема не сразу была замечена). 
Теперь разделяем - видеосвязь и процесс подключения на webRTC (исключительно через UDP с допустимой потерей пакетов) будет "жить" отдельно от state остальной части приложения, которое уже по TCP передается (при обрыве соединения state просто будет подвисать не надолго - что уже совсем некритично).

Если у вас ест опыт в работе с webRTC и вы готовы обменяться с нами экспертизой было бы круто 🙂

Ответить
Развернуть ветку
Ol Ka

Интересно, кем именно велась (и в каких условиях шла) разработка, если ни изначально, ни даже в процессе, не были предусмотрены решения для двух «базовых» проблем любого сетевого приложения: большого количества пользователей и плохого качества связи? 🤔

Ответить
Развернуть ветку
Mikhail Batukhtin

Так первая версия была MVP судя по статье) Для MVP то что оно полностью работает при положительных сценариях уже, имхо, достижение

Ответить
Развернуть ветку
Владислав Капицын
Автор

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

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

Разные сетевые приложения требует разного подхода. У нас в портфолио есть опыт разработки распределенных реестров (с нуля) - там аналогичный подход сработал гораздо лучше.

Ответить
Развернуть ветку
Roberto Martinez

Если не секрет на какую технологию перешли с p2p ?

Ответить
Развернуть ветку
Vasile Lixcode

Технология называется SFU - Selective Forward Unit.

Ответить
Развернуть ветку
Владислав Капицын
Автор

Централизованное решение с mediasoup. Его сейчас учимся автоматически балансировать.

Ответить
Развернуть ветку
Boris Ershov

Почему нет входа по Oauth2/OIDC/Соц.сети?
Регистрация - в 2020, когда система уже вышла в пром и уже есть платная подписка, это какой-то зашквар :)

Ответить
Развернуть ветку
Владислав Капицын
Автор

И не поспоришь
Исправим)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Art

да блять, они меняют название каждый месяц, токсичный ты наш.

Ответить
Развернуть ветку
Max Kramar

Подскажи название, плз, оч интересно на них глянуть

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Valentin Dombrovsky

Таким образом, вы сделали spatial.chat.
Или это ваш же проект? 

Ответить
Развернуть ветку
Владислав Капицын
Автор

В прошлом посте я рассказывал, что spatial нам не совсем подошел, как клиенту. Мы к ним обратились с предложением о сотрудничестве - в ответ получили отказ и предложение сделать свой сервис.

Для прозрачности стоит ещё упомянуть Remo.co, Wonder.me и Branch.gg - на которые мы чем-то тоже похожи.

Ответить
Развернуть ветку
Dmytro Serebriakov

При беглом осмотре сервис бомбический, но пока очень и очень сырой, хотя я бы с радостью его купил для своего направления онлайн обучения, так как как раз пользуемся связкой Zoom+Miro

1) И самая важная проблема, ваш сервис не грузитcя. Или вообще никакой реакции или грузит через секунд 30, на моем гигабитном интернете. Что же будет у клиентов, многие из которых сидят на мобильном интернете?
2) У альтернативы доски МИРО просто нулевой функционал. Там даже нет банального текстового поля!

Желаю вам успехов, но пользоваться пока вашим сервисом нельзя(

Ответить
Развернуть ветку
Владислав Капицын
Автор

Большое вам спасибо, за обратную связь!

1) Прерывание соединения исправляем, собственно об этом в статье и писали. Скорость интернета к сожалению, не показатель - есть коллеги которые с телефонов и через 3G сидят, а есть те у кого гигабитный кабель и у них прерывания. В понедельник уже всё у всех заработает)
2) Да, с доской предстоит ещё много работы, первые обновления случатся уже в этом году - в том числе появится работа с текстом.

Ответить
Развернуть ветку
Alexander P

А вот, скажем, потянет ли сервис движуху на 120+ человек? 

Ответить
Развернуть ветку
Владислав Капицын
Автор

Да, потянет, если сгруппировать по разным комнатам по 30-60 человек.
Браузерам пока тяжело переваривать большие объемы видео-трафика - отсюда ограничения.

Ответить
Развернуть ветку
Petr

Может быть только у меня такое искажение? Как можно делиться результатами роста без цифр? Вы их не считаете или скрываете?

Ответить
Развернуть ветку
Petr

А как продукт звучит здорово.

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

Ответить
Развернуть ветку
Art

да их просто нет )))

Ответить
Развернуть ветку
Владислав Капицын
Автор

*удалено*

Ответить
Развернуть ветку
Alexandr Alimov

А еще, как я понял, вы полный аналог вот этих чуваков https://remo.co/

Ответить
Развернуть ветку
Max Kramar

Неправильно понял)) В remo.co реализована видеосвязь как в zoom и самостоятельный переход между столами. Важно понимать, что их столы это не пространства - юзер не может сесть поближе к столу (подальше от стола), разместить презу рядом со столом, нарисовать на вайтборде схему.

Ответить
Развернуть ветку
Alexandr Alimov

Да, в целом теперь отличие понятно. Хотя ребятам из реалтаймборда было бы круто как раз добавить фичу с коммуникациями с удалением/приближением. Если ваш продукт станет "стабильным", быстрее чем это сделают ребята из реалтаймборда обязательно попробую )) успехов

Ответить
Развернуть ветку
Max Kramar

Спасибо)) в miro уже появилась фича с видеочатом, не все пользователи знают об этом)
Попробуй у них поработать и у нас - оч интересен фидбек!

Ответить
Развернуть ветку
Anton Blinkov

Классная идея и сам продукт. Однако, стоит сделать в Miro похожую фичу, и к сожалению, ваш сервис уйдёт на втрой план. Вам только удачи, верю я в сервис.

Ответить
Развернуть ветку
Andrey Slusar

круто!

Ответить
Развернуть ветку
41 комментарий
Раскрывать всегда