О DevOps и особенностях выбранной профессии
Последние несколько лет я занимаюсь внедрением DevOps-практик в различных IT-компаниях. До этого много занимался разработкой программного обеспечения и системным администрированием. И успел закончить магистратуру по профилю ИТ. А сейчас — Lead DevOps Engineer в СберМедИИ.
За этот год удалось поучаствовать во многих интервью по обе стороны от баррикад: как со стороны кандидата на вакансию, так и в качестве интервьюера, который проверяет навыки собеседуемого. И у меня сложилось впечатление, что первое, о чем стоит говорить на интервью это - “а что такое DevOps по-вашему?”. И не важно: ты проверяешь или тебя. Ваши представления о профессии могут сильно расходиться, а это может стать препятствием в диалоге и в работе в будущем.
И сегодня хочу поделиться своим мнением о профессии DevOps-инженера. Постараюсь обходиться без профессиональной терминологии и рассказать в чем ценность DevOps для бизнеса, кто такой DevOps-инженер и чем он занимается.
Но сначала…
Что такое DevOps?
DevOps – это методология, которая позволяет автоматизировать многие процессы разработки программного обеспечения. За счет этого разработчики и другие участники процесса работают эффективнее: быстрее создают, тестируют и выпускают качественные продукты на рынок — например, приложения для клиентов. Внедрение методологии влияет не только на работу программистов, но и на состояние бизнеса в целом.
DevOps помогает компаниям быстрее выпускать новые продукты на рынок и быстрее их обновлять.
Если коротко, цели DevOps можно описать тремя пунктами:
- Софт должен обновляться регулярно.
- Софт должен делаться быстро.
- Софт должен развертываться удобно и в короткие сроки.
Сокращение DevOps расшифровывается, как development и operations.
«Dev» используется как сокращение, обозначающее работу программистов и всех, кто задействован в разработке продукта. Например, менеджеров, тестировщиков и других специалистов.
«Ops» – это общий термин, который характеризует работу системных администраторов, операционного персонала, администраторов баз данных, сетевых инженеров, специалистов по безопасности и других.
В итоге, DevOps – это командные усилия сотрудников, занимающихся разработкой, развертыванием и тестированием ПО.
DevOps-инженер - кто он?
DevOps-инженер — это специалист, который берет на себя многие процессы по ускорению разработки. Он автоматизирует многие рутинные операции вроде тестирования и обновления сервисов. В итоге команда разработки тратит меньше времени на рутину и может сфокусироваться на стратегических задачах.
Большинство DevOps инженеров — это системные администраторы, освоившие инструменты для программирования, или же разработчики, разобравшиеся с тонкостями процессов operations.
Опытный DevOps-инженер должен понимать, как создать быструю и устойчивую систему. Ему важно уметь видеть картину целиком, понимать узкие места и недостатки текущих процессов разработки, видеть возможности для улучшения. Огромным плюсом является умение строить в своём сознании схемы инфраструктуры, подсистем и сервисов, описывающие, какой элемент за что отвечает, и как они взаимодействуют друг с другом.
Путь DevOps сложен и объединяет в себе большое количество требований к навыкам, которые необходимо освоить. Чтобы войти в профессию, необходим значительный технический бэкграунд знаний и опыта.
Особенностью профессии DevOps является необходимость постоянного и непрерывного изучения и применения нового: новых подходов, технологий и инструментов. Мало создать и внедрить процессы, их надо поддерживать, постоянно улучшать и оптимизировать. Необходимо следить, чтобы они отвечали всем текущим требованиям бизнеса и были максимально простыми, понятными и удобными для участников проекта.
DevOps-инженер - чем он занимается?
Главная задача DevOps инженера — максимально увеличить предсказуемость, эффективность и безопасность разработки ПО.
Основная часть работы DevOps инженера приходится на этап выпуска релиза — поставки продукта заказчику. В центре внимания находится производительность всех потоков процесса доставки качественного ПО.
Наиболее важной обязанностью DevOps является налаживание взаимодействий между разработчиками, системными администраторами, тестировщиками и менеджерами. Он выступает своего рода евангелистом для команды разработки: рассказывает, как правильно выстроить процессы, какие DevOps-практики и инструменты использовать, и первым начинает их внедрение и обеспечивает их поддержку для всей команды.
Также в обязанности DevOps инженера входит:
- Сопровождение сервисов от разработки до эксплуатации;
- Выбор и настройка инфраструктуры под задачи проекта;
- Настройка процессов непрерывной интеграции и доставки (CI/CD);
- Поддержка и развертывание различных платформ и сервисов для команды;
- Стандартизация окружений разработки;
- Администрирование ОС Linux/Windows;
- Администрирование баз данных;
- Обеспечение сервисов мониторинга и сбора технических метрик и логов;
- Обнаружение и исправление проблем;
- Разработка скриптов для автоматизации широкого спектра задач.
У DevOps нет единого инструмента. Настроить, поставить и изучить несколько продуктов — не значит, что в компании появился DevOps. Инструментов очень много и все они задействуются на разных этапах, служа, однако, одной общей цели. Для того, чтобы лучше разобраться в профессии и понять, какие инструменты и технологии использовать, лучше всего руководствоваться дорожной картой DevOps.
Я вчера поднял gitlab с k8s в облаке, настроил автоматическую сборку приложения и запуск тестов из репы по пушу в stage-ветку и отдельно деплой из мастера с отправкой оповещения в slack-канал. Вот чем-то таким девопсы и занимаются.
Заключение
В качестве заключения хочется сказать, что прежде чем стать DevOps-инженером, я испробовал на себе многие отрасли и направления работы и пришел к выводу, что мне нравится именно DevOps за ту ценность, которую несет твоя работа для команды разработки и конечных клиентов вашего продукта в целом.
Результаты работы можно почти сразу “пощупать” и оценить. При этом постоянно выходят новые технологии и изменяются условия и требования бизнеса, что требует от тебя непрерывного совершенствования и постоянного изучения чего-то нового. А это тонкое искусство поиска и устранения неисправностей на рабочей системе сродни мастерству врача, когда от твоей “постановки диагноза и плана по спасению” зависит жизнь вашего продукта и данных в нем.
Также я понял, что построение сложных систем и поддержание их в реальной жизни для меня интереснее, чем чистый код, который запускается в лабораторных условиях, без реальных пользователей и нагрузок. Грубо говоря, ехать на настоящей лошади по степи и потом мыть её, скрести, кормить — это гораздо интереснее и приносит больше удовлетворения, чем некий сферический конь в вакууме.
А на самом деле, лучше просто быть хорошим специалистом в любой области, которая тебе нравится, и жить полной жизнью. И неважно, кто это — DevOps-инженер, актуарий или маркшейдер.
Полезные источники
- Кто такие DevOps? / Хабр
- Чем занимается DevOps-инженер и зачем он нужен компаниям / Mail.ru
- Кто такой DevOps и когда он не нужен / Playgendary / Хабр
- Roadmap по материалам о DevOps, помогающим его понять, осмыслить и принять
- Зачем нужен DevOps и кто такие DevOps-специалисты / EPAM / Хабр
- С чего начать DevOps? / Блог компании Nixys / Хабр
- Stop Arguing About DevOps Tools & Ship Code
- What is DevOps / Google
- What is DevOps / New Relic
- DevOps Definition / Ganter
- 50+ Useful DevOps Tools / DZone