Привет! Меня зовут Данила Елагин. Я — технический менеджер проектов и продуктов во внутреннем подразделении ИТ Яндекса. Мы занимаемся не только техподдержкой сотрудников, но и вместе со смежными подразделениями выстраиваем и обслуживаем ИТ‑инфраструктуру.
Некоторое время назад я перешёл в отдел продуктового развития и получил в качестве подшефного продукта внутренний сервис — Паспорт переговорных. Между собой мы называем его Room Passport, или просто — RP. Его основная задача — позволить нашей компактной команде ВКС (видеоконференцсвязи) легко и эффективно управлять огромным парком переговорных: от больших залов до кабин, рассчитанных на пару человек. Чтобы у яндексоидов всегда была связь, оборудование работало без перебоя, а забронировать переговорку было быстро и удобно. Кстати, помимо переговорок в Room Passport «живут» кабинеты массажистов и врачей, коворкинговые столы и даже спортзалы. Всего получается 1800 помещений в 125 офисах в 12 странах.
В компании есть переговорки с двумя типами конференц‑систем — на кодеках Cisco и Zoom. Кодеки Zoom заводят в облаке, а Cisco управляются локально через API системы Cisco Unified Communications Manager, в народе прозванной «Цуцмом». Сотрудники проводят видеовстречи в Zoom или Телемосте — здесь полная свобода выбора.
На момент торжественной передачи «ключей продакта» RP ещё не был готовым решением и не делал то, чего от него ожидали коллеги из ВКС. Чтобы учесть потребности и боли людей, мы составили Persona Map, где в качестве объекта исследования выступили собирательные образы каждой категории пользователей. Вот один из примеров:
Вместе с разработчиками и менеджером со стороны заказчика (Олег, если ты читаешь это — спасибо за всё твоё время и неоценимую помощь), нам удалось за полгода довести до ума лоскутное одеяло из плохо интегрированных функций. Мы перешили его крепкими нитками (backend), сшили красивый пододеяльник (frontend) и объединили так, чтобы сервисом было удобно и уютно пользоваться (UI/UX). Теперь, когда RP дошёл до стадии «и показать не стыдно», мы решили рассказать, как и зачем его делали.
Как работать с Room Passport
Продуктом пользуются инженеры и менеджеры ВКС, а также специалисты офисной поддержки, в чьи задачи входит регулярный обход переговорок и поддержание их в рабочем состоянии. Для пользователей RP (и, в конечном счёте, для каждого сотрудника Яндекса) важно быстро и легко завести переговорку в системе. Это позволяет:
провести новое оборудование (оформить перемещение ТМЦ);
выдать номер телефона для организации связи;
добавить переговорку в календарь, чтобы сотрудники могли её забронировать;
видеть, каким оборудованием оснащены переговорки и как оно смонтировано;
проводить мониторинг состояния техники;
быстро менять оборудование в случае поломки.
Давайте рассмотрим популярный кейс — инженеру нужно завести новую переговорку в системе. Раньше ребятам приходилось создавать тикет в поддержку, чтобы к переговорке привязали почтовый ящик в Exchange‑on‑Premise, с которым переговорку добавляют в календарь и таким образом делают доступной для бронирования.
Заявки на создание новых комнат — не инциденты, а банальные операционные задачи, поэтому они выполнялись в порядке очереди, и SLA мог составлять до 5 рабочих дней от запроса до получения вожделенного адреса. После мы добавляли переговорку на Стафф — внутренний портал с информацией о сотрудниках и офисах, откуда она и попадала и в Календарь. Потом шли к логистам, чтобы они завели расположение в ERP (Enterprise Resource Planning) — у каждой физической переговорки есть виртуальный «двойник» в системе логистического учёта. Получая оборудование со склада, мы заводили его на себя, а после установки разрывали эту связь и привязывали технику к месту постоянной дислокации.
Благодаря Room Passport всё стало проще. За счёт интеграции с Exchange On‑Premise заведение переговорок удалось автоматизировать, и вопрос с добавлением новой комнаты на Стафф и в Календарь решается за 10 минут. Единственное, что пока делается руками, — заведение расположения в ERP. Но и эту часть, конечно, хочется подвергнуть оптимизации.
Забавный пример из жизни: периодически у нас меняются названия переговорок. Например, какая‑то команда переезжает на другой этаж и хочет сохранить названия за собой. Раньше нам приходилось затирать старые данные во всех системах и создавать названия заново, но уже в другой локации. Сейчас это делается гораздо быстрее — надо лишь изменить название в RP, а во все нужные места оно доедет без нашего участия. Для конечных пользователей всё работает быстро, удобно и незаметно.
Про мониторинг
После того как переговорка начала принимать посетителей, нужно следить за тем, чтобы оборудование работало без сбоев. Для этого в Room Passport встроена система мониторинга, которая умеет заводить тикеты в поддержку.
Например, если пропала связь с кодеком, мониторинг создаст такой тикет:
Раньше, когда переговорок было мало, мониторинг был синхронным и нам этого хватало. В древние времена мониторинг был написан на PHP: асинхронщины там не было, и её внедряли с помощью очередей RabbitMQ и добавления 10 воркеров, которые могли одновременно опрашивать больше переговорных. Но и этот подход мы переросли.
Room Passport работает полностью асинхронно, и сейчас опрос 1000 кодеков Cisco‑переговорок занимает меньше минуты. Проверяется состояние самой железки и всё подключённое к ней оборудование: телевизор, динамики, микрофоны. Zoom‑переговорки мониторятся иначе, решение работает на базе python‑скриптов, которые получают информацию через Zoom‑API с помощью веб‑хуков — об этом я расскажу дальше, в разделе об интеграциях. Также мы можем проверять статус отключённого оборудования на предмет восстановления связи. Если оборудование снова в сети — тикет инцидента закроется автоматически.
Как выглядит и из чего состоит Room Passport
Давайте разбираться, что же за зверь (и что у него под капотом) помогает нам управлять переговорками. Здесь будут интересные технические детали и много информации об интеграциях, но начнём с того, что на поверхности. Сайт сервиса предельно прост: это главная страница с таблицей помещений и фильтром, а также карточки со статичными виджетами.
Это — основной инструмент в поиске и фильтрации переговорок. Помимо быстрого фильтра по названию или локации, доступен детальный фильтр по разным параметрам:
Теперь давайте посмотрим на карточку переговорки, там много интересного:
Оборудование. Список оборудования, проведённого в ERP.
VCS. Статусы подключённых устройств на базе кодеков Cisco или Zoom.
Опции. 24 параметра, важных для команды ВКС.
iPad. Мониторинг планшета бронирования, установленного снаружи каждой переговорки.
Network. Сетевые настройки кодека Cisco или Zoom.
Firmware. Актуальные прошивки оборудования Cisco.
Ссылки. Разные полезные ссылки, заполняются вручную: исполнительная документация, схемы, спецификации. Очень актуально для сложных объектов, например конференц‑залов, где более сотни единиц оборудования и сложная схема подключения устройств.
Интеграции. Здесь отражены интеграции с внешними системами, такими как облачные почтовые сервисы, Zoom, Cisco, ERP.
Room Passport взаимодействует с 11 внешними сервисами. Бывает, что в них происходят изменения, требующие доработок с нашей стороны, и порой весьма непростых. Поэтому, как сказал мой коллега Игорь Волков, ведущий архитектор и руководитель разработки: «Ремонт никогда не кончается»:) Поделюсь кусочком верхнеуровневой схемы заведения календаря для Zoom‑переговорки:
При нажатии одной кнопки в интерфейсе система взаимодействует с четырьмя внешними сервисами. Ниже — о самых важных интеграциях и о том, зачем они нужны.
Cisco Unified Communications Manager, или Цуцм
Нам удалось создать центр управления переговорками в RP, в то время как раньше важные функции существовали хаотично в обвязке вокруг Цуцм. Теперь команде ВКС доступно гораздо больше информации в одном месте: локация на карте, кодек и номер телефона, настройки, способы подключения — например, можно узнать, подключена ли панель управления видеосвязью напрямую к кодеку или через сетевой коммутатор; количество посадочных мест, информация об оборудовании, интегрированная с системой учёта ERP, и т. д.
Например, благодаря интеграции API Цуцм с Room Passport нам удалось решить старую проблему. При замене оборудования в переговорке автоматика могла присвоить комнате новый номер телефона, не совпадающий с существующим, из‑за чего возникали сбои при сборе групповых звонков. Это приходилось чинить вручную. Теперь же и кодек, и телефон переговорки железно прописаны в RP и не меняются при обновлении оборудования, соответственно, никакие смежные системы не ломаются, а поддержка экономит время.
Как работает автоматика кодеков Cisco
Кодеки Cisco проприетарны. У команды NOC, которая занимается настройкой телефонии, как мы уже знаем, есть Цуцм, в который добавляется всё новое оборудование. В Room Pasport для этой цели есть набор типовых конфигураций в зависимости от типа кодеков, которые устанавливаются в переговорки. Модель устройства для определения типа кодека берётся из ERP‑системы. Получив эту информацию, RP подбирает нужную конфигурацию или выдаёт ошибку, если нужной модели в системе нет.
Во втором случае нужно обратиться в поддержку, чтобы для новой модели оборудования завели конфигурацию. Если же всё в порядке, в Цуцм заносится тип конфигурации, серийный номер и mac‑адрес кодека, сгенерированный RP, а Цуцм, в свою очередь, генерирует свободный телефонный номер для устройства.
Дальше сконфигурированное устройство нужно подключить к сети. Для этого в RP заранее внесены пулы IP‑адресов — таблицу IP с соответствующими им локациями: страна, офис, иногда вплоть до этажа в конкретном БЦ, — ведёт команда ВКС. После того как выдан IP, наступает время настройки самого устройства — на этом этапе всё, что сгенерировал RP, техник вносит на сетевую карту вручную. Как только настройки применены, у кодека появляется доступ в интернет. Эти настройки также нужно передать на мониторинговое оборудование команды NOC. Для этого мы выгружаем имя кодека (FQDN), mac и IP в межсетевой экран, откуда они прорастают в DNS.
ERP
«Общение» RP с ERP помогает решать массу проблем. Раньше, если в переговорке ломалось оборудование, инженеру нужно было сходить в несколько разных систем, чтобы понять, где и что произошло. Первым делом шли в ERP, чтобы понять, какое именно оборудование есть в переговорке, а затем — в систему учёта IP‑адресов, чтобы узнать IP вышедшей из строя техники. В третьей системе мы проверяли, не слетела ли телефония. Сейчас всю эту информацию мы видим в Room Passport и сразу же можем внести изменения через единый интерфейс. Раньше на эти «путешествия по системам» уходило 15–20 минут, теперь же хватает 3–4 минут.
Exchange On-Premises
Между Exchange, LDAP и Room Passport есть ещё одна сущность — On‑Prem Orchestrator с набором автоматик от нашей команды win‑админов для создания и обновления учётных записей в LDAP и Exchange. Именно в клиент для оркестратора и направляются запросы на заведение новых переговорок. Вот как это выглядит на практике:
Zoom API
Нам пришлось сделать прослойку между RP и облачным Zoom, чтобы инкапсулировать сложную авторизацию и дёшево ходить в сервис через API, используя внутренний SSO. Благодаря этой штуке пользователям не надо страдать — они легко получают доступ к Zoom и заходят во встречи, не тратя кучу времени на то, чтобы залогиниться. А мы можем автоматически выдавать и отзывать лицензии на Zoom с помощью роботов — сотрудники поддержки на такие задачки время не тратят.
Кстати, про отзыв лицензий. С помощью веб‑хуков в этом же API мы получаем информацию о том, когда и кем создаются встречи, когда они заканчиваются и сколько в них участников. Это позволяет отзывать pro‑лицензии Zoom у сотрудников, которые не пользуются их функциональностью более 60 дней. Лицензии — ресурс ценный, особенно сейчас! Конечно, сотрудники имеют право вернуть лицензию, если она им нужна. Для этого нужно всего лишь заполнить небольшую форму на внутреннем портале, а дальше автоматика запустит процесс.
Решение оказалось востребованным — теперь оно работает в корпоративном календаре, им пользуются роботы, которые могут автоматически создать встречу в случае асапа (например, когда упал какой‑то сервис), и коллеги из NOC — центра сетевых операций — для получения записи встречи и автоматической расшифровки.
Телевизоры в переговорках
С помощью Room Passport мы также «расклеиваем» обои на телевизоры. Система забирает из хранилища нужную картинку и накладывает на неё QR‑код с паролем от Wi‑Fi, который обновляется каждую неделю. Это делается асинхронно, поэтому обновление обоев сразу на всех телевизорах в переговорках занимает меньше минуты.
Вместо заключения
Room Passport активно развивается, и у нас большие планы по новым интеграциям с внутренними и внешними сервисами. Сейчас строится новый кампус Яндекса на Воробьёвых горах, где появится около 600 переговорок и кабин, которыми тоже нужно будет управлять. Мы работаем над несколькими фичами, с которыми масштабирование пройдёт максимально гладко, а сам процесс управления выросшим парком помещений станет ещё эффективнее. Вот что хотим сделать к открытию офиса:
Интегрироваться с другими внутренними сервисами, например с интерактивными схемами офисов, для отображения информации о переговорках.
Выстроить автоматизированную аналитику, используя скрипты и собственные инструменты: YQL, Datalens, YTsaurus.
Документировать все мультимедиа‑устройства в Room Passport, а не только кодеки и подключённую к ним периферию.
Сделать галерею обоев для телевизоров и возможность выбрать из шаблонов и назначать обои в конкретный офис или даже этаж.
Реализовать управление планшетами бронирования из интерфейса Room Passport — сейчас эта функциональность живёт в стороннем сервисе.
Сделать классную визуализацию мониторинга состояния переговорных — сейчас автоматика создаёт тикеты в Трекере, а мы хотим сделать «рабочее место дежурного инженера» внутри RP.
Оптимизировать RP под планшеты и телефоны, чтобы было удобнее пользоваться им на ходу, а не только с ноутбука.
А как управляют ВКС у вас? Делитесь опытом и интересными идеями в комментариях — быть может, вам показался полезным наш подход или вы у себя реализовали фичи, о которых мы пока только задумываемся — будет интересно обсудить!
Комментарии (12)
CCNPengineer
10.09.2024 07:36а zoom у вас используется бесплатный на 30 минут?
а cisco не заблокировала все телефоны и устройства? ведь сейчас цуцм должен постоянно обращаться к cisco и проверять свою лицензию
D_Elagin Автор
10.09.2024 07:36+5Ну, тут все просто! Сначала NDA, потом мы берем NDA и вместе с NDA все работает! :)
Abcde123
10.09.2024 07:36+1Данила, спасибо за интересный рассказ! Было же время :) когда еще люди не слышали про импортозамещение и интегрировал Цуцм со Skype, PAGA, Tetra, Skype for Business, CMS. И, конечно, качество голоса конференций на Asterisk и близко не дотягивало до Cisco.
kirillgal
10.09.2024 07:36+2Это проблема современного ИТ: компании внутри себя не используют собственные продукты.
Abcde123
10.09.2024 07:36+1Это разные ниши - возможно, будет понятно после использования telepresence.
NiCOOLaS
10.09.2024 07:36+3Не всегда "свой" продукт подходит для себя внутри, так как может быть заточен не под "кровавый ентерпрайз"
Имхо
arvidasgafiulin
10.09.2024 07:36+2Добавлю ясности:) Мы используем Яндекс 360 внутри, но есть технические детали. 1) Кодеки у нас Zoom и Cisco, они умеют звонить в Телемост по SIP, по этому по факту это единая ВКС система. А партнерам мы можем звонить в их ВКС системы 2) Календарь и Почта у нас Я360, ms exchange интегрирован с ним, а сам в свою очередь интегрирован с Zoom для проброса календаря, так как Zoom с ним работает из коробки. По сути он технический слой. По этому мы активно используем как свои продукты, так и решения лидеров рынка.
q2digger
Забавно. А свой Телемост почему не используете? Есть вообще планы сделать для Телемоста отдельное приложение для переговорных?
D_Elagin Автор
Используем, но это продукт Яндекс 360. В рамках этой статьи мы хотели рассказать про то, что уже сделано и активно используется для автоматизации ВКС.
navion
А почему вместо Яндекс 360 внутри используется Exchange?
D_Elagin Автор
Яндекс 360 - изначально внешний продукт, разработанный для внешних клиентов. В основном для малого и среднего бизнеса. С началом ухода из России ведущих производителей ПО, он начал ориентироваться в том числе на требования крупного бизнеса, но эти доработки требуют времени.
- Тут надо сделать отступление и подчеркнуть, что написанное выше - мое личное мнение. Я не сотрудник Яндекс 360.
topright007
так используют же
>> Сотрудники проводят видеовстречи в Zoom или Телемосте