Онлайн-мероприятие как распределённая система: как качественно провести конференцию в интернете

Офлайн-мероприятия постепенно возвращаются, но за время пандемии стало ясно, что онлайн уже не исчезнет полностью. Зато теперь он должен выдерживать конкуренцию с офлайном, так что делать мероприятия в интернете необходимо хорошо. С какими проблемами тут можно столкнуться? Как с ними справиться? И при чем тут инженерия распределённых систем? Опытом делится компания JUG Ru Group, проводящая конференции для IT-специалистов.
Онлайн-мероприятие как распределённая система: как качественно провести конференцию в интернете

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

Но вот если у вас большое мероприятие с сотнями зрителей и высокой ценой билета, всё совершенно иначе. Пробы онлайн-пера других мероприятий показали: работать в режиме созвона в Zoom в принципе можно, но сделать это качественно трудно. Мешают и проблемы с соединением, и то, что Zoom не дает управлять раскладкой эфира (например, нельзя выбрать, какой набор людей должен быть на экране у зрителей в конкретный момент). Да и подход «скинуть ссылку на эфир в чат» для коммерческих мероприятий работает не очень хорошо — она обязательно утекает наружу.

У нас добавлялось ещё и то, что мы проводим технологические конференции, так что наша ЦА — это серьезные айтишники. Они высоко ставят планку требований к цифровому продукту.

Опишем сценарии, когда что-то идёт не так — и напишем, что с ними можно сделать.

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

И тут любопытно вот что. Если спикеры вашего мероприятия не сидят в одной комнате, а распределены по планете, то по сути, вы имеете дело с распределённой системой. И проблема связи типична для распределённых систем: IT-специалисты знают, что если у тебя много связанных сетью компонентов, то сеть неизбежно будет сбоить. А мы что-то понимаем в распределенных системах, потому что проводим по ним конференцию Hydra — и поэтому знаем, что уже наработано много опыта в отношении того, как быть в таких ситуациях. И стараемся перенимать этот опыт.

Как сделать, чтобы онлайн-конференция при сбоях все равно работала хорошо? Для начала стоит минимизировать проблемы, например, такими средствами:

Вот наглядный пример — в видео на 56:01 из-за связи у спикера временно испортилось качество картинки, но слайды остались такими же чёткими

Несмотря на все наши старания, полных гарантий нет, и всё же может случиться ужасное — например, спикер всё-таки отвалится посреди доклада. Что тогда?

И тут снова пригодится знание распределённых систем, где выход из строя отдельных компонентов — это норма жизни. Если у вас дома сломается жёсткий диск, вы можете потерять все свои фотографии. А вот в сервисах вроде Google Photos пользователи не теряют фотографии, хотя там их тоже хранят на жёстких дисках. Почему?  

Потому что информацию дублируют, и если один из дисков отказал, можно автоматически подтянуть копию с другого (в идеале расположенного как можно дальше от первого: тогда даже падение метеорита не страшно). Есть понятие »replication factor» (коэффициент репликации), означающее количество копий вашей условной фотографии в рамках одной системы на нескольких дисках.

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

Но есть проблема: скопировать файл легко, продублировать оборудование тоже можно, а вот спикера полностью не продублируешь, его доклад за него никто другой не прочитает. Что делать с этим?

И тут стоит вспомнить ещё одно понятие из мира отказоустойчивости:  «graceful degradation». Суть в том, что система при проблемах должна не резко отключаться целиком, а изолировать нерабочую часть и постараться поддержать в рабочем состоянии оставшуюся функциональность. Этим принципом мы и руководствуемся. 

  • На конференциях (даже офлайновых), кроме заявленных спикеров, полезно держать в резерве «запасных». Это значит, что если вдруг кто-то перед докладом заболеет, вам есть чем моментально заполнить дыру в расписании. Да, это хуже, чем исходный план с заявленным докладом. Но это куда лучше, чем полное отсутствие доклада. 
  • Наша распределённая система строится на трёх человеческих «узлах»: спикер, эксперт и ведущий. Спикер — гвоздь программы, все собрались послушать его. Эксперт обычно разделяет зону знаний спикера (например, если конференция по JavaScript, он тоже должен быть фронтендером), он следит за вопросами в чате, инициирует дискуссию. Ведущий в основном представляет всех — по умолчанию его роль минимальна. В случае, если спикер отключается, в игру вступают эксперт и ведущий: они сообщают зрителям о проблеме и обсуждают какие-то связанные с докладом вещи. В итоге зритель получает интересный контент. 

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

Что онлайн-конференция может дать участнику, чего не может дать YouTube? Как минимум, возможность задать вопрос спикеру. Есть чат, где можно обсудить доклад с участниками и задать свой вопрос, а мы также устраиваем видеозвонки после каждого доклада.

И ещё прожиточный минимум — это чат мероприятия (например, в Telegram). Уже куда лучше, чем просто видеопоток. 

Но можно зайти дальше. Например, недавно на онлайновом Google I/O была виртуальная «игровая» онлайн-площадка, где можно было ходить игровым персонажем, взаимодействовать с окружающим миром, —, а сев на виртуальную скамейку с другим участником, можно было початиться с ним. 

©  Популярная Механика