Современные вызовы в разработке программного обеспечения (ПО) требуют тесного сотрудничества между разработчиками и техподдержкой. Культура работы, нацеленность на сотрудничество, обратная связь, непрерывное обучение – задачи, которые уже десятилетие решает «ДевОпс». Говоря, что такое DevOps простыми словами, нужно понимать, зачем он нужен и где используется.
Описание DevOps простыми словами
DevOps – это набор практик, направленных на автоматизацию, интеграцию процессов между командами разработчиков (developers) и поддержки (support). Термин представляет собой комбинацию слов «разработка» (Dev) и «эксплуатация» (Ops). «ДевОпс» – это методология, помогающая устранить разрыв между командами, которые работали раздельно, для улучшения рабочих процессов, повышения качества готового продукта.

Использование методологии создает условия для организации больших команд, а также модели, благодаря которой процесс создания ПО может выполняться быстрее и проще. Методология затрагивает все этапы жизненного цикла выпуска и эксплуатации ПО: от планирования до обслуживания.
Какие сферы охватывает
Методология охватывает все сферы создания ПО. Если рассматривать вопрос более узко, то она охватывает сферы, связанные с тестированием, организацией обмена данных, сборкой, настройкой, кодированием, продакшном.
Для чего нужен
Цель «ДевOпса» – сломать барьеры, стимулировать сотрудничество между командами разработчиков и службой технической поддержки на протяжении жизненного цикла цифрового продукта.
Для этого сотрудники должны понимать, принимать, внедрять методы, которые позволят быстрее, безопаснее достигать поставленных целей.
Разновидности DevOps-практик
«ДевОпс» охватывает широкий спектр практик на протяжении всего жизненного цикла продукта.
Среди них:
- Непрерывная интеграция (Continuous Integration). Непрерывная интеграция (CI) – это практика интеграции изменений кода, поступающих от нескольких авторов, в один программный проект. Это передовая практика «ДевОпса». Разработчики объединяют изменения в центральный репозиторий, где затем выполняются сборка, тестирование итогового продукта.
- Автоматизированные инструменты. Используются для проверки правильности нового кода перед интеграцией. Система контроля – основа непрерывной интеграции. Она дополнена другими элементами управления, такими как автоматические тесты качества, инструменты проверки стиля синтаксис и др. Команды ищут способы автоматизировать процессы сборки и тестирования для согласованной интеграции, чтобы свести к минимуму ручные затраты на частые модульные и интеграционные тесты.
- Непрерывная поставка и развертывание (Continuous Delivery и Continuous Deployment). Непрерывная поставка – подход, при котором команды выпускают продукты из репозитория в рабочую среду автоматизированным способом. Это частое автоматическое развертывание новых версий приложения в рабочей среде. Оно фокусирует организацию на построении оптимизированного автоматизированного процесса выпуска продукта.
- Цикл обратной связи. Направлен на то, чтобы как можно быстрее довести ПО до конечного пользователя, получить ответ, а затем включить эту информацию в следующий цикл работы. Команды ищут способы автоматизировать процесс создания, тестирования и упаковки, настройки, развертывания приложений в целевой среде.
- Непрерывное тестирование (Continuous Testing). Команды ищут способы выявления уязвимостей в системе безопасности во время разработки приложения, а не после его запуска, включая полезную информацию для устранения уязвимости на ранних этапах жизненного цикла ПО.
Дополнительные практики используются для повышения эффективности работы, автоматизации рутинных задач.
Преимущества использования DevOps
Компании, внедрившие у себя «ДевОпс»-культуру, отмечают следующие преимущества:
- ускорение процесса разработки;
- увеличение скорости выпуска ПО;
- оперативное устранение угроз и ошибок в коде ПО;
- выпуск клиентоориентированного ПО.
Отказ от процессно-ориентированных моделей работы, в которых каждый специалист работает только в узкой направленности, позволяет добиться гибкости процессов разработки.
Суть профессии DevOps-инженер
Определения, кто такой «ДевОпс»-инженер:
- специалист, выступающий соединительным звеном между командами разработчиков и поддержки;
- профессионал, владеющий компетенциями в разработке ПО, администрировании, программировании.
Его задача – организовать рабочий процесс, объединить системы создания и развертывания ПО.
Необходимые знания
DevOps-специалист – молодая профессия, поэтому вузы еще не выпускают профильных специалистов. Но знать, чем занимается «ДевОпс»-инженер, необходимо. Он должен иметь большой опыт работы на позициях программиста, администратора, знать разные языки программирования, виды операционных систем, системы оркестрации контейнеров (Kubernetes, OpenShift Container Platform, Docker Swarm, Nomad), уметь пользоваться инструментами тестирования и сборки приложений.
Основные задачи
Задачи «ДевОпс»-инженера:
- повышение безопасности разработки;
- снижение количества ошибок и проблем в релизах продукта;
- исправление обнаруженных ошибок;
- автоматизация рабочих процессов;
- административная деятельность.
Должностные обязанности и услуги «ДевОпс»-инженера могут меняться в зависимости от проекта.
.jpg)
Карьерные перспективы
«ДевОпс»-инженеры, как и другие специалисты IT-индустрии, имеют возможности карьерного роста:
- Вертикального: senior – manager. Предполагает должность технического директора компании, занимающейся созданием ПО. Это требует не только развитых технических навыков и знаний, но и управленческих способностей.
- Горизонтального. Предполагает повышение стоимости специалистов на рынке за счет совершенствования технических навыков.
Возможен переход в разработку, что подразумевает работу с API, или администрирование.
Получение образования
Сегодня в вузах нет отдельной специальности DevOps-инженера, но можно получить высшее образование по специальности «Программирование», чтобы войти в профессию. Получить нужную специализацию можно на дополнительных курсах, которые проводят частные онлайн-школы. Их качество и польза зависят от программы обучения, но они помогают получить нужные знания по специальности, развить навыки, необходимые для работы над проектами.
Есть государственные программы дополнительного образования в сфере цифровой экономики, которые предлагают обучение по специальности «ДевОпс»-инженера.
Рынок DevOps ресурсов в России
Состояние рынка «ДевОпса» в России пока еще мало отслеживается, поэтому развитие профессии происходит во много хаотично. Первые исследования по теме были проведены в 2011 г. компанией Puppet, занимающейся созданием систем управления. Они проводились в формате закрытых опросов, а их результаты не были опубликованы. Полный отчет по состоянию рынка DevOps-ресурсов в России провела компания «Экспресс 42».
Стоимость использования инструментов DevOps
Стоимость использования зависит от того, какие инструменты DevOps используются. Например, Azure Services от Microsoft предлагает разные тарифы. Один тарифный план дает бесплатный доступ к инструментам для 5 пользователей, за каждого следующего полагается по $6 в месяц. Другой план с дополнительными инструментами тестирования стоит $52 в месяц за каждого пользователя.
Цена на инструмент непрерывной интеграции и развертывания Bamboo начинается от $10 за 10 рабочих мест в тарифе Small Teams и $1 100 за неограниченное количество пользователей. Есть и бесплатные инструменты, такие как Selenium и Jenkins, но они подходят не под каждую задачу или проект.
Как правильно внедрить DevOps
Первый шаг к внедрению «ДевОпс» – технический, т. е. нужна масштабируемая среда (чтобы поставлять продукты по методологии), реконфигурируемая, управляемая программами контроля (например, в файлах управления инфраструктурой – «тераформами», где можно легко изменить среду и легко воссоздать ее по требованию). Для этого часто используется инфраструктура Terraform, достоинство которой заключается в том, что ее можно расширить с помощью дополнительных плагинов (Google Cloud, GitHub, Heroku, Docker, Kubernetes).
Второй шаг – осмотр не только на платформы, но и производственной линии. В такой линии увеличивается производительность, локализуются возможные проблемы, проводится анализ, какие из выявленных проблем – человеческий фактор, а какие программные ошибки. Анализ необходим для повышения предсказуемости изменений в цепочке выпуска, увеличения скорости реакции команды на изменения в проекте.
Третий шаг – это продукты, создание которых состоит из пайплайнов, определяющих все нужные шаги и требуемое ПО. На данном этапе можно назначить управление продукту, который команда будет вести до финальной стадии и обслуживать после запуска.
Чтобы добиться успеха, внедрять «ДевОпс»-практики нужно, начиная с менеджерского состава проекта, и распространяться на команду. Это должно быть инициативой, основанной на задачах и целях команды, которая будет реализовать проект.
Недостатки DevOps
DevOps, как и другие практические разработки ПО, имеет недостатки, связанные со спецификой методологии:
- Низкую рентабельность для небольших проектов. У маленького проекта затраты на инструменты «ДевОпса» и переход на новую методологию разработки могут превышать ожидаемую эффективность.
- Нехватку опытных DevOps-инженеров. На российском рынке их задачи часто решают программисты и администраторы с развитыми управленческими навыками. Они осваивают необходимые инструменты уже в процессе работы над проектом.
- Необходимость в менеджменте. Руководство компании должно быть готово внедрять «ДевОпс»-методологию в процессы создания продуктов, давая командам разработчиков и техподдержки свободу в реализации проекта.
Для внедрения «ДевОпса» нужно не только изменить процессы разработки ПО, но и поменять корпоративную культуру компании. Без соблюдения принципов автоматизации, ведения документации и полного фидбека между участниками разработки, налаженного взаимодействия между подразделениями DevOps невозможен.

Инструменты для DevOps
Есть много инструментов для DevOps, но есть те, которые разработчики используют чаще других.
Ansible
Инструмент управления конфигурацией и оркестрацией, созданный на открытом исходном коде. Программа работает на ОС, написанных на Python 2, включая Red Hat, macOS и BSD.
Grafana
Платформа для аналитики и мониторинга на лицензии Apache 2.0. Собирает данные из источников инфраструктуры разработки, например docker-контейнеров, сетевого оборудования и веб-приложений, включая Graphite, OpenTSDB и Prometheus.
GitLab
Программа для управления репозиториями, а также анализа кода и отслеживания ошибок в нем. Часто используется для интеграции CI/CD на собственном сервере компании.