Привет! Меня зовут Данила Елагин. Я — технический менеджер проектов и продуктов во внутреннем подразделении ИТ Яндекса. Мы занимаемся не только техподдержкой сотрудников, но и вместе со смежными подразделениями выстраиваем и обслуживаем ИТ‑инфраструктуру.
Некоторое время назад я перешёл в отдел продуктового развития и получил в качестве подшефного продукта внутренний сервис — Паспорт переговорных. Между собой мы называем его 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. Для этого мы выгружаем имя кодека (FKDN), 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 под планшеты и телефоны, чтобы было удобнее пользоваться им на ходу, а не только с ноутбука.
А как управляют ВКС у вас? Делитесь опытом и интересными идеями в комментариях — быть может, вам показался полезным наш подход или вы у себя реализовали фичи, о которых мы пока только задумываемся — будет интересно обсудить!
Автор: D_Elagin