Как мы создавали Miro и Zoom в одном флаконе
getLocus.io — чему мы научились за четыре месяца после релиза.
Первую статью мы опубликовали в день релиза и рассказали в ней о том, как пришли к идее, как разрабатывали MVP и с какими трудностями сталкивались.
Пару слов о нашем продукте.
getLocus — интерактивная доска (whiteboard), поверх которой перемещаются аватарки с видеосвязью. Причём пространство доски имитирует комнаты — чем дальше аватарки друг от друга, тем меньше они друг друга слышат.
К пользователям мы выходили с базовой гипотезой о том, что мы сервис для проведения встреч в онлайне. Мы думали, что наши виртуальные комнаты смогут заменить zoom, где пользователи будут интерактивно взаимодействовать между собой.
В целом, наша гипотеза оказалась верной, но благодаря обратной связи мы поняли на чем именно нам нужно сфокусироваться и кто является нашей целевой аудиторией на самом деле:
- Мы про коммуникации «каждый с каждым», а не «говорящая голова со всеми». На нашей площадке удобно проводить QA-сессии и нетворкинги: пользователи могут «сбиваться» в пары-тройки-микрогруппы по интересам и быстро пересобираться в других составах.
К примеру, организаторы DotFest пришли к такому формату — доклад спикера по ВКС, а затем общение и вопросы со спикером на нашей площадке.
- Мы для удаленных команд. Акцент на интерактивную «доску» или «экран» или «планшет», аля miro. Виртуальная комната это место в котором можно собрать множество визуальных объектов (файлы. img,. png,. jpeg,. gif,. pdf, youtube–видео) и группировать их, например, описывая CJM. Можно шарить экран, можно рисовать схемы и формулы на доске и сохранять их в svg для отдельного редактирования.
- Мы для психологов/тренеров/педагогов. Собственный аватар с видеосвязью имитирует физическое присутствие и ощущение собственных границ, что делает возможным проведение разных групповых форматов, ранее недоступных для онлайна.
Преподаватели и студенты старших курсов факультета психологии МГУ имени М.В. Ломоносова сравнили для проведения тренингов «Zoom + Miro», «Minecraft + Discord» и getLocus.
Не обошлось без трудностей
Выявили проблему в коммуникации между CTO и продакт менеджером.
Для поиска решений подготовили парный доклад и выступили на DevOpsLive2020.
Рассказали о сложности фиксации и исправления багов в формате открытой дискуссии с экспертами и участниками. Беседа развивалась вокруг понятия «ошибка» и различении того, что считает ошибкой пользователь и продакт, и как она может быть интерпретирована разработчиками «из-под капота». Из полезного посоветовали почитать и подумать про DoD бага, test requirements, bdd (behavior-driven development).
Планируем написать об этом отдельную статью.
Неудачная архитектура
После релиза, клиенты стали проводить пробы с большим числом участников (от 20 одновременных подключений и больше). Только в этот момент к нам пришло осознание, что стартовая техническая задумка, организовать видеосвязь через p2p — провальна (кто бы мог подумать).
Заявленная мощность браузеров по числу одновременных p2p соединений оказалась в разы меньше заявленной и пользователям не удавалось подключиться сразу ко всем участником доски, а скорость подключения оказалась неприемлемой.
Поскольку через несколько дней у нас планировалось коммерческое мероприятие на 100+ человек, мы приняли решение в срочном порядке переписать всю архитектуру. Бессонные ночи и работа в выходные спасли ситуацию и ивент был успешно проведен.
Важно — клиент был предупрежден о рисках и лояльно к ним отнесся. Мы вместе с ним подготовили резервный план на случай неудачи, но к счастью, всё обошлось.
Серьезный трафик
В этом месяце мы стали получать фидбэк, особенно от пользователей из регионов, о том что у некоторых часто обрывается соединение и тратиться время на повторное подключение.
Изучив проблему подробнее, пришли к выводу, что с такой проблемой в той или иной мере сталкиваются ~11% наших юзеров. Проблема была вызвана потерей «пакетов», за которым следовала потеря связи на доли секунды. А вот дальнейшее переподключение уже занимало несколько секунд, что негативно сказывалось на пользовательском опыте.
Такое часто случается на старых wi-fi роутерах или когда не очень надежный интернет-провайдер. При этом, скорость интернета может оставаться очень даже высокой. Это напоминает мигание лампочки, при некачественной проводке.
Zoom, Skype и другие нативные приложения справляются с этой проблемой, просто игнорируя потерю пакетов — потеря нескольких кадров на видео, обычно некритична для пользователей.
Ограничения браузеров не позволяют нам делать также, однако решить проблему все таки можно. Патч выйдет со дня на день:)
Ближайшие планы
- Протестировать удобство getLocus для торжественных мероприятий (торжественные итоги года в компаниях) и их продолжение: «тусовки» и «посиделки».
- Улучшить доску для рисования, добавить стикеры с надписями, интегрировать офисные программы.
- Проработать онбординг и UX: разработали много фич, а теперь нужно сделать их понятными и научиться просто рассказывать про функционал.
- Подготовить бэкенд к highload, сейчас переключение между серверами происходит вручную и через «хард-кодинг», что крайне усложняет жизнь, так как предел одного сервер ~700 одновременно подключенных пользователей.
Спасибо команде за вовлеченность, а пользователям за фидбек, обратная связь помогает нам лучше понять себя:)
Мы рады наблюдать проект со дня его основания в настоящее время, конечно мы заглядываем в ящик редко и видим как каждый раз он кардинально и в разы вырос, как внук которого редко видишь, вырос за одно лето и только купленных штанов
Спасибо за теплые слова!
Будем стараться рости быстрее и не превращаться в трудного подростка)
Комментарий недоступен
🙈
Комментарий недоступен
Какие вы крутые! Респект за такую интересную идею и работу с универами
"Респект за такую интересную идею и работу с универами" - а про программистов ни слово :\
Программистам высшая похвала и респект ;)
Ну и раз уж я разошелся, еще спрошу: у вас сайт на русском. Вы выбрали РФ как ключевое гео для себя? Почему?
Попробую ответить на все вопросы одним комментарием)
1. Статья не про рост, а про развитие продукта, причем с точки зрения клиентского опыта, потому цифры и не приводим. В следующем году обязательно будем делать статью о росте и продвижении - там цифры и покажем.
2. То что вы не нашли для себя причин сейчас переходить к нам из miro и zoom - это нормально) Мы стараемся развивать продукт через cust dev, адаптируясь под конкретную деятельность клиентов, например под тех, кто проводит психологические тренинги. Будет круто, если вы попробуете у нас поработать и дадите обратную связь, тогда мы сможем улучшить продукт и найти причины перехода именно для вас, в вашей ситуации.
3. На РФ стартовали из-за опыта и специфики команды, как работать с русскоязычной аудиторией - понимаем, как с западной - пока нет. Про сложности выхода из РФ на мир неоднократно слышали и про нелюбовь инвесторов к таким проектам тоже)
Спасибо, что обращаете на это внимание - вероятно, стратегию по этому вопросу в ближайшее время будем менять
По РФ: Я регулярно задаю этот вопрос и, почему-то, регулярно получаю такой же ответ.
А какой ответ правильный?)
3. я думаю, что в этом пункте шла речь не про инвесторов и их нелюбовь ко всему не американскому, а про то, что условное CAC в USA раза в 2-3 выше нашего, но средний чек там выше минимум в 10 раз и рынок больше в сотни раз.
Искать потерянные ключи под фонарем, потому что под ним светлее - заведомо провальная идея.
Вот это Хороший вопрос :) с мощным приколом :)
"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 и вы готовы обменяться с нами экспертизой было бы круто 🙂
Интересно, кем именно велась (и в каких условиях шла) разработка, если ни изначально, ни даже в процессе, не были предусмотрены решения для двух «базовых» проблем любого сетевого приложения: большого количества пользователей и плохого качества связи? 🤔
Так первая версия была MVP судя по статье) Для MVP то что оно полностью работает при положительных сценариях уже, имхо, достижение
Подробнее о том как мы разрабатывали проект и в каких условиях можно почитать в первой статье.
К большому числу пользователей мы готовы, просто подходим к этому вопросу постепенно, улучшая решение. Зачем тратить ресурсы разработчиков на сложную распределенную инфраструктуру, если мы еще не проверили гипотезу о нужности продукта? Тем более что стандартными методами балансировки в нашем случае не обойтись)
Разные сетевые приложения требует разного подхода. У нас в портфолио есть опыт разработки распределенных реестров (с нуля) - там аналогичный подход сработал гораздо лучше.
Если не секрет на какую технологию перешли с p2p ?
Технология называется SFU - Selective Forward Unit.
Централизованное решение с mediasoup. Его сейчас учимся автоматически балансировать.
Почему нет входа по Oauth2/OIDC/Соц.сети?
Регистрация - в 2020, когда система уже вышла в пром и уже есть платная подписка, это какой-то зашквар :)
И не поспоришь
Исправим)
Комментарий недоступен
да блять, они меняют название каждый месяц, токсичный ты наш.
Подскажи название, плз, оч интересно на них глянуть
Комментарий недоступен
Таким образом, вы сделали spatial.chat.
Или это ваш же проект?
В прошлом посте я рассказывал, что spatial нам не совсем подошел, как клиенту. Мы к ним обратились с предложением о сотрудничестве - в ответ получили отказ и предложение сделать свой сервис.
Для прозрачности стоит ещё упомянуть Remo.co, Wonder.me и Branch.gg - на которые мы чем-то тоже похожи.
При беглом осмотре сервис бомбический, но пока очень и очень сырой, хотя я бы с радостью его купил для своего направления онлайн обучения, так как как раз пользуемся связкой Zoom+Miro
1) И самая важная проблема, ваш сервис не грузитcя. Или вообще никакой реакции или грузит через секунд 30, на моем гигабитном интернете. Что же будет у клиентов, многие из которых сидят на мобильном интернете?
2) У альтернативы доски МИРО просто нулевой функционал. Там даже нет банального текстового поля!
Желаю вам успехов, но пользоваться пока вашим сервисом нельзя(
Большое вам спасибо, за обратную связь!
1) Прерывание соединения исправляем, собственно об этом в статье и писали. Скорость интернета к сожалению, не показатель - есть коллеги которые с телефонов и через 3G сидят, а есть те у кого гигабитный кабель и у них прерывания. В понедельник уже всё у всех заработает)
2) Да, с доской предстоит ещё много работы, первые обновления случатся уже в этом году - в том числе появится работа с текстом.
А вот, скажем, потянет ли сервис движуху на 120+ человек?
Да, потянет, если сгруппировать по разным комнатам по 30-60 человек.
Браузерам пока тяжело переваривать большие объемы видео-трафика - отсюда ограничения.
Может быть только у меня такое искажение? Как можно делиться результатами роста без цифр? Вы их не считаете или скрываете?
А как продукт звучит здорово.
Хотя как активный пользователь зум и миро на работе могу сказать, что причин свичнуться на вас не достаточно.
да их просто нет )))
*удалено*
А еще, как я понял, вы полный аналог вот этих чуваков https://remo.co/
Неправильно понял)) В remo.co реализована видеосвязь как в zoom и самостоятельный переход между столами. Важно понимать, что их столы это не пространства - юзер не может сесть поближе к столу (подальше от стола), разместить презу рядом со столом, нарисовать на вайтборде схему.
Да, в целом теперь отличие понятно. Хотя ребятам из реалтаймборда было бы круто как раз добавить фичу с коммуникациями с удалением/приближением. Если ваш продукт станет "стабильным", быстрее чем это сделают ребята из реалтаймборда обязательно попробую )) успехов
Спасибо)) в miro уже появилась фича с видеочатом, не все пользователи знают об этом)
Попробуй у них поработать и у нас - оч интересен фидбек!
Классная идея и сам продукт. Однако, стоит сделать в Miro похожую фичу, и к сожалению, ваш сервис уйдёт на втрой план. Вам только удачи, верю я в сервис.
круто!