Хорошо ли работать в техподдержке? Ну это зависит от того, что нужно поддерживать! Сегодня мы расскажем о том, какие задачи приходится решать саппортерам в Virtuozzo, а они поделятся своими секретами – почему пришли работать именно на эти должности.

image

Итак, техническая поддержка – это специфическая работа, связанная с постоянным общением с клиентами. Как бы мы ни старались сделать программный код лучше, проблем всегда хватает. Они могут быть связаны и с очередным релизом, и с нетипичным сценарием использования софта, и с непредвиденными ситуациями в личной серверной клиента. В нашем случае все эти неприятности приходится решать команде саппортеров, в которой работает 10 человек – и их количество планируется увеличивать.

image

Ведущие специалисты техподдержки Virtuozzo Мария Антонова и Анна Винокурова

— Я уже давно работаю в технической поддержке, и мне очень нравится эта работа с точки зрения языкового самосовершенствования. Английский – язык международного общения, для многих наших клиентов он не является родным, и это не может не накладывать свой отпечаток на манеру их речи и восприятие того, что вы говорите в ответ. Для тех, кто любит общение и лингвистику в целом, но при этом видит себя в техническом профиле, мне кажется, работа в подобной среде – очень полезна для прокачки языкового скила и карьерного роста, — говорит Анна Винокурова.

Практика работы службы техподдержки Virtuozzo вывела для себя несколько правил, которых нужно придерживаться при общении с клиентами из различных регионов. В этом случае работать оказывается проще, а результаты достигаются быстрее. Вот некоторые из них:

• Клиентам из азиатского региона не стоит писать слишком длинные и подробные письма, из всего письма вероятнее всего будут прочитаны только первые пара абзацев.
• При устном общении с американскими клиентами необходимо несколько раз давать подтверждение того, что вас поняли правильно.
• Немцам и австрийцам можно выдавать достаточно комплексные инструкции, состоящие из множества пунктов, и они будут применять их в точности так, как было написано

Вообще специфика работы саппортеров – очень высокая степень спонтанности. Никогда не угадаешь, в какой момент что-то пойдёт не так и инженеры должны быть, как говорится, «всегда наготове». Клиентам бывает нужна срочная помощь по разным причинам, но в основном любая срочность связана с обязательствами перед конечными пользователями – ведь большая часть клиентов Virtuozzo это хостеры, а неработающие виртуальные машины или контейнеры – это чьи-то недоступные сайты или базы данных.

Однако есть и предсказуемые волны нагрузки, они как правило связаны с релизами новых продуктов, выпуском мажорных апдейтов или же с обнаружением очередной уязвимости Linux.

— Когда в интернете публикуется очередной бюллетень безопасности (security advisory), в саппорт начинают приходить взволнованные клиенты, которые хотят узнать какие версии затронуты уязвимостью, и как скоро мы выпустим апдейт, — отмечает Анна Винокурова.

— Мне очень нравится работать в технической поддержке, потому что эта работа сочетает в себе задачи эксперта в сфере программного обеспечения, программиста и детектива. Иногда проблема оказывается настолько замаскирована, что ее решение — совершенно неочевидно. И каждый раз, когда удается разгадать загадку, «почему ничего не работает», приходит чувство глубокого удовлетворения и даже торжества! – говорит Мария Антонова.

Чем же занимается саппорт Virtuozzo?

Для тех, кто раздумывает, не пойти ли работать в саппортеры, мы расскажем несколько историй из реальной практики нашей техподдержки.

1. Память не добавляется – ошибка CPU

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

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

Причина оказалась весьма серьезной: на физическом сервере «выбило» сокет CPU, и он перестал определяться, а вместе с ним все виртуальные ядра в пределах сокета ушли в offline. Естественно, при изменении лимитов памяти для виртуальной машины валидация будущей конфигурации не проходила просто в целом, ведь количество ядер стало превышать количество доступных ядер на узле сервера.

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

Решение

На клиентском сервере было внесено исправление в python-составляющую продукта, которое позволило продолжать корректную работу, несмотря на существование узлов NUMA, состоящих целиком из offline-ядер. После этого мы смогли выставить количество CPU в пределах реальных “выживших” ядер для виртуальной машины, а значит – стали возможными дальнейшие изменения конфигурации.

Впрочем, последовали и более глобальные улучшения: в коде продукта на постоянной основе было улучшено определение статусов CPU: пустой массив с виртуальными CPU, принадлежащими одной группе NUMA больше не вызывает ошибок в коде и считается легальной ситуацией.

«На самом деле клиенту очень повезло, что его сервер оставался доступен достаточно длительное время, несмотря на такой серьезный аппаратный сбой. Это позволило мигрировать виртуальные машины на другие хосты, пока они всё ещё были доступны», — отметила Мария Антонова.

2. Пропадание сетевого подключения в виртуальных машинах

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

Для исследования проблемы необходимо было получить виртуальную машину в момент воспроизведения проблемы, но сервисы внутри виртуальных машин должны были работать без перебоев, и наши исследования в режиме «онлайн» вызвали бы проблемы для большого количества конечных пользователей. Поэтому клиент предоставил нам копию виртуальной машины, на которой мы смогли воспроизвести проблему и исследовать её в нашей среде без неудобств для пользователей. Баг нашелся в механизме выделения памяти для сокет-буфера виртуального устройства virtio-net – часть модуля ядра.

Решение

Увы, быстрого решения проблемы, без изменения модулей ядра просто не было, оказалось, что клиент просто не обновился до последней версии Virtuozzo Linux. На момент обращения уже было выпущено обновление, причем в формате ReadyKernel. Это позволило применить обновление и решить проблему за несколько минут, даже не перезагружая сервисы.

3. Пользователь удалил все контейнеры

Один клиент решил напрямую сменить путь до приватной области контейнеров, но из-за ошибки в подготовленном им shell-скрипте, путь у всех контейнеров стал указывать в одно и то же место – общее хранилище всех контейнеров. Далее, как и следовало ожидать, один из конечных пользователей решил удалить свой собственный контейнер. Удаление привело к исчезновению всех контейнеров в хранилище – ведь обновленная конфигурация указывала на этот путь.

Решение

Чтобы предотвратить дальнейшую потерю данных, для конечных пользователей временно была отключена клиентская панель управления, чтобы они не могли остановить контейнеры, так как это привело бы к дальнейшей потере данных. С полностью удаленными контейнерами было ничего не сделать, поэтому задача сводилась к восстановлению метаданных для тех контейнеров, которые оставались запущенными.

Поскольку пострадавших контейнеров было около 400 штук, задача была достаточно творческой – нужно было написать скрипт, который делал бы схожие, но не однотипные манипуляции для всех пострадавших. Как показала более глубокая инспекция, для 200 контейнеров данные были потеряны полностью, так как контейнеры в этот момент находились в остановленном состоянии. Но для запущенных контейнеров удаление не прошло полностью, так как их виртуальные диски были заблокированы. В таких контейнерах были потеряны все данные, кроме самих виртуальных дисков – метаданные, конфигурационные файлы и другие сервисные файлы.

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

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

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

И детектив, и лингвист, и программист

Таким образом, мы можем уверенно сказать, что наша служба поддержки – это очень интересный коллектив, готовый решать многоплановые проблемы и даже заниматься доработкой продукта. И если вы хотите попробовать себя в такой работе, можете работать по ночам и не боитесь азиатского английского, у нас как раз могут открыться новые вакансии!
А вы хотели бы работать в технической поддержке?

Проголосовало 79 человек. Воздержалось 30 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Поделиться с друзьями
-->

Комментарии (14)


  1. Mako_357
    01.06.2017 07:11
    +1

    Ни слова про ITIL, хелпдеск, сроки реакции, выполнения и мониторинг.


    1. Gummio_7
      01.06.2017 09:34
      +1

      Название материала "день из жизни службы технической поддержки". То есть о жизни отдела. Ваши вопросы, кстати, тоже интересные. Попробуем и о них написать.


    1. Tto_ogarin
      01.06.2017 09:34

      Это не статья руководителя отдела технической поддержки, а специалиста, это мир их глазами. Мне было бы конечно интересно почитать про менеджмент и технические стороны вопроса


  1. Bringoff
    01.06.2017 08:37
    +1

    Я так и не понял, в чем собственно отличие от программера

    Я скорее не понял, в чем вообще связь саппорта с "программером".


    1. Gummio_7
      01.06.2017 09:35

      На то оно и опрос, чтобы выбрать свои ответы. :) Тем не менее, саппортерам нередко приходится тоже работать с кодом.


  1. vlreshet
    01.06.2017 09:32

    Как бы мы ни старались сделать программный код лучше, проблем всегда хватает
    Кто, саппорт старается сделать «программный код» лучше?)


    1. Gummio_7
      01.06.2017 09:35

      Ну не передергивайте. :) Компания старается сделать код лучше, но саппорту всегда есть работа. :)


  1. azatix
    01.06.2017 09:35

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


  1. isden
    01.06.2017 10:10

    А где варианты «А я уже» и «Было дело»? :)


    1. Gummio_7
      01.06.2017 11:07

      Не предусмотрено конструкцией. :) Мы же опрос проводим о будущем, а не о прошлом. Буду признателен, если ответите, хотели бы еще поработать или "нетужки" :)


      1. isden
        01.06.2017 11:21

        У нас саппорт — это несколько больше, чем «классический» саппорт. Примерно как у вас, но чуть больше упор в сторону программизма на нескольких языках и ковыряние в кишках самых разных серверов (доводилось даже AIX пощупать, например). В целом — это более интересно, чем чистое программирование или администрирование. Хотя и более утомительнее и напряженнее. Так что я пока в варианте «А я уже» :)


  1. Pakos
    01.06.2017 10:30

    Тоже искал вариант "уж было", ответил "Нет, я не люблю общаться с клиентами", ибо чистая правда, особенно после "было дело", и ещё более после совмещения с разработкой. Так что сейчас даже намёк на поддержку клиентов заставляет отказаться даже от вроде-хорошей вакансии (не консультирование отдела сопровождения или документирование процедур, разбор сложных случаев, а именно "Здравствуйте, Организация-как-нас-там, ..." на первой-второй-третьей (обычно — единственной) линии поддержки с выяснением что было сделано из-за чего "оно само"). Хотя, как и у автора выше, клиенты были довольны — не любовь к занятию это одно, но если взялся (какие бы ни были причины) — нужно стараться делать хорошо.


    PS. Интересное слово "как uоворится", прям дорогим-Леонидом-Ильичём-из-анекдотов повеяло.


    1. Gummio_7
      01.06.2017 11:06

      Pakos — спасибо за внимательность! :)


  1. Cheater
    01.06.2017 19:55

    > Чтобы предотвратить дальнейшую потерю данных, для конечных пользователей временно была отключена клиентская панель управления,

    А как это у клиентского скрипта хватило прав на удаление данных других клиентов? У вас права rwxrwxrwx на всё?))