Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Представляем новую статью из цикла «Карьера в IT». Она посвящена должности DevOps engineer — такие специалисты работают на стыке областей разработки и системного администрирования, обеспечивая эффективность процесса поставки ПО.

DevOps (development + operations) — это зародившаяся в 2009 году методология, нацеленная на взаимодействие программистов и системных администраторов для увеличения частоты выпуска релизов. Соответственно, DevOps engineer — специалист, который работает на стыке этих двух должностей и занимается автоматизацией жизненного цикла приложения (включая проектирование, разработку, тестирование, развертывание, поддержку и мониторинг).

По данным ДОУ, среднему украинскому DevOps инженеру 28 лет, он имеет зарплату $1200-2700 и опыт работы 4 года.

Задача и обязанности

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

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

Devops

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

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

В обязанности DevOps engineer входит:
— Развертывание поставленного разработчиками релиза в производстве;
— Интеграция и углубление процессов разработки в поставку;
— Стандартизация окружения разработки;
— Настройка инфраструктуры на особенности разрабатываемого ПО;
— Подготовка продуктивной среды к частым внесениям изменений;
— Обнаружение и исправление проблем;
— Автоматизация процессов.

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

«Автоматизация различных задач, связанных с деплоями софта, который разрабатывается, деплоями системного софта, конфигурированием. Обеспечение мониторинга, реакция на различные внештатные ситуации. Улучшения платформ в плане снижения цены за инфраструктуру, в плане производительности и простоты. Предоставление различных доступов для разработчиков (например, в репозитории, VPN). Дизайн систем, их архитектура».

«На мой взгляд, основными задачами DevOps являются автоматизация процессов разработки (выкатить ветку из git для тестирования, выкатить определенную версию приложения в production, автоматизация управления инфраструктурой), мониторинг состояния приложения, по возможности автоматическое восстановление приложения и соответствующие оповещения членам команды».

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

«Я постепенно „переехал“ в DevOps из Dev отдела. В работе приходится активно контактировать с Dev, Ops и QA отделами, c другими отделами реже. Если описать должность DevOps одной фразой, я бы сказал так — создавать инструментарий для Dev, Ops, QA etc отделов, чтобы им было легче и удобнее работать».

«Создаем новые виртуальные машины, пишем сервисы для их дополнительного мониторинга и так далее».

«Я вчера поднял teamcity/gradle+gitlab и настроил автоматическую выкладку сайта по коммиту в репу на сервер. Вот чем-то таким девопсы и занимаются».

Преимущества и недостатки

Главное достоинство профессии DevOps engineer — рост интереса компаний к концепции DevOps. По данным EMA, около 30% компаний уже реализовали или планируют реализовать DevOps в ближайшее время. То есть спрос есть — без работы хороший специалист не останется.

Самих DevOps специалистов привлекает то, что в работе они имеют 100% загрузку, в отличие от профессии системного администратора.

«Нравится фактор неожиданности — это делает работу довольно интересной и не превращает в рутину».

Другой плюс — широкая специализация:

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

Некоторых привлекает то, что результат работы можно «потрогать руками»:

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

Недостатки профессии, похоже, не отличаются от таковых у системных администраторов:

«Ночные неожиданности».

Как стать и куда двигаться дальше

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

«В голове нужно иметь библиотеку по всем доступным технологиям, начиная от методов кодирования сигналов до последнего модного продукта Open Stack».

Необходимые качества:
— Аналитический склад ума;
— Стрессоустойчивость;
— Умение не сдаваться даже в безвыходных ситуациях.

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

Возможные карьерные пути DevOps инженера:
— Расти как DevOps специалист, углубляться в специализацию и осваивать смежные технологии;
— Переквалифицироваться в разработчики, если начинали как системный администратор;
— Переквалифицироваться в сисадмины, если начинали как разработчик (если интересно больше работать с инфраструктурой, чем с разработкой);
— Переквалифицироваться в инженеры по IT-безопасности;
— Также открыты пути в системные архитекторы, тестировщики (в том числе автоматизаторы), проектные менеджеры.

«На самом деле, лучше просто быть хорошим специалистом в _ЛЮБОЙ_ своей области, которая тебе нравится, и жить полной жизнью. И неважно, кто это — DevOp или химик нефти».


P.S. Спасибо за помощь в написании статьи Алексею Асютину и еще 5 украинским DevOps инженерам, которые поделились с DOU таинствами своей профессии. Приведенные в статье цитаты взяты из их рассказов.

 

Источник: https://dou.ua/lenta/articles/devops-engineer-position/

Наверх