Программирование  •  12 марта 2022  •  5 мин чтения

Что такое DevOps: зачем он нужен, где применяется и в чём его плюсы и минусы

Раньше все айтишники делились на сисадминов, тестировщиков и программистов, которые при разработке мало взаимодействовали друг с другом. Но несколько лет назад появился подход DevOps, который объединил эти три лагеря и помог им работать совместно, чтобы быстрее выпускать на рынок IT-продукты. Разберём, что это за подход, как он работает и где применяется.

Что такое DevOps

В любом процессе разработки участвует три команды:

  • Dev — программисты, которые непосредственно пишут код;
  • QA/QC — тестировщики, которые выявляют ошибки в коде, вручную или автоматически;
  • Ops — инженеры, которые поддерживают инфраструктуру для написания кода, например сервера, а также берут уже рабочий код и запускают на реальные сервера, чтобы клиент получил доступ к сайту, сервису или приложению.

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

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

Методология DevOps — это комбинация из двух факторов
Методология DevOps — это комбинация из двух факторов:

  • особой философии, принципов работы DevOps: налаженного общения между командами, совместных KPI, общей ответственности за результат;
  • набора инструментов, который позволяет создать этот самый конвейер: автоматических систем тестирования, инфраструктуры для написания и развёртывания кода, программ для передачи кода между разными командами.

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

Материал по теме:
Что такое облачные технологии и как они устроены

Как устроена методология DevOps

Создание любого сервиса состоит из трёх процессов: разработки, тестирования и развёртывания на «боевых» серверах, доступных клиенту. При классическом подходе эти процессы идут последовательно, один за другим. При подходе DevOps всё происходит параллельно:

  • Инженеры по эксплуатации создают среду для разработки: пишут инструменты для автоматизации, настраивают тестировочные сервера, поддерживают пространство для работы разработчиков и тестировщиков в рабочем состоянии.
  • Разработчики пишут код, и он сразу уходит на тестирование. Часть тестов проводится автоматически, самые сложные вручную делает команда тестировщиков.
  • Код с исправленными ошибками автоматически уходит к инженерам для запуска на боевых серверах. При этом в тот же момент уже разрабатываются новые функции приложения.
  • Служба эксплуатации с помощью ручных и автоматических систем мониторинга в режиме реального времени видит проблемы и ошибки кода на боевых серверах. При необходимости код сразу возвращают разработчикам на доработку.

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

Инструменты DevOps

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

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

Системы контроля версий. Обычно используют Git. Это среда, в которую вносят код в процессе написания и разработки. В ней можно видеть все внесённые изменения, быстро откатить приложение к предыдущей конфигурации и сливать вместе разные версии кода, если над одной и той же функцией работает несколько программистов.

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

Системы мониторинга. Они автоматически проверяют сервера и приложения, собирают логи с ошибками, отправляют сообщения о проблемах. Обычно это комплексные приложения типа Grafana и Prometheus.

Ключевые инструменты, без которых внедрить подход DevOps нельзя

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

Плюсы использования DevOps

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

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

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

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

Критика и недостатки DevOps

Сейчас DevOps становится новым стандартом, но этот подход не лишён некоторых недостатков.

Дороговизна для небольших компаний. Некоторые DevOps-инструменты стоят недёшево: нужно покупать лицензию для использования, закупать сервера для развёртывания, поддерживать инфраструктуру. Кроме того, для работы может понадобиться нанять DevOps-специалиста, зарплата которого обычно начинается от 150 000 ₽ и может доходить до 400 000 ₽. Небольшим компаниям такое не по карману. При этом требования к скорости релиза у них обычно не такие высокие, а барьеры между командами меньше, поэтому они могут эффективно работать и без DevOps-подхода, а свободные деньги лучше потратить на развитие и наём более квалифицированных разработчиков.

Неправильное понимание принципов DevOps. DevOps появился недавно, и его принципы ещё не устоялись. Из-за этого иногда возникает недопонимание:

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

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

Кто и где использует DevOps

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

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

IT-компании. Те, кто зарабатывает именно на программах и сайтах, вроде Яндекса. Без DevOps они не смогут быстро выпускать свой главный продукт и выживать среди конкурентов.

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

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

Статью подготовили:

Редакция Практикума

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Mon Sep 30 2024 16:16:40 GMT+0300 (Moscow Standard Time)