Как мы эвакуировали дежурную смену Яндекса
Когда работа умещается в одном ноутбуке и может выполняться автономно от других людей, то нет проблем перебраться на удалёнку — достаточно остаться утром дома. Но так повезло не всем.
Дежурная смена — это команда специалистов по доступности сервисов (SRE). Она включает в себя дежурных администраторов, разработчиков, менеджеров, а также общую «приборную панель» из 26 ЖК-панелей по 55 дюймов каждая. От работы дежурной смены зависит стабильность сервисов компании и скорость решения проблем.
Сегодня Дмитрий Меликов tal10n, руководитель дежурной смены, расскажет о том, как за считанные дни им удалось перевезти оборудование на дом и наладить новые процессы работы. Передаю ему слово.
— Когда у вас бесконечный запас времени, то можно комфортно переехать с чем угодно куда угодно. Но стремительное распространение коронавируса поставило нас в совершенно другие условия. Сотрудники Яндекса перешли на удалённую работу одними из первых — ещё до введения режима самоизоляции. Происходило это так. В четверг 12 марта меня попросили оценить возможность перевести работу команды на дом. В пятницу 13-го появилась рекомендация перейти на удалённую работу. В ночь на вторник 17 марта у нас всё было готово: дежурные работают дома, оборудование перевезено, недостающий софт написан, процессы перенастроены. А сейчас я расскажу, как мы это провернули. Но для начала нужно вспомнить о тех задачах, которые решает дежурная смена.
Кто мы такие
Яндекс — большая компания с сотнями сервисов. Стабильность поиска, голосового помощника и всех остальных продуктов зависит не только от разработчиков. В дата-центре может нарушиться энергообеспечение. Рабочий во время замены асфальта может случайно повредить оптический кабель. Или может произойти всплеск активности пользователей, из-за чего потребуется срочно перераспределить мощности. Более того, мы все живём в большой, сложной инфраструктуре, и релиз одного из продуктов может случайно привести к деградации другого.
26 панелей в нашем опенспейсе — это полторы тысячи алертов и более ста графиков и панелей наших сервисов. По сути, это огромная диагностическая панель. Опытный дежурный администратор, взглянув на неё, быстро понимает состояние важных узлов и может установить направление для расследования технологической проблемы. Это не значит, что человек должен постоянно смотреть на все приборы: автоматика сама привлечёт внимание, прислав уведомление на специальный интерфейс дежурного, но без наглядной панели решение проблемы может затянуться.
Когда возникают неполадки, дежурный сперва оценивает их приоритет. Затем он изолирует проблему или минимизирует её воздействие на пользователей.
Есть несколько стандартных способов изолировать проблему. Один из них — деградация сервисов, когда дежурный администратор отключает часть функций, которые пользователи меньше всего замечают. Это позволяет на время снизить нагрузку и разобраться, что случилось. Если возникает проблема с дата-центром, то дежурный связывается с командой эксплуатации, разбирается в проблеме, контролирует сроки её решения и при необходимости подключает профильные команды.
Когда дежурный администратор не может сам изолировать проблему, возникшую из-за релиза, он сообщает о ней в команду сервиса — и разработчики ищут ошибки в новом коде. Если и им не удаётся разобраться, то администратор привлекает разработчиков из других продуктов или инженеров по доступности сервисов.
Могу долго рассказывать о том, как всё у нас устроено, но думаю, что суть уже передал. Дежурная смена координирует работу всех сервисов и контролирует глобальные проблемы. Дежурному администратору важно иметь диагностическую панель перед глазами. Вот почему при переходе на удалённую работу нельзя просто взять и выдать каждому по ноутбуку. Графики и алерты не уместятся на экране. Что делать?
Идея
В офисе все десять дежурных администраторов работают посменно за одной приборной панелью, которая включает в себя 26 мониторов, два компьютера, четыре видеокарточки NVIDIA Quadro NVS 810, два стоечных блока бесперебойного питания и несколько независимых доступов в сеть. Нам же требовалось обеспечить каждому возможность работать у себя дома. Собрать такую стену в квартире просто не получится (моя жена будет особенно рада этому), так что решили создать портативный вариант, который можно привезти и собрать дома.
Начали экспериментировать с конфигурацией. Нам нужно было уместить все приборы на меньшем количестве дисплеев, поэтому главным требованием к монитору стала высокая плотность пикселей. Из имеющихся в нашем окружении 4K-мониторов для тестов выбрали Lenovo P27u-10.
Из ноутбуков взяли 16-дюймовый MacBook Pro. У него достаточно мощная графическая подсистема, необходимая для отрисовки картинки на нескольких 4K-дисплеях, и четыре универсальных Type-C разъёма. Вы можете спросить: почему не десктоп? Заменить ноутбук точно таким же со склада значительно проще и быстрее, чем собрать и настроить идентичный системник. Да и весит он меньше.
Теперь нужно было понять, сколько мониторов мы реально сможем подключить к ноутбуку. И проблема тут не в количестве разъёмов, это мы могли узнать, только опробовав систему в сборе.
Тестирование
Мы достаточно комфортно разместили все графики и алерты на четырёх мониторах и даже подключили их к ноутбуку, но столкнулись с проблемой. Отрисовка 4×4K пикселей на подключённых мониторах настолько нагружала видеокарточку, что ноутбук разряжался даже во время зарядки. К счастью, проблема решилась с помощью док-станции Lenovo ThinkPad Thunderbolt 3 Dock Gen 2. К док-станции удалось подключить и монитор, и питание, и даже любимую мышку с клавиатурой.
Но сразу же всплыла другая проблема: GPU пыхтел настолько, что ноутбук перегревался, а значит, перегревался ещё и аккумулятор, который в результате переходил в защитный режим и переставал принимать заряд. Вообще, это очень полезный режим, который защищает от опасных ситуаций. В ряде случаев проблему удалось решить с помощью высокотехнологичного приспособления — шариковой ручки, подкладываемой под ноутбук для улучшения вентиляции. Но помогало это не всем, поэтому мы ещё и выкрутили скорость работы штатного вентилятора.
Оставалась ещё одна неприятная особенность. Все графики и алерты должны располагаться на строго определённом месте. Представьте, что вы пилотируете самолёт на посадку — и тут указатели скорости, высотомеры, вариометры, авиагоризонты, компасы и указатели положений начинают менять размер и скакать по разным местам. Так что решили сделать приложение, которое поможет с этим. За один вечер мы написали его на Electron.js, взяв готовый API по созданию окон и управлению ими. Добавили обработчик конфигураций и их периодическое обновление, а также поддержку ограниченного количества мониторов. Чуть позже ещё добавили поддержку разных сетапов.
Сборка и доставка
К понедельнику волшебники из хелпдеска добыли для нас 40 мониторов, десять ноутбуков и столько же док-станций. Не знаю, как им это удалось, но спасибо им большое.
Оставалось развезти всё это по квартирам дежурных администраторов. А это десять адресов в разных уголках Москвы: юг, восток, центр, ещё и Балашиха, до которой от офиса 45 километров (кстати, позднее добавился ещё и стажёр из Серпухова). Нужно было как-то распределить всё это между людьми, выстроить логистику.
Вбил все адреса на наших Картах, там ещё есть возможность оптимизировать маршрут между разными точками (воспользовался бесплатной бета-версией инструмента для курьеров). Разбили нашу команду на четыре независимые бригады по два человека, каждая получила свой маршрут. У меня машина оказалась наиболее вместительной, поэтому взял к себе оборудование сразу для четырёх сотрудников.
На всю доставку ушли рекордные три часа. Выехали из офиса в десять вечера понедельника. В час ночи я уже был дома. Этой же ночью мы вышли на дежурство уже с новым оборудованием.
Что в итоге
Вместо одного большого диагностического пульта мы собрали десять относительно портативных в квартире у каждого дежурного. Конечно же, оставалось ещё утрясти некоторые мелочи. Например, раньше у нас был один «железный» телефон дежурного для уведомлений. В новых условиях это не работало, поэтому мы придумали «виртуальные телефоны» для дежурных (по сути, каналы в мессенджере). Были и другие изменения. Но главное, что в рекордные сроки нам удалось перевести не просто людей, снизив риск их заражения, а всю нашу работу на дом без вреда для процессов и стабильности продуктов. В таком режиме мы работаем уже месяц.
Ниже вас ждут фотографии реальных рабочих мест наших дежурных.