Что такое DevOps и зачем он нужен в IT-компании
Рассказываем про устройство DevOps: что это такое, как внедрить и в чем польза методологии для бизнеса и разработки.

DevOps — это методология непрерывной разработки программного обеспечения, которую используют программисты, тестировщики и системные администраторы. Ее цель — сократить жизненный цикл разработки и обеспечить более частые выпуски версий и нового ПО за счет автоматизации процессов создания, тестирования и развертывания кода. Такой подход помогает повысить общее качество ПО и быстрее выявлять и устранять проблемы.
Рассказываем про устройство DevOps: что это такое, как внедрить, особенности профессии DevOps-инженера и в чем польза методологии для бизнеса и разработки.
Что такое DevOps
Название DevOps образовано от сочетания слов development и operations. Главная идея методологии в том, что разработка, тестирование и эксплуатация ПО становятся единым циклическим процессом.
DevOps объединяет разработку и операционную деятельность для создания эффективной и надежной IT-инфраструктуры. Методология способствует сотрудничеству между разработчиками ПО и операционными командами для автоматизации процессов, таких как развертывание сервисов и резервное копирование. Особое внимание в DevOps-подходе уделяется автоматизации, безопасности действий и коммуникации между командами, чтобы они могли быстро предоставлять программные продукты.
Зачем команде разработчиков внедрение DevOps
Используя DevOps, компании могут уменьшить сложность своей IT-инфраструктуры, обеспечить большую безопасность и надежность своих программных продуктов, чем при традиционных подходах к разработке. С помощью DevOps происходит автоматизация таких процессов, как подготовка инфраструктуры для разработки, тестирование и эксплуатация приложения, развертывание и мониторинг.
Почему использование DevOps — хорошая практика
Метод непрерывной разработки позволяет командам быстрее и с меньшими усилиями доводить до релиза свои продукты. Среди преимуществ внедрения DevOps:
- непрерывная интеграция и доставка позволяют командам быстрее и чаще создавать, тестировать и развертывать ПО,
- развитие культуры сотрудничества — успешная коммуникации между командами приводит к повышению качества ПО и уменьшению количества ошибок,
- практики DevOps помогают командам сократить время и усилия для выполнения повторяющихся задач, что позволяет сосредоточиться на более важной работе,
- непрерывное тестирование и мониторинг помогают командам быстрее выявлять и устранять проблемы, за счет чего повышается качество ПО,
- методы DevOps — контейнеризация и микросервисы — позволяют командам создавать и развертывать ПО более гибким способом, что облегчает адаптацию к изменяющимся потребностям бизнеса,
- мониторинг и протоколирование обеспечивают командам большую видимость производительности и поведения их ПО, что, опять же, позволяет быстрее выявлять и устранять проблемы.
Польза методологии для бизнеса
DevOps помогает компаниям создавать ПО более высокого качества и с меньшими затратами. Несколько плюсов использования DevOps для компании:
- ускоренное время выхода на рынок — DevOps позволяет организациям быстрее выпускать новые функции и обновления, что может дать конкурентное преимущество,
- DevOps повышает гибкость процессов — помогает компаниям быстрее реагировать на изменение потребностей бизнеса и рыночных условий, облегчая адаптацию и итерации разработки своего ПО,
- автоматизация и контейнеризация облегчают компаниям масштабирование ПО для удовлетворения растущего спроса,
- DevOps помогает организациям снизить затраты за счет автоматизации повторяющихся задач, сокращения времени простоя и повышения эффективности работы команд.
Проблемы при разработке приложений без DevOps
Если работать без DevOps, то могут возникнуть проблемы совместимости ПО. Допустим, у нас есть команда разработчиков, которые пишут код какой-то части приложения. Они выбрали определенный язык программирования, ОС (например, что-нибудь из семейства Linux), используют какой-нибудь фреймворк для разработки, возможно, настраивают связность с выбранной базой данных.
Затем разработчик достигает нужной функциональности приложения и отправляет его на тестирование: упаковывает в архив код, копию БД, инструкцию по установке всего необходимого софта для запуска и работы приложения.
QA-специалист распаковывает архив, устанавливает все необходимое на тестовый стенд, разворачивает приложение и тестирует. Если во время тестирования появилась новая версия разработки, то придется повторить всю процедуру. Разработчику — создать и передать архив, а тестировщику — развернуть приложение. В результате увеличивается вероятность ошибок, а тестировщик отлавливает одни и те же баги несколько раз. Запуск фичи оттягивается.
Помимо этого, версии могут быть несовместимы в тестовой среде и на сервере заказчика. После окончания тестирования системный администратор подготавливает новый или уже существующий сервер, а программист заливает на него приложение.
Версия языка программирования, базы данных или СУБД могут отличаться от тех, на которых велась разработка. В итоге при использовании в продакшене другого веб-сервера могут случиться конфликт программного обеспечения — приложение придется настраивать заново.
Без автоматизации и совместной работы, обеспечиваемой DevOps, циклы разработки ПО могут быть намного длиннее. А без непрерывного тестирования и мониторинга командам сложнее выявлять и устранять проблемы.
DevOps as a Service
Избавьтесь от проблем, продиктованных отсутствием DevOps-подхода в компании, и отдайте эту работу на аутсорс.
Инструменты DevOps
Инструменты DevOps используют для автоматизации и оптимизации процессов. Важно отметить, что выбор инструментов будет зависеть от конкретных потребностей компании и процесса разработки ПО. Популярные инструменты DevOps:
- непрерывная интеграция и доставка: Jenkins, Travis CI, CircleCI,
- автоматизация инфраструктуры: Ansible, Puppet, Chef,
- контейнеризация и оркестровка: Docker, Kubernetes,
- мониторинг и протоколирование: Prometheus, Nagios, Logstash,
- тестирование и обеспечение качества: Selenium, JUnit, Cucumber,
- облачные платформы — например, облако Selectel,
- ChatOps: RocketChat, Chanty, Mattermost.
Остановимся подробнее на нескольких ключевых инструментах DevOps.
Kubernetes
Kubernetes — система оркестрации контейнеров с открытым исходным кодом. Kubernetes широко используется в DevOps для управления и развертывания контейнеризированных приложений. Она позволяет автоматизировать развертывание, масштабирование и управление контейнерами в кластере.
Чтобы пользоваться этим оркестратором, компании реализуют поддержку микросервисной архитектуры, при которой приложение разделено на NN-ое количество самостоятельных сервисов. Они упаковываются в контейнеры, где они обособлены от воздействия других частей приложения. При этом Kubernetes будет автоматически добавлять реплики приложения при возросшей нагрузке и удалять ненужные, когда нагрузка спадет.
Подробнее о Kubernetes — в частности, о готовых кластерах — мы рассказывали в блоге:
- Как Managed Kubernetes помогает бизнесу
- Как развернуть свое приложение в Kubernetes
- Готовые кластеры Kubernetes: легкий старт, автоматизация и другие преимущества перед self-hosted
GitLab
GitLab — веб-платформа DevOps, помогающая командам управлять и координировать разработку программных приложений. GitLab сочетает в себе систему управления исходным кодом, инструмент управления проектами, платформу непрерывной интеграции и доставки. GitLab предоставляет пользователю платформу для совместной работы и обмена информацией. Веб-платформа облегчает отслеживание прогресса, выявление проблем и управление задачами.
Кроме того, GitLab предоставляет разработчикам набор инструментов для быстрой и простой сборки, тестирования и развертывания кода. Эти инструменты включают контроль версий, проверку кода и конвейеры CI/CD. Платформа обеспечивает безопасную среду для совместной работы команд над проектами, гарантируя безопасность и конфиденциальность.
Ansible
Ansible — платформа автоматизации ПО с открытым исходным кодом, которая помогает развертывать, настраивать приложения и системы, а также управлять ими. Инструмент подключается к узлам и распространяет модули Ansible — небольшие программы, которые можно использовать для настройки ОС, установки и обновления приложений, автоматизации многоуровневых приложений и развертывания систем.
Ansible использует простой синтаксис YAML для определения задач и рабочих процессов. Это позволяет DevOps-командам быстро создавать и изменять сложные задачи автоматизации без необходимости писать сложный код. Кроме того, Ansible хорошо интегрируется с другими популярными инструментами DevOps, что позволяет легко включать его возможности по автоматизации в рабочие процессы.
Python
Python — мощный, универсальный и простой в изучении язык программирования, который популярен среди DevOps-команд. С его помощью можно писать сценарии для автоматизации задач, таких как настройка систем, развертывание приложений и выполнение задач по обслуживанию.
Python используют для интеграции с другими инструментами DevOps, такими как Ansible и Chef. Кроме того, Python имеет обширную библиотеку пакетов, которые можно использовать для расширения его функциональности и создания мощных приложений.
В разработке Selectel используется не только Python, но и язык программирования Go — тоже часто встречающийся в DevOps-практиках ЯП.
Карьера DevOps-инженера
DevOps-инженер отвечает за разработку, эксплуатацию и обслуживание IT-инфраструктуры организации. Его обязанности включают в себя разработку, развертывание и управление приложениями, сетями, серверами и другими IT-системами.
Что должен знать DevOps-инженер
DevOps-инженеры отвечают за обеспечение эффективной и безопасной работы систем, а также за устранение любых возникающих проблем. В их сфере обязанностей — автоматизация процессов, таких как развертывание инфраструктуры, приложений и резервное копирование. Для этого используют скриптовые языки, например, Python.
DevOps-инженеры разбираются в методологиях разработки ПО, таких как Agile, сотрудничают с разработчиками ПО и операционными командами. Также они владеют различными инструментами: системами мониторинга и протоколирования, системами управления конфигурацией и технологиями контейнеризации.
Помимо hard skills, для этой роли важно обладать сильными коммуникативными навыками, поскольку в задачи часто входит сбор требований от заинтересованных сторон и представление решений, отвечающих им.
Это касается многих IT-профессий, но задачи DevOps-специалиста могут отличаться от компании к компании. Кроме того, есть дополнительные названия должностей, которые близки к работе DevOps-инженера — например, билд-инженер, который отвечает за построение CI/CD-процессов. Поэтому, если вы претендуете на роль DevOps-инженера в компании, внимательно читайте вакансию и не стесняйтесь задавать дополнительные вопросы по поводу роли в компании.
Заключение
Методология DevOps помогает решить многие проблемы на всех стадиях жизненного цикла ПО. Однако для реализации этого подхода нужны квалифицированные специалисты. Не каждая компания может позволить себе нанять в штат DevOps-инженера. Для таких есть услуга DevOps as a Service. В рамках сервиса специалисты Selectel внедрят и поддержат DevOps-подходы в компанию: создадут комфортную среду разработки для приложений, продумают их архитектуру, перенесут на IT-инфраструктуру Selectel, настроят CI/CD-процессы.
DevOps-практики: Кто? Где? Сколько?

DevOps-инженера ищут многие, но находят не все. Специалисты, умеющие внедрять DevOps-практики, последние 3 года являются одними из самых востребованных на IT-рынке. Спрос на них постоянно растёт. Заработная плата, несмотря на кризис, тоже не падает. Хорошие причины, чтобы задуматься, как прийти в эту профессию и каким образом в ней развиваться?
Специальность DevOps-инженера действительно появилась в IT-индустрии относительно недавно и быстро вырвалась в «топ». Development Operations – это, в первую очередь, набор практик, призванный улучшить и автоматизировать процесс доставки продукта до конечного пользователя, и он может быть полезен везде, где речь идёт о разработке приложений или управлении большим количеством серверов. Пожалуй, только небольшие команды могут позволить себе не выделять DevOps в отдельную функцию и обходиться исключительно своими силами.
Итак, какие задачи решает DevOps-инженер?
Его основная цель – выявлять «узкие места» и при помощи DevOps-практик обеспечивать «прохождение» продукта через эти «ловушки». Решаемые задачи всегда носят практический характер и находятся на стыке разных областей. Как правило, они зависят от потребностей продукта, от команды и подходов, которые применяются в той или иной компании. Проекты, входящие в зону ответственности DevOps, можно сгруппировать в четыре основных направления:
- Обеспечение полного жизненного цикла продукта;
- Подготовка различных окружений (разработка — тестирование — production) и обеспечение поставок продукта на эти окружения;
- Обеспечение автоматического прохождения продукта через различные стадии непрерывной интеграции (CI) и непрерывной доставки (CD);
- Виртуализация и управление инфраструктурой, мониторинг.
Результатом внедрения методологии и практик DevOps становится синхронизация различных этапов разработки и выпуска конечного продукта. Чтобы решать задачи подобного масштаба, DevOps-инженер должен выступать одновременно в роли админа, разработчика, тестировщика и менеджера. Однако не стоит думать, что появление такого человека в команде сразу и полностью решит проблемы. Все члены коллектива, чья деятельность, так или иначе, подразумевает связь с DevOps, оказываются вовлечены в эти процессы.
Исходя из направлений деятельности, на практике DevOps-инженер используют следующие инструменты:
- CI/СD и интеграцию (Jenkins, TeamCity, GitLab, Bamboo);
- Автоматизацию (Terraform, Puppit, Ansible);
- Облачные платформы (AWS, Google Cloud Platform, Microsoft Azure, Huawei Cloud, Яндекс Облако, Mail.ru Cloud Solutions);
- Мониторинг (Prometheus, Grafana, Zabbix, Nagios);
- Системы логирования, трассировки (ELK Stack, Graylog, Gafana, Jaeger);
- Контейнеризация и орекстрация (Docker, Kubernetes, Nomad).
Карьерная карта
В DevOps приходят из разных профессий. Основные «доноры» — это System administrator, Automation engineer, QA automation, Build Engineer/ Release Engineer, Developer. Представители этих специальностей уже обладают рядом навыков, которые необходимо развить и расширить.
Андрей Синицын, Head of IT Optimisation Departmen в «ECommPay», рассказывает: «Я занимаюсь компьютерами с середины 90-х — я из того времени, когда эта профессия выбирала тебя. Передо мной никогда не стояло вопроса, чем заниматься по жизни. Сначала я работал программистом, потом понял, что мне интереснее эксплуатация, и ушел в DevOps. «Живой» продакшн — это всегда интересно. И, на мой взгляд, интереснее, чем написание программы: ты видишь, как код эволюционирует, как он работает, как он выполняет (или, как это часто бывает, не выполняет) ту задачу, для решения которой был написан».
Комплексность подхода, характерная для DevOps-процессов, и сложность их полного охвата объясняют тот факт, что на рынке труда востребованы курсы и сертификаты, как правило, связанные с повышением навыков использования конкретных инструментов, но не DevOps-практику целиком.
Сертификаты AWS, GCP, Azure, Kubernetes (CKA, CKAD) могут рассказать работодателю о том, что соискатель имеет навык работы с конкретными платформами, но, как правило, DevOps-инженером становятся только на практике.
Составляя идеальное «DevOps-резюме», важно отразить в нём навыки, которыми вы владеете, задачи в рамках уже реализованных проектов, их особенности, зону ответственности; используемый стек технологий и, конечно, не забыть о soft-skills. Андрей Синицин подчёркивает, что для DevOps «очень важны хорошие коммуникативные навыки, знание английского, обучаемость и out-of-box thinking — стандартный набор для любой специализации в IT. Еще я бы добавил, что большое преимущество в DevOps дает понимание бизнеса (или стремление к этому). Эксплуатация никогда не зарабатывает деньги напрямую, и осознавать business value того, что ты делаешь, очень важно».
В свою очередь, рассматривая те или иные вакансии, соискатель должен обращать внимание на информацию о компании и проекте, основных обязанностях, масштабе задач, которые предстоит решать, текущем состоянии жизненного цикла продукта и с помощью каких инструментов он построен (используемый стек).
Кстати, нам вы также можете прислать резюме по этой ссылке.
Перспективы – сегодня и завтра
DevOps-инженеры действительно зарабатывают больше всех в отрасли. В США, Канаде, UK заработная плата колеблется между 90 и 122 тысячами долларов в год. Что касается России, то в Москве работодатели готовы предложить такому специалисту в среднем 260 тыс. рублей в месяц (верхняя планка доходит до 350 тыс. ), в Санкт-Петербурге средняя зарплата составляет 200 тыс. рублей.
Есть и нематериальные мотиваторы. В частности, участие в масштабных проектах, решение сложных задач, возможность применять новые технологии и подходы. По словам Андрея Синицына, главный стимул, это «создаваемый продукт, наверное. И интереса добавляет то, что этот продукт — не «коробочный». Участие в таких проектах всегда вдохновляет, появляется даже ощущение «творца»: когда команда создает шаг за шагом большую и сложную систему, которая обрабатывает огромное количество трафика, отвечая требованиям надежности.
Конечно, в мои обязанности входит и рутинная работа: что-то падает, что-то зависает, кончается место, ломаются маршруты, теряется связь — это все сотни и сотни мелких повседневных задач, которые решают инженеры эксплуатации.»
Что касается возможностей карьерного роста, то для DevOps-инженера открыт путь к следующим позициям: Devops Team Lead, DevRel (Developer relations), Delivery Manager, Devops architect, Head of Engineering.
DevOps 2021: основные тренды
«Анализируя 2020 год, можно заметить, что в центре внимания стала, прежде всего, безопасность. В том числе, безопасность IT-продуктов, поэтому одним из самых заметных трендов является DevSecOps и в целом SDLC (Security development lifecycle). DevSecOps подразумевает встраивание процесса безопасной разработки в процесс DevOps, интеграцию парадигм безопасности в каждый из этапов разработки.
Внедрение таких подходов, как DevSecOps, невозможно без следующего тренда — автоматизации, одного из основных «китов» DevOps-практики. Скрипты, автоматизация, внедрение подхода IaC (инфраструктура как код) — все это обеспечивает гибкость, скорость процессов разработки и поставки продукта.
Стоит также выделить глобальный тренд, который существует уже несколько лет — это переход в cloud-native-среду и разработка приложений с учетом особенностей облачных платформ», — считает Элиса Данильсон, консультант направления IT&Telecoms в Санкт-Петербурге.
- Блог компании Get experts
- IT-инфраструктура
- Карьера в IT-индустрии
- DevOps
DevOps — что это такое и почему эти практики меняют мир разработки уже сейчас

DevOps — одно из самых обсуждаемых явлений на технологическом рынке в последние годы, а вакансии, имеющие эту приставку, стали одними из самых дорогостоящих. При этом многие компании до конца не понимают, что означает DevOps, как с этим работать и для чего вообще можно использовать. Мы подробно рассказываем о том, чем сервисный подход к IT отличается от продуктового, о практиках использования DevOps, культуре внедрения и технологиях, которые сделают взаимодействие инженеров разработки и эксплуатации намного эффективнее.
- Александр Титов, управляющий партнер Экспресс 42, основатель сообщества DevOps Moscow: Я живу в понимании DevOps как набора практик по организации целиком всей разработки
- Владимир Утратенко, Head of Technology Platform в Сравни.ру, со-организатор сообщества DevOps Moscow: Многие крупные компании, которые к 2023 году не начнут внедрять DevOps, просто не удержатся на рынке
- Виталий Рыбников, Lead Site Reliability Engineer в Tinkoff.ru: Компаниям нужен DevOps чтобы выживать, расти и развиваться в современном мире
Александр Титов, управляющий партнер Экспресс 42, основатель сообщества DevOps Moscow: Я живу в понимании DevOps как набора практик по организации целиком всей разработки

У термина DevOps довольно много определений — что же это такое и какую проблему решает DevOps?
— Я бы обратился тут к основам — откуда вообще появился DevOps. Он появился в 2009 году — когда компании, которые занимаются продуктовой IT-разработкой, поняли, что они не могут это делать в рамках сервисных подходов к IT, которые были сформированы в индустрии на тот момент. Стало понятно, что в бизнес-процессах не работает эта сервисная история — когда разработчики работают отдельно от администраторов, которые поддерживают системы в классическом их понимании.
Патрик Дебуа, слушая доклад Джона Асплоу об организации работы в продуктовой разработке компании Flickr, сказал, что основная проблема — в объединении разработчиков и администраторов. В итоге из этой проблемы и пошло название DevOps — это про то, как правильно организовать продуктовую разработку внутри компании. Когда команда делает продукт, а не IT-системы, которые просто поддерживают бизнес-процессы.
В целом я живу в понимании DevOps как набора практик по организации целиком всей разработки — и это не про сисадминов, и не про то, как Kubernetes выстраивается. Это про общее формирование подхода к продуктовой разработке. Тут ключевым моментом является формирование практики совместного сотворчества.
В сервисном подходе к IT это сотворчество было не обязательно — там все фокусируются просто на поддержке отдельных бизнес-функций. Сейчас же все сообщество ищет подходы в формировании творческой продуктовой разработки — в соединении производства и творчества. Для меня именно это является определением термина DevOps.
Какие практики входят в DevOps?
— Организация работы в команде, организация инструментов совместной работы, организация передачи опыта между разными специалистами в команде, инженерные практики по непрерывной поставке программного обеспечения. Плюс это практики observability — не мониторинг и логирование, а скорее понимание того, что происходит с процессом, и как пользователь взаимодействует с продуктом.
Как бизнес начинает использовать эти практики?
— В первую очередь компании нужно понять, что IT-направление — не сервисная история, а основная производственная функция. Нужно перевести IT из поддерживающей истории в зарабатывающую. Это первый шаг на уровне ментальности с точки зрения бизнеса. Дальше — нужно понять, каких компетенций тебе для этого не хватает, посмотреть на другие компании, которые в эту игру уже играют. Например, посмотреть на Google и Facebook — и увидеть, как они строят свои рабочие процессы, сравнить с производственными процессами в вашей компании.
После этого станут видны те компетенции, которых в принципе не хватает компании и продукту, который она делает. Их придется отстраивать каждой компании индивидуально — как организован процесс поставки ПО, как организована вокруг этого команда. Это те задачи, которые каждая компания решает только самостоятельно. По сути, решения этих проблем нельзя просто взять и скопировать — такая модель пришла из сервисного подхода, который мы стараемся изменить.
При сервисном подходе к IT компании берут лучшие практики с рынка и начинают их использовать — не задумываясь о причинах появления тех или иных решений. Внутри же продуктового подхода нужно выстраивать собственные кастомизированные процессы — искать то, что действительно нужно бизнесу, чтобы увеличивать ценность своего цифрового продукта.
Кто тогда такие DevOps-инженеры?
— К ним я отношусь как к временному эффекту. Мы сейчас находимся на водоразделе: моменте перехода IT из сервисной модели в продуктовую. В сервисной модели всегда такой подход, нужно закрывать функцию — для этого нужен специалист. Появилась странная штука DevOps? Не проблема, нужна роль, которая это закроет. И так появляется DevOps-инженер, который как Ops-инженер, но еще умеет что-то. Это мышление из старой модели, но уже про новые вещи. Люди еще не научились думать, как это делают настоящие продуктовые команды. Поэтому они ищут специалистов вот так — и просто не понимают до конца набор компетенций, который им нужен.
Читайте также Как устроен функциональный диалект Лиспа Clojure и почему использующие его программисты восхищаются им
Если посмотреть на описание вакансий DevOps-инженеров, то там всегда указываются абсолютно разные требования — это и системное администрирование, и поддержка сложных платформенных вещей, и описание платформы в виде кода, и взаимодействие с продуктовой командой в сфере доставки кода, и еще многие и многие процессы. Это очень большое количество компетенций в одном специалисте.
Я могу сравнить это с периодом начала интернета — тогда была позиция веб-мастера, который и почтовые сервера настраивал, и верстку на HTML делал, и продукт курировал, и дизайн создавал. Сейчас каждая компетенция ушла отдельному специалисту. Точно так же произойдет и с DevOps-инженером.
Зачастую в этом DevOps-инженере соединены все противоречия и недостатки текущей сервисной модели. Как только в компанию приходит DevOps-инженер, то у руководства сразу можно спросить — чем он будет заниматься. Окажется, что это либо фулстек веб-мастер, либо специалист с четко выраженными компетенциями — например, сисадмин. Тогда его так и нужно называть — инженер, например, по Continuous Integration. Однако пока в головах менеджеров, которые занимаются управлением в IT, это направление еще не разделилось, и они продолжают существовать в сервисной парадигме, а не думать продуктом и потребностями клиента или пользователей.
Думаю, что пройдет еще несколько лет, и DevOps-инженеры уйдут в историю, как веб-мастера. На их место придут отдельные инженеры по Continuous Integration, продакшн-инженеры, платформенные инженеры, которые работают с Kubernetes, специалисты, работающие с большими бэкенд-системами, такими как базы данных, и так далее. Так разделится эта профессия.
Что будет с DevOps в ближайшие годы?
— Все будет хорошо. В том смысле, что будут прописываться более четкие компетенции, появятся сформированные новые профессии внутри продуктовой разработки. Появятся организационные схемы — сейчас даже продуктовую разработку описывают таким образом: есть команда, внутри которой работают несколько DevOps-инженеров. Они помогают продуктовой команде выводить фичи в прод. Но на самом деле ключевым моментом является то, что все работают вместе, вместе несут ответственность за ошибки и отвечают за весь процесс — и продуктовая команда, которая делает код, и сервисные инженеры. Платформа, на которой идет разработка — принадлежит всем. И разделение, что если код не выкатывается, то виноват какой-то определенный инженер или команда — вредит всему подходу разработки цифрового продукта и взаимодействию с клиентом.
С точки зрения технологий у нас все уже есть, а вот с точки зрения культурных и организационных парадигм IT ждут серьезные перемены.
Важные ссылки про DevOps:
— Что такое DevOps
— Базовая книга по инженерным практикам
— Базовые вещи от гуру сферы
— Командные топологии и роли
Владимир Утратенко, Head of Technology Platform в Сравни.ру, со-организатор сообщества DevOps Moscow: Многие крупные компании, которые к 2023 году не начнут внедрять DevOps, просто не удержатся на рынке

У термина DevOps много определений. Что это такое и какую проблему он решает?
— Исторически у нас существует стена непонимания между ребятами, которые занимаются разработкой, и ребятами, которые занимаются эксплуатацией. DevOps — это как раз соединение development и operations. Соответственно, девелоперы хотели пилить фичи, поставлять свежий функционал, а ребята из эксплуатации — болели за надежность и стабильность и, соответственно, не очень любили новые фичи.
Так происходит не везде, но это достаточно распространенная картина в индустрии. В 2009 году на одной из конференции ребята из компании Flickr рассказали, что смогли подружить разработку с эксплуатацией, и в итоге деплоить свой сервис больше десяти раз в день.
Буквально следом за этим Патрик Дебуа — один из идеологов DevOps-движения, собрал конференцию, на которую пришло неожиданно много людей — и из разработки, и из эксплуатации. Пришли те, у кого это тоже болело — и с тех пор пошло, что DevOps — скорее, история про то, как им работать вместе, про организационные изменения, которые для этого нужны, про софт, помогающий ускорить эти процессы. Во многом это именно про людей, культуру и то, как они делают свою работу.
Наиболее подходящим определением будет, что DevOps — это путь разработки программного обеспечения в технологических компаниях. Именно путь — то есть, непрерывный процесс. Внедрить DevOps нельзя — его можно разве что вырастить внутри компании, стать DevOps.
А что такое тогда DevOps-инженер?
— DevOps-инженер — это исторически сложившийся HR-термин. Когда история с DevOps начала распространяться, многие компании захотели применять эти практики, но начали использовать неверный подход. Условно, приходит начальник компании к HR и говорит, что нужно внедрять DevOps, но для этого нужно найти человека, который умеет с этим работать. В итоге HR начинает искать DevOps-инженера — так термин и появился. В целом это совсем некорректно, но, несмотря на наше отношение, термин сложился, им пользуются на рынке — и просто так отмахнуться от него мы уже не можем.
Люди, которых называют DevOps-инженерами, чаще всего представляют собой сисадминов — людей из эксплуатации, которые занимаются поддержкой и обслуживанием сервисов информационных систем и инфраструктуры. По сути, эта та же самая позиция сисадмина, но названная иначе — и с другой зарплатой.
То есть разницы между системным инженером и DevOps-специалистом особой быть не должно?
— И да, и нет. Существуют DevOps-евангелисты, которые несут эту практику и культуру — они помогают компаниям проводить организационные изменения. Таким образом, чтобы компания начала использовать DevOps — не нужно нанимать DevOps-инженера, бизнесу самому нужно становиться DevOps-ориентированным. Люди в компании начинают работать таким образом, чтобы сложилась эта синергия, а организационная культура должна измениться до того уровня, чтобы специалисты начали друг с другом взаимодействовать более эффективно.
Единственные настоящие DevOps-специалисты — это DevOps-евангелисты, которые несут в себе культуру, практики и организационные изменения. А тех, кого сейчас в сфере обычно называют DevOps-инженерами — сисадмины, на которых свалили все что можно, от поддержки продакшна до построения процесса поставки и релиза программного обеспечения. При этом такие инженеры очень быстро выгорают — они не чувствуют себя комфортно на своем месте, они не занимаются какими-то конкретными вещами.
Кто в компании должен внедрять DevOps?
— В первую очередь руководство компании по IT и технологиям. DevOps — это вещь, которая в первую очередь идет именно с этой стороны. Конечно, иногда запросы на DevOps приходят со стороны инженеров, которых что-то не устраивает. Но без непосредственного участия людей, которые управляют разработкой и эксплуатацией, ничего не заведется. DevOps во многом основан на организационных изменениях и процессах коммуникации людей из разных департаментов. Поэтому наиболее эффективным методом внедрения DevOps является задействование людей из IT-менеджмента, чем рядовых специалистов.
Как технически устроен DevOps?
— Одна из ключевых вещей в DevOps — практики Continuous delivery и все, что с ними связано. Принципиальная разница по сравнению со стандартными подходами к эксплуатации здесь в том, что мы к любой задаче относимся как к программному решению, которое можно реализовать с помощью написания кода: не важно, это вещь, с которой работают внешние пользователи, это внутренний сервис или инфраструктура. В дополнение к этому важны архитектурные вещи, например, слабо связная архитектура, смысл которой, в первую очередь, в уменьшении количества зависимостей насколько это возможно, практики бережливого производства, вроде визуализации потока создания ценности и управления им. Кроме того, важны выполнение работы минимально возможными частями, практики мониторинга, а также культурных аспектов вроде поддержки взаимодействия между командами или продвижения идей трансформационного лидерства.
Каким будет будущее DevOps?
— Сейчас становится понятно, что все больше и больше бизнеса использует DevOps. Было какое-то исследование, что многие крупные компании, которые к 2023 году не начнут внедрять DevOps, просто не удержатся на рынке. Это очень вероятно, учитывая, что темпы производства программного обеспечения растут и необходимы новые эффективные способы взаимодействия между участниками процесса разработки и процесса поставки ПО.
Виталий Рыбников, Lead Site Reliability Engineer в Tinkoff.ru: Компаниям нужен DevOps чтобы выживать, расти и развиваться в современном мире

У термина DevOps достаточно много определений. Что же всё-таки такое DevOps и какую проблему он решает?
— Верно, определений довольно много. В настоящее время есть определённая путаница с терминологией. Да и однозначного чёткого ответа нет, каждый эксперт скажет свою интерпретацию. Хотя с самим термином «DevOps» плюс-минус всё понятно и есть на кого ссылаться. DevOps — набор практик и культурное движение, которое позволяет сократить Time-to-Market и доставлять стабильный и качественный продукт клиентам.
Зачем компаниям нужен DevOps? Чтобы выживать, расти и развиваться в современном мире. Мир меняется, и теперь уже нельзя пройти прямой путь от точки А к точке В по чёткому ТЗ. Клиенты каждый день хотят разного и нового. Точка В постоянно убегает (привет, Agile) и мы не знаем, как к ней прийти наиболее быстро. Поэтому важны итеративные маленькие шаги (частые релизы), регулярные тесты гипотез, быстрая обратная связь от клиентов и регулярная корректировка нашего курса, а также право на ошибки и эксперименты. Тогда у нас будет наибольшее число клиентов, довольных нашим продуктом. А значит, наша компания получает наибольшую прибыль и бизнес работает!
Всем ли это нужно? Конечно, нет. DevOps имеет смысл внедрять преимущественно технологическим компаниям, которые разрабатывают цифровой продукт и для которых важен Time-to-Market в своей нише (время от начала разработки идеи, до того момента, как её увидят пользователи).
Можно подумать: «А что, собственно, не так? Почему нельзя просто взять и релизить чаще, ничего не меняя?»
Ну, вот нельзя. В классической схеме без использования практик DevOps все основные стадии разработки продукта (аналитика, разработка, тестирование, эксплуатация) проходят линейно, друг за другом, что крайне медленно. Сюда же мы добавляем организационные проблемы:
- изоляция между отделами, благодаря которой нет обмена информацией и необходимой глубины коммуникаций и доверия
- отсутствие ответственного за весь продукт
- разные KPI и приоритеты у dev, qa и ops команд, благодаря чему каждый «тянет одеяло на себя» и делает так, как ему лучше
- каждая команда изобретает свой велосипед, в котором понимает только она (крайне трудно переиспользовать опыт).
В итоге у нас релизы раз в пару месяцев, и те периодически откатываем. Новые фичи и гипотезы доезжают до пользователей прода ещё реже. Никто постоянно не следит за продакшеном, а восстановление после сбоев затягивается на дни или недели.
В случае же DevOps — все стадии разработки продукта идут одновременно и максимально быстро, потому что структура всех коммуникаций и разработки направлены именно на это. Корректно будет сказать, что DevOps — это не конечная чётко определённая цель, это движение, по которому идёт вся компания. Это способ разработки программного обеспечения. DevOps — это когда люди, технологии и процессы объединяются ради одной миссии — клиентоориентированности.
Чтобы разобраться, какие конкретно принципы, практики и подходы рекомендуются в DevOps, есть несколько фреймворков:
- Три пути: принцип потока, принцип непрерывной обратной связи, принцип непрерывного обучения и экспериментирования
- CALMs
- Accelerate
Чем занимается DevOps-инженер в команде?
— В самой культуре и концепции DevOps, в её практиках и подходах нет такой сущности и выделенной единицы как DevOps-инженер. То есть или вся компания идёт по пути DevOps, или там и говорить не о чем. Но. есть теория, описывающая конечное состояние, а есть суровая реальность.
В жизни переход от «без DevOps» к «у нас DevOps» не бывает бинарным. Это длительный процесс, который в разных компаниях занимает разное время. Компания должна пройти этапы от «зарождения и прорастания идеи», к «DevOps-трансформации» и затем к финальному «непрерывному улучшению». Так вот, устоялось, что компании на первом и втором этапах называют «DevOps-инженерами» всех людей, использующих (или только начинающих) DevOps-инструменты.
Их можно понять, альтернативных терминов никто не предложил. Это не то, что бы «хорошо», но это реальность. Эдакий рудимент затянувшейся трансформации в российских реалиях. Все боятся и не хотят меняться, а чем крупнее компания — тем тяжелее и длительнее процесс. Однако я не замечал, чтобы компании, достигшие финала, продолжали «грешить» DevOps-инженерами. Куда-то они всё-таки деваются по мере взросления компании.
Чем занимается DevOps-инженер? Если проанализировать вакансии на hh.ru, то заниматься предстоит всеми ops-ролями сразу: сборка, деплой, CI/CD, развёртывание серверов, тюнинг ОС, поддержка приложений, поддержка баз данных, мониторинг, безопасность.
Набор ролей, которые ожидают на этой должности, варьируется от компании к компании. В маленьких компаниях, скорее всего, придётся заниматься всем и сразу. И это может быть как один человек, так и несколько, и даже целый DevOps-отдел. Неясно, что конкретно нужно, потому что нужно всё и сразу.
Ясность приходит позже. По мере взросления компании и смены парадигмы коммуникаций и вообще процессов, каждую роль занимает отдельный человек/люди с конкретной специализацией. И вот у нас уже появляются build-инженер, релиз-инженер, инженер платформы, DBA, Linux-инженер, SRE, специалист по безопасности и так далее.
Может ли программист стать DevOps-инженером? Как вообще становятся DevOps?
— Поговорим не совсем про реальность, но про идеальный случай, раз уж имеем дело с подобным собирательным образом. В идеальном случае DevOps-инженер, помимо глубокой технической экспертизы, разбирается в теме этого самого DevOps, и помогает распространять знания и практики, компетенции внутри компании (часть enabling team).
Стать таким персонажем может любой инженер: системный администратор, разработчик, инженер автоматизации, инженер платформы и т.д. Достаточно серьёзно углубить soft-skills, hard-skills, изучить культуру и практики.
Программист в некотором роде — идеальный кандидат, так как он изначально ближе всех к продукту и процессу разработки. Ему легче всех понять новые концепции, подходы и понять боль как Dev, так и Ops. You code it, you build it, you run it, you own it.
Как же приходят к DevOps? Это вот когда человек получил некий опыт работы в IT, затем начитался книжек, наслушался докладов, и в нём это откликается. Человек понимает, что больше нельзя жить как раньше! Хватит это терпеть! У него появляется жгучее желание сделать эту компанию лучше, изменить процессы, инструменты и подходы к работе и избавить коллег вокруг от регулярной боли и рутины!
Что стоит прочитать в первую очередь:
- Проект «Феникс»
- DevOps HandBook
- Accelerate
В чём разница между DevOps-инженером и системным администратором?
— В зарплате. Если серьёзно, могу предположить, что DevOps-инженер:
- Понимает, что в индустрии «что-то происходит», нужно быть в тренде и пора изучать «какой-то там DevOps»
- По сравнению с классическим сисадмином больше задумывается об автоматизации и умеет программировать
- Начинает (ооочень медленно и потихоньку) думать о клиентах и бизнесе.
Куда расти DevOps-инженеру?
— На самом деле — куда угодно. Самый популярный вектор — в SRE. Однако можно расти и в разработчика продуктовой команды, разработчика/инженера платформенной команды, архитектора, возглавить центр-компетенции, заняться развитием внутренних сообществ или перейти в enabling team. Всё очень зависит от кругозора, желаний и конкретной ситуации в конкретной компании. Каких-то конкретных ограничений нет, просто каждая из ролей подразумевает углублённую специализацию в ту или иную сторону.
Какие инструменты и технологии должен знать DevOps-инженер?
— Он однозначно должен знать базу и иметь хотя бы представление о многих вещах. Полноценный Ж-shape person. ОС/linux, сети, git, Docker, навыки разработки, базы данных, SQL, SDLC, CI, мониторинг и т.д. и т.п. Вот, кстати, довольно популярный универсальный «DevOps-roadmap» по инструментам и технологиям для изучения . А дальше нужно углубляться в конкретные инструменты под конкретные задачи, выполнения которых от тебя ожидают. Как мы помним, DevOps-инженер в разных компаниях будет заниматься абсолютно разным. Но ему точно потребуются soft-skills и навыки общения, так как общаться предстоит очень много.
Порекомендую пару известных сайтов для подбора инструмента под конкретную сферу/задачу, так как нынче их слишком много: раз , два .
Какие подходы и практики в своей работе используют DevOps-инженеры?
— Все принципы, подходы и практики трудно описать «коротко» и понятно. Перечислю основные технические практики:
- Быстрое и надёжное автоматизированное тестирование
- Динамические тестовые стенды
- Непрерывная поставка (CI, CD, TBD)
- IaC и версионирование всего как подход
- Непрерывный мониторинг и обратная связь
- Использование PaaS
- Кросс-функциональные команды
- Слабосвязанная архитектура
- Общая ответственность всех за свои решения
- Распространение знаний по командам и компании
- Привлечение команды безопасности на всех этапах SDLC
- и другие
Какое будущее ждет сферу DevOps?
— 2020 год наглядно показал, что переход в онлайн и цифровая трансформация для многих компаний не то что неизбежны, а жизненно необходимы. А значит, и перестройка на рельсы DevOps как часть цифровой трансформации – лишь вопрос времени, и останутся и выживут те, кто это осилит.
Познакомьтесь поближе с практиками DevOps на нашем интенсиве «DevOps для программистов»
DevOps
DevOps — это методология взаимодействия разработчиков, тестировщиков и других IT-специалистов в команде. Такая система нужна, чтобы команда работала более эффективно и слаженно, вовремя исправляла ошибки и грамотно взаимодействовала друг с другом. Специалиста по этой методологии называют DevOps-инженером, или девопсом.

«IT-специалист с нуля» наш лучший курс для старта в IT
DevOps описывают как идеологию, подход или набор методов. Это и процессы, и специальные технические решения, создающие внутри команды единую среду работы. Поэтому описывать методологию можно по-разному. Главное — цель: все перечисленное нужно, чтобы улучшить связь между разными специалистами IT-отдела.
Название произошло от двух сокращений: Dev — development (разработка) и Ops — operations (поддержка). Раньше это были две разные сферы. Идея DevOps в том, чтобы приблизить эти сферы друг к другу и наладить между ними эффективную коммуникацию.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

Для чего нужен DevOps-подход
До появления DevOps разработчики, тестировщики и администраторы часто работали вразнобой, и это приводило к замедлению работы, нарушению процессов и множеству незамеченных ошибок. Обновления программ могли выходить раз в несколько лет, а к моменту их появления многое уже успевало устареть. Это было неэффективно. Поэтому появилась гибкая методология Agile, подразумевающая непрерывную разработку маленькими итерациями. DevOps как идея вырос из этой методологии. Он помогает:
- облегчить непрерывную работу над продуктом, чтобы ошибки в коммуникации не тормозили ее;
- создать удобную среду для всех специалистов, работающих над проектом, — так при передаче работ от одного сотрудника к другому не возникнет багов;
- ускорить и улучшить разработку, сделать процессы более эффективными;
- повысить удовлетворенность клиента и самих сотрудников;
- продумать структуру проекта таким образом, чтобы в нем было меньше жестких зависимостей — чтобы при замене какого-то компонента не остановилась вся работа.
Чем занимается DevOps-инженер
Профессия DevOps Engineer — востребованная и престижная, но разные организации могут понимать обязанности такого специалиста по-разному. Вот чем может заниматься DevOps-инженер на работе:
- непосредственно писать код;
- настраивать рабочее окружение — виртуализацию, среды для разработки и тестирования продукта и так далее;
- автоматизировать процессы, которые отнимают лишнее время у разработчиков и администраторов;
- выстраивать процесс разработки так, чтобы это было эффективно и качественно;
- собирать разные «группы» работы над проектом воедино;
- внедрять DevOps-практики среди других специалистов.
Грамотный DevOps-инженер должен много знать. Он обязан разбираться в языках программирования, компьютерных сетях, операционных системах, уметь работать с сопутствующими технологиями: системами контроля версий, виртуализацией и т.д. Девопсов часто называют специалистами на стыке между разработчиком, инженером и системным администратором.
Вот пример. Разработчики выполняют какие-то шаблонные действия вручную. Задача DevOps-инженера — заметить это, предложить им решение по автоматизации, продумать и внедрить это решение. Скажем, написать скрипт, который будет автоматизировать рутину.
О том, что нужно знать и уметь DevOps-инженеру, мы подробно рассказали в статье.
Читайте также Самые востребованные IT-профессии 2024 года
Практики и инструменты методологии DevOps
Чтобы понимать, что такое DevOps, нужно иметь представление о его конкретных практиках. Основных всего пять:
- непрерывная интеграция, поставка и развертывание, или CI/CD;
- непрерывное тестирование;
- непрерывный мониторинг;
- микросервисы;
- инфраструктура как код, или IaC.
Целей у этих инструментов три: ускорение выхода продукта, автоматизация процессов и быстрая обратная связь от клиентов и пользователей. Расскажем о каждой практике подробнее.
CI/CD. Иногда ее разделяют на два пункта — непрерывная интеграция (CI) и непрерывные поставка и развертывание (CD).
- CI относится к обновлению и сборке кода. В DevOps-подходе разработчик не обновляет код вручную и не собирает его своими руками. Он отправляет его в специальный репозиторий, где тот сам собирается и интегрируется в другие части кода, а нужные участки обновляются. Это помогает разработчику меньше задумываться об интеграции и больше — о самом продукте.
- CD — это продолжение CI, то, что происходит с кодом уже после сборки. Подход подразумевает, что продукт автоматически разворачивается в какой-то тестовой среде для проверки. После тестирования он так же автоматически отправляется на рабочий сервер, где разворачивается и начинает работать.
CI/CD системы устроены так, чтобы свести к минимуму или вовсе устранить простои продукта при обновлении. Поэтому в процессе развертывания нового кода, скажем, на сайте пользователи все еще могут на него заходить.
Непрерывное тестирование. Этот процесс связан с предыдущими двумя. Тестирование в инфраструктуре тоже проводится непрерывно, так, чтобы снизить временные затраты сотрудников. Обычно оно устроено так: после развертывания на тестовом сервере программа проверяется автоматически. Запускаются юнит-тесты. Если программа их не пройдет, ее автоматически отправляют на доработку.
Только после прохождения юнит-тестов продукт уйдет на функциональное тестирование — «со взгляда пользователя». Его уже могут проводить люди, а не скрипты.

DevOps-инженер — связующее звено между всеми этапами создания продукта. Станьте незаменимым специалистом
за 6 месяцев.
Непрерывный мониторинг. Уже выложенное, развернутое приложение в парадигме DevOps тоже нуждается в контроле. За ним постоянно следят с помощью автоматизированных систем. Отслеживаются разные показатели, в том числе нагрузка на процессор и оперативную память, использование пространства на диске, политики безопасности и действия пользователей. Это помогает, во-первых, вовремя отслеживать ошибки, во-вторых, находить уязвимые места, которые стоило бы доработать, — и создавать соответствующие задачи. Например, можно отслеживать «дыры» в безопасности, недостаток функций, несоответствие изначальным требованиям и так далее.
Микросервисы. Это архитектура приложения, согласно которой оно разбито на множество мелких и независимых друг от друга модулей. Каждый из таких модулей — отдельный микросервис. Применение этой архитектуры характерно для философии DevOps: у независимых модулей есть целый ряд преимуществ:
- если откажет один микросервис, остальные продолжат работать — ниже риск, что из строя выйдет вся система;
- если понадобится перераспределить ресурсы внутри одного модуля, это можно будет сделать без влияния на другие;
- при добавлении нового микросервиса не понадобится изменять другие — они работают независимо.
Микросервисы связаны друг с другом через API — специальный интерфейс, который помогает модулям «общаться» без вмешательства в их внутреннюю работу.
Инфраструктура как код. Подход сокращенно называют IaC — Infrastructure as Code. Чтобы реализовать идеи выше, нужно множество инфраструктурных решений: использование контейнеров, виртуальных систем, оркестраторов и так далее. Суть IaC в том, что управлять всей этой инфраструктурой лучше программно, с помощью кода, а не вручную. Так настройки и контроль проводятся быстрее, точнее и лишены человеческого фактора. Для IaC тоже существуют специальные решения. На практике это выглядит так: вместо того чтобы вручную настраивать среду, DevOps-инженер создает конфигурационные файлы, которые в нужный момент запускаются из консоли — достаточно пары строчек с командами. Среда и окружение настраиваются автоматически согласно этим файлам.
Технологии для DevOps
Чтобы реализовать идеи, перечисленные выше, нужны инструменты и системы. Расскажем о них подробнее — все это используется для построения удобной, гибкой и отказоустойчивой инфраструктуры.
Bash. Это скриптовый язык, который используется в Linux и Unix-системах. На нем пишут короткие программы для операционной системы. Он применяется для работы с файлами и папками, настройки системы и других задач. В DevOps-методологии язык полезен для автоматизации и конфигурирования: намного удобнее один раз запустить баш-скрипт, чем настраивать среду вручную.
Docker. Это популярная система, с помощью которой можно создавать контейнеры — виртуальные среды, где запускается какое-либо ПО. Использование контейнеров позволяет запустить продукт на любой машине: среда и зависимости, нужные для его работы, разворачиваются автоматически вместе с контейнером. Это удобно и позволяет изолировать среду, нужную для открытия продукта, от основной системы.
Kubernetes. Второе, что нужно для создания инфраструктуры после Docker, — системы оркестрации. Kubernetes — наиболее известная из них, используется чаще всего.
Оркестрация — это процесс управления многоконтейнерной архитектурой, например микросервисной. Когда контейнеров много, нужно следить за выделением памяти каждому из них, вовремя разворачивать новые и удалять старые, выдавать каждому нужную информацию. Вручную это делать очень сложно, а оркестраторы автоматизируют этот процесс. Они же помогают масштабировать системы и отвечают за множество других действий.
Git. Это самая известная и популярная система контроля версий. Системы контроля версий позволяют работать с разными версиями кода как с сохранениями в игре, но гибче. Они «запоминают» состояние проекта в разные моменты времени, позволяют разделить его на «ветви», а потом слить воедино, дают возможность быстро и легко откатиться к прошлым версиям.
С Git должны быть знакомы и разработчики — они регулярно взаимодействуют с этой системой, когда сохраняют код и отправляют его на проверку. Но задачи DevOps-инженера глубже: он отвечает за настройку, управление и контроль самой системы.
CI/CD-системы. Это программные решения, которые позволяют реализовать принцип непрерывного развертывания и доставки. Они помогают автоматически передавать код, получать на него обратную связь и в целом контролировать процессы. Примеры — Jenkins или GitLab.
Облачные серверы. Для реализации CI/CD также используются другие решения, не настолько специализированные. Например, DevOps-инженеры часто работают с облачными провайдерами серверов, такими как Azure или AWS. Эти компании предоставляют виртуальные серверы, работу с которыми легче автоматизировать. А это опять же важно для непрерывного развертывания и доставки.
Системы конфигурации. Для управления инфраструктурой используются специальные программные решения. Таких систем довольно много: Ansible, Chef, Puppet и другие. Еще есть Vagrant — она нужна для создания и конфигурирования виртуальных систем. Эти программы помогают создавать скрипты для конфигураций и запускать их на всех серверах — так автоматизируются рутинные однотипные действия. Это пример того, как реализуют принцип IaC.
Системы мониторинга. Наконец, для непрерывного отслеживания тоже нужны специальные решения. Обычно это комплексные системы, которые автоматизируют процесс мониторинга. Они автоматически запускают проверки состояния серверов, собирают нужную информацию, генерируют отчеты и отправляют специалистам. Примеры таких систем — Prometheus, Zabbix или Nagios, а также Icinga, созданная на его основе. Еще есть Cactu для построения графиков и Grafana — инструмент для визуализации результатов мониторинга в виде интерактивного дашборда.
Что еще нужно знать DevOps-инженеру
Выше мы перечисляли конкретные технологии, но это не единственное, с чем должен уметь работать девопс. Вот на что еще стоит обратить внимание, если вы хотите развиваться в этом направлении.
Языки программирования. Считается, что хороший DevOps-инженер должен знать хотя бы один язык программирования. Лучше, чтобы это был язык общего назначения, причем такой, который удобно использовать для автоматизации: Python, Golang и так далее. Возможны и другие варианты.
Базы данных. Быть знакомым с базами данных и СУБД — требование не только для девопса, но и для любого бэкенд- или фуллстак-разработчика. С ними приходится иметь дело довольно часто. Правда, DevOps-инженер подходит к ним с другой стороны: он помогает развертыванию и организации среды, а не занимается непосредственным взаимодействием базы с системой.
Операционные системы и сети. Чтобы успешно работать с Bash, писать скрипты и настраивать окружение, нужно понимать, как работают эти системы. Поэтому девопсам нужно знать Linux и разбираться в устройстве сетей.
Системы виртуализации. Виртуализация — это технология создания внутренних виртуальных систем внутри изначальной. Например, внутри Windows с помощью специального ПО можно создать виртуальную машину с Linux, выделить ей часть аппаратных ресурсов — и она будет работать автономно от основной. От Docker виртуализация отличается более глубоким разделением процессов и большей требовательностью. Чаще все же используются контейнеры, но иногда нужны и виртуальные машины.
Как начать работать с DevOps
Нужно понимать: DevOps — это целая философия, и для ее полноценной реализации нужна команда. В одиночку реализовать подход не получится. Но изучать методологию можно — профессия DevOps-инженера популярна и востребована, хоть и считается непростой. Мы рекомендуем сосредоточиться на инструментах, которые нужно освоить начинающему девопсу. Их много, и они не всегда простые, поэтому порог входа в эту профессию считается высоким. Тем не менее стать DevOps-инженером возможно, но понадобится постараться. Параллельно можно изучать философию, саму методологию, ее принципы и подходы. Практическое понимание, как работает ПО для девопсов, поможет в этом.
DevOps-инженер
Станьте DevOps-инженером и помогайте командам фокусироваться на создании качественного продукта. Профессия отлично подойдет разработчикам, тестировщикам и сисадминам

Статьи по теме:
Начать искать работу после курсов всегда непросто. Но когда прошел стажировку, шансы выше. И вот почему