О DevOps и особенностях выбранной профессии

5 мин на чтение

1

Последние несколько лет я занимаюсь внедрением DevOps-практик в различных IT-компаниях. До этого много занимался разработкой программного обеспечения и системным администрированием. И успел закончить магистратуру по профилю ИТ. А сейчас — Lead DevOps Engineer в СберМедИИ.

За этот год удалось поучаствовать во многих интервью по обе стороны от баррикад: как со стороны кандидата на вакансию, так и в качестве интервьюера, который проверяет навыки собеседуемого. И у меня сложилось впечатление, что первое, о чем стоит говорить на интервью это - “а что такое DevOps по-вашему?”. И не важно: ты проверяешь или тебя. Ваши представления о профессии могут сильно расходиться, а это может стать препятствием в диалоге и в работе в будущем.

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

Но сначала…

Что такое DevOps?

DevOps – это методология, которая позволяет автоматизировать многие процессы разработки программного обеспечения. За счет этого разработчики и другие участники процесса работают эффективнее: быстрее создают, тестируют и выпускают качественные продукты на рынок — например, приложения для клиентов. Внедрение методологии влияет не только на работу программистов, но и на состояние бизнеса в целом.

DevOps помогает компаниям быстрее выпускать новые продукты на рынок и быстрее их обновлять.

Если коротко, цели DevOps можно описать тремя пунктами:

  • Софт должен обновляться регулярно.
  • Софт должен делаться быстро.
  • Софт должен развертываться удобно и в короткие сроки.

Сокращение DevOps расшифровывается, как development и operations.

«Dev» используется как сокращение, обозначающее работу программистов и всех, кто задействован в разработке продукта. Например, менеджеров, тестировщиков и других специалистов.

«Ops» – это общий термин, который характеризует работу системных администраторов, операционного персонала, администраторов баз данных, сетевых инженеров, специалистов по безопасности и других.

В итоге, DevOps – это командные усилия сотрудников, занимающихся разработкой, развертыванием и тестированием ПО.

devops-circle

DevOps-инженер - кто он?

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

Большинство DevOps инженеров — это системные администраторы, освоившие инструменты для программирования, или же разработчики, разобравшиеся с тонкостями процессов operations.

dev-plus-ops-joke

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

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

Особенностью профессии DevOps является необходимость постоянного и непрерывного изучения и применения нового: новых подходов, технологий и инструментов. Мало создать и внедрить процессы, их надо поддерживать, постоянно улучшать и оптимизировать. Необходимо следить, чтобы они отвечали всем текущим требованиям бизнеса и были максимально простыми, понятными и удобными для участников проекта.

Инструменты DevOps инженера

DevOps-инженер - чем он занимается?

Главная задача DevOps инженера — максимально увеличить предсказуемость, эффективность и безопасность разработки ПО.

Основная часть работы DevOps инженера приходится на этап выпуска релиза — поставки продукта заказчику. В центре внимания находится производительность всех потоков процесса доставки качественного ПО.

Наиболее важной обязанностью DevOps является налаживание взаимодействий между разработчиками, системными администраторами, тестировщиками и менеджерами. Он выступает своего рода евангелистом для команды разработки: рассказывает, как правильно выстроить процессы, какие DevOps-практики и инструменты использовать, и первым начинает их внедрение и обеспечивает их поддержку для всей команды.

Также в обязанности DevOps инженера входит:

  • Сопровождение сервисов от разработки до эксплуатации;
  • Выбор и настройка инфраструктуры под задачи проекта;
  • Настройка процессов непрерывной интеграции и доставки (CI/CD);
  • Поддержка и развертывание различных платформ и сервисов для команды;
  • Стандартизация окружений разработки;
  • Администрирование ОС Linux/Windows;
  • Администрирование баз данных;
  • Обеспечение сервисов мониторинга и сбора технических метрик и логов;
  • Обнаружение и исправление проблем;
  • Разработка скриптов для автоматизации широкого спектра задач.

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

Я вчера поднял gitlab с k8s в облаке, настроил автоматическую сборку приложения и запуск тестов из репы по пушу в stage-ветку и отдельно деплой из мастера с отправкой оповещения в slack-канал. Вот чем-то таким девопсы и занимаются.

Заключение

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

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

Также я понял, что построение сложных систем и поддержание их в реальной жизни для меня интереснее, чем чистый код, который запускается в лабораторных условиях, без реальных пользователей и нагрузок. Грубо говоря, ехать на настоящей лошади по степи и потом мыть её, скрести, кормить — это гораздо интереснее и приносит больше удовлетворения, чем некий сферический конь в вакууме.

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

devops-on-the-flight

Полезные источники