Кто обеспечивает доступность сервисов Яндекса

Работа не для слабонервных.

Сервисы Яндекса постоянно сталкиваются с большой нагрузкой: дестабилизировать работу могут как сбои в дата-центрах, так и изменения в приложениях. Чтобы пользователи этого не замечали, в Яндексе работает «Дежурная смена» — команда специалистов по доступности сервисов (SRE), которая включает дежурных администраторов, инженеров и менеджеров. Мы поговорили с Кирой Харитоновой и Димой Меликовым о том, как выглядит их рабочий день, с какими необычными неполадками они сталкивались и как стать системным инженером.

Чем занимаются специалисты по доступности сервисов

Команда «Дежурной смены» помогает сервисам выкатывать релизы и устраняет неполадки в работе продуктов Яндекса. Неполадки могут возникать из-за проблем в «железе» (например, недостаточной мощности серверов) и из-за ошибок при выкатке изменений. За год Яндекс проводит около 80 000 релизов, иногда они перегружают сервера и с работой привычных приложений возникают сложности. Кроме того, программное обеспечение может плохо встраиваться во внутреннюю инфраструктуру Яндекса.

Доступность сервисов зависит как от качества разработки, так и от мощности серверов и инфраструктуры.

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

Когда возникают неполадки в работе, дежурный администратор должен сперва оценить их приоритет. Затем ему нужно изолировать проблему или минимизировать её воздействие на пользователей.

У дежурных администраторов есть несколько стандартных способов для изоляции проблем. Первый — деградация сервисов, когда дежурный отключает часть функций, которые пользователи меньше всего замечают. Это позволяет на время снизить нагрузку и разобраться с проблемой.

Если возникает проблема с дата-центром, то дежурный администратор может сообщить пользователям, что он временно не работает. Затем ему нужно связаться с дата-центром, разобраться, в чём возникла проблема, и проконтролировать сроки её решения.

Когда дежурный администратор не может изолировать проблему, возникшую из-за релиза, сам, он сообщает о ней в команду сервиса — и разработчики ищут ошибки в новом коде. Если и им не удалось разобраться, то администратор должен привлечь к работе разработчиков из других продуктов или инженеров по доступности сервисов.

Алгоритм работы дежурного администратора

Дежурному администратору нужно общаться с людьми и знать, к кому обратиться в случае проблемы. Команда «Дежурной смены» взаимодействует с:

дата-центрами (чтобы знать, когда выключают сервера)

сетями и сетевыми инженерами

инфраструктурой внутреннего облака Яндекса (часть «Дежурной смены» занимается поддержкой разработчиков и пользователей)

разработкой сервисов (чтобы команда знала, как работают те или иные компоненты и почему они могут сломаться)

менеджерами (потому что масштабные запуски осуществляет «Дежурная смена»)

Куда расти

Дежурные администраторы, набравшись опыта, могут стать инженерами по доступности сервисов. Это требует более глубинного знания инфраструктуры: инженеры по доступности сервисов разбираются не с экстренными запросами, а с фундаментальными проблемами в архитектуре сервисов.

«Инженеры по доступности используют различные инструменты диагностики, такие как strace, tcpdump и gdb. Однако фундаментальные знания важнее работы с инструментами», — рассказывает Кира Харитонова, технический менеджер в «Дежурной смене». Опенсорс-решения могут радикально изменяться или, наоборот, авторы могут перестать их обновлять. Кира вспоминает, что несколько лет назад многие инженеры доступности изучали openvz, а потом появились более современные инструменты.

Дежурные администраторы могут вырасти не только в инженеров по доступности, но и в технических менеджеров. Они отличаются от продактов и проджектов в первую очередь тем, что часть времени занимаются непосредственно разработкой. Кира Харитонова говорит, что примерно 30% времени программирует, 50% помогает коллегам разбирать инциденты и организует их работу, а 20% занимается долгосрочными задачами, например, написанием новых инструментов для команды.

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

Как стать специалистом по доступности сервисов

В «Дежурную смену» приходят люди из разных сфер. Кира Харитонова начинала Linux-администратором в банке, а потом пришла в Яндекс работать техническим менеджером. А Дима Меликов занимался системным администрированием.

Главный навык для того, чтобы поддерживать доступность сервисов, — умение решать задачи в непростых условиях. «Я знаю много отличных программистов, у которых начинают трястись руки в стрессовых ситуациях — и они теряются», — рассказывает Дима Меликов.

Специалистам важно знать, как работает операционная система Linux, чтобы понимать, где возникают проблемы. Дежурным администраторам, инженерам и техническим менеджерам нужно знание Python, он позволяет автоматизировать рутинные задачи.

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

Для того, чтобы больше узнать о профессии дежурного системного администратора, полезно будет начать с этих двух книг:

— Эви Немет, Гарт Снайдер и др. Unix и Linux. Руководство системного администратора.

— Марк Лутц. Изучаем Python, 5-ое издание.

Однако практический опыт важнее теоретических знаний, а чтобы его набраться, можно пойти на стажировку в «Дежурную смену». От стажёров в команде ждут в первую очередь понимания того, как архитектурно устроена операционная система, какие проблемы могут привести к недоступности сервисов и как их можно решать.

Обычно начинающим дают задачи по автоматизации. Дима Меликов рассказывает, что последний стажёр занимался написанием скриптов для поиска проблем в видеотрансляциях. А до этого новый член «Дежурной смены» помогал с написанием телеграм-бота, с помощью которого можно узнать график дежурств и выпуска новых релизов. Стажёры не дежурят в одиночку: к ним всегда прикреплён наставник, который поддерживает и помогает.

Краткий пересказ от Yandex GPT