Читать нас в Telegram

Один день из жизни программиста-рисёрчера

Рубрика: Статьи
,
3425

Антон Суслов, программист-рисёрчер в Acronis

Привет, меня зовут Антон Суслов, и я работаю в компании Acronis программистом-рисёрчером. Сегодня я расскажу, как проходит мой рабочий день, почему от моей работы зависят многие программисты, и почему в ней огромную роль играют legacy системы. Также я освещу, как моя работа помогает внедрению инноваций и новых инструментов в наш процесс разработки. Я часто слышал мнение, что функции DevOps могут выполнять любые программисты, но я убежден, что это не так. А моя текущая должность совмещает в себе DevOps и поиск новых решений для оптимизации существующих процессов.

Сразу скажу, что я начал работать ещё на 4 курсе. Сначала это была компания Яндекс, где я программировал на C++ и занимался развитием Яндекс.Браузера. После этого мне предложили стать стажёром в Acronis, и я сразу согласился, потому что меня позвали на позицию, связанную с DevOps.

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

При этом нужно понимать, что DevOps почти не пишет код, но должен уметь читать его, причём хорошо и много. Надо разбираться в том, как программисты написали свои сервисы, искать, откуда идут ошибки при деплойменте, понимать, что может стать причиной подвисания процесса. Нередко нужно читать вообще чужой код, который написали не в твоей компании, а авторы инфраструктурных компонентов. Порой, я благодарю бога и наших начальников за то, что мы пользуемся не Private, а Open Source продуктами. Иначе решать проблемы было бы на порядок тяжелее. Например, буквально сегодня я нашёл в OpenStack очередную багу и руками правил код, чтобы система заработала.

Утро

Обычно я начинаю рабочий день около 9 утра (раньше в офисе, сейчас из дома) и в первую очередь читаю почту. Именно на электронную почту приходят уведомления от приложений и сервисов, и e-mail — основной источник информации о том, что и где случилось. Круглосуточный мониторинг ведётся только для процессов, работающих в ЦОД, а для некритичных сервисов необходима утренняя ревизия ситуации. Она является обязательной частью моего рабочего дня.

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

В мои обязанности входит поддержка кластера Docker Swarm, настройка мониторинга и уведомлений, которые с каждым днём снижают долю ручного труда и помогают нам автоматически узнавать о проблемах ещё до того, как их заметят пользователи.

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

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

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

Параллельно я пишу дипломную работу на 5 курсе МФТИ, потому что я заканчиваю Физтех-школу радиотехники и компьютерных технологий. Это прекрасноe место, где можно получить обширный программистский бэкграунд. Уже много лет рядом со мной учатся и работают десятки людей, которые постоянно что-то пишут на разных языках программирования, и это стимулирует всё больше и больше знакомиться с самым разным кодом. С 14 лет я читаю Habr, Reddit, Hacker News. И сегодня это мое хобби приносит много пользы, так как именно на статьях я сформировал понимание, какие инструменты подходят для решения различных задач.

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

Сейчас мы приводим инфраструктуру нашего отдела к корпоративному стандарту Acronis и поэтому стремимся слезть с Docker Swarm на Kubernetes — более популярную и распространенную платформу, которую поддерживают RedHat, Google, Amazon и другие компании. К тому же на Kubernetes можно создать практически облачно-агностическую систему, которую можно запустить в AWS, Google или любых других облаках с минимальными доработками.

День

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

После обеда приходит время для моих типовых задач по упаковке legacy систем в Docker, Это приходится делать по той же причине, что и заливку файлов — доступ к production есть только у меня.

Взаимодействие с legacy системами уже стало для меня привычным. Я начинал свою работу (как дипломную, так и первые шаги в Acronis) с оптимизации партнёрского портала Acronis. У него оказалась очень хитрая структура: сайт, генератор страниц (свои страницы для каждого региона), а также редактор, в котором создаются отдельные HTML-компоненты для генератора страниц. Весь этот набор не получается запустить в разных контейнерах. И особенно много проблем появляется, когда на сайт нужно загрузить PDF или другой объёмный объект. Пришлось потратить 6 месяцев на то, чтобы всё это было читаемо, чтобы можно было поддерживать портал без лишних усилий, а разработчики могли что-то создавать для этого портала.

Сегодня я занимаюсь целым спектром legacy приложений, которые работают на старых ОС. Для сохранения этих сервисов создается контейнер на базе Docker, в него записывается все необходимое и через Kubernetes запускается в работу.

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

Вечер

Ближе к вечеру я уделяю время изучению новых технологий. Вместе с программистами мы выделяем проблемы, которые есть в инфраструктуре на сегодняшний день. Мы записываем их, формализуем задачи и на базе коллективного опыта, статей на различных порталах ищем новые технологии. Если новинка оказывается совместима со всем стеком, мы проверяем, работает ли она локально. Потом мы начинаем проверять её на базе небольших сервисов, которые явно «не Business-critical», и в случае успеха, начинаем примерять новинки к основным процессам. Например, именно так мы пришли к внедрению практики сбора логов из контейнеров в Elasticsearch.

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

В конце дня происходит очередной мониторинг событий, чтобы мы могли отследить какие-то отклонения, произошедшие за рабочий день.

Иногда приходится задержаться после рабочего дня. С завидной приодичностью в моей работе бывает, что «что-нибудь идёт не так». Мы, конечно, работаем над тем, чтобы таких ситуаций было меньше, и именно поэтому в компании происходит активное распространение Kubernetes и Docker. К тому же на сегодняшний день все наши сервисы взаимодействуют с Acronis Cyber Platform — открытой платформой кибербезопасности, к которой обращаются и внутренние пользователи, и клиенты, и партнёры компании. Это создает дополнительные сложности, потому что в случае сбоя приходится поднимать «на уши» и команду Cyber Platform, и наши собственные службы. Уже не раз было так, что я разбирался с задержками в работе серверов, а оказывалось, что она происходит на стороне другой команды, например, из-за сервисных работ или обновления.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации