Найти тему
VK Cloud

Что такое DevOps простым языком

Что отличает разработку и выпуск IT-продуктов на рынок 10 лет назад и сейчас? DevOps

Раньше все было медленней, правда? Для IT-сферы это наблюдение особенно справедливо. Сегодня тот, кто долго выпускает IT-продукт на рынок, сильно проигрывает в деньгах. В интервью с представителями успешных стартапов часто есть что-то вроде: «Мы первые сделали приложение, которое умеет…» Ключевое слово здесь «первые».

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

Что такое DevOps

Философия или методология?

Многие в IT считают, что DevOps (development + operations) — это такая модная философия компании-разработчика. Мы в чем-то согласны, но, наверное, это слишком. DevOps — не философия, а методология. Это набор практик по выпуску IT-продуктов, бесшовная организация процессов разработки, прикладная методология — чтобы было быстрее (и дешевле). Подход DevOps действительно позволяет существенно ускорить процессы разработки и снизить их стоимость. Для лучшего понимания того, как он это делает, сравним его с классическим подходом к разработке.

Классическая каскадная модель разработки и ее недостатки

Модель выглядит как вертикальный поток, где все фазы последовательно перетекают одна в другую. После фаз определения требований к продукту и проектирования наступают фазы написания и сборки кода программистами (DEVelopment). Затем код поступает к тестировщикам. После тестирования отдел эксплуатации (Operation) инсталлирует код на рабочие машины — продукт запущен.

Проблемы каскадного подхода

  • Переход в следующую фазу происходит только после полного успешного завершения предыдущей. Если где-то закралась ошибка — все по новой.
  • Плохая связь между этапами разработки и IT-отделами. Распространены ситуации, когда программисты не знают, что происходит с кодом после его написания. Тестировщики могут не знать, ту ли версию они тестируют вот уже несколько дней. У администраторов в эксплуатации ничего не работает из-за разницы в конфигурации серверов.
  • Медленная разработка и обновления из-за того, что задачи между группами специалистов перемещаются партиями, а не в момент их появления. Например, пока администраторы не соберут большое количество претензий от пользователей, они не отдадут их программистам на исправление. Потом новый код, новая партия тестов… А если тесты идут долго, то все остальные сидят без работы.
Движение процессов в каскадной модели разработки
Движение процессов в каскадной модели разработки

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

Почему DevOps так удобен

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

Расходы на разработку при этом снижаются прямо пропорционально ускорению выпуска.

Этапы разработки по DevOps-подходу

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

  1. Проектирование. Участвуют все. Руководитель проекта описывает требования бизнеса к приложению, разработчики создают структуру. Каждый отдел определяет свои этапы и время на их прохождение.
  2. Написание кода. Под руководством DevOps-инженера программисты создают условия для разработки приложения: среду и конвейер непрерывной интеграции и непрерывной поставки (конвейер CI/CD); пишут скрипты и системы для разных процессов; пишут части кода. Тестировщики и администраторы эксплуатации настраивают кластеры для своих процессов. Созданные и настроенные системы адаптируют под каждый продукт.
  3. Запуск конвейера CI/CD. Здесь запускают подготовленные скрипты, автоматически выполняющие рутинную работу и поддержание инфраструктуры для развертывания: компилирование кода в пакеты, передача его тестировщикам и прочее.
  4. Тестирование. Непрерывное, автоматическое. После незначительных изменений (добавление новых простых функций) продукт проходит автотесты и уходит на «боевые» серверы.
  5. Развертывание. Непрерывное. Протестированные конфигурации автоматически отправляются на рабочие машины. Выпуск и обновления в релиз становятся рутиной: исправление ошибок, тестирование и развертывание происходит по несколько раз в день.
  6. Мониторинг. Непрерывный. На «боевых» серверах к приложению подключаются системы мониторинга, которые могут автоматически отключать неработающие функции, оповещать о сбоях и так далее.
Движение процессов в DevOps
Движение процессов в DevOps

Какие инструменты используют в DevOps

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

  • Инструменты облачных технологий — инфраструктура как сервис (IaaS): облачные хранилища и серверы; платформы как сервис (PaaS). Помогают оптимизировать нагрузки и автоматизировать рутину.
  • Инструменты для разработки — системы версий (Git). Позволяют отслеживать течение разработки и внесенные изменения в разных версиях кода, откатывать на рабочую конфигурацию в случае ошибки при добавлении новых функций в приложение.
  • Инструменты для сборки — CI/CD-системы (Jenkins, GitLab, Bamboo). Нужны для работы скриптов, автоматизации тестирования и быстрой доставки протестированных модулей разным департаментам команды.
  • Инструменты для развертывания — системы управления инфраструктурой как кодом (IaC: Ansible, Terraform). Нужны для автоматизации развертывания инфраструктуры и управления приложениями в облаках.
  • Инструменты среды выполнения — системы оркестрации контейнеров (Docker Swarm, Kubernetes). Предназначены для управления контейнерами и облегчают выполнение разных задач: развертывание, тестирование, запуск и другие.

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

Когда DevOps не нужен, или минусы подхода

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

Что надо знать про DevOps:

  • DevOps — это прикладная методология, позволяющая так организовать процессы в большой IT-команде, чтобы все департаменты были одновременно вовлечены в работу над проектом.
  • В DevOps-подходе фазы проектирования, написания кода, запуска конвейера CI/CD, тестирования, развертывания и мониторинга идут параллельно, а не последовательно.
  • Методология позволяет существенно ускорить выпуск и обновление IT-продуктов, сократив расходы на разработку.
  • Основной помощник в ускорении — автоматизация процессов. Достигается использованием DevOps-инструментов.
Читайте также статьи по теме:
По данным опроса GitLab, DevOps ускоряет разработку до 10 раз
Что такое методология DevOps: подробное руководство о том, как построить работу IT-отдела
State of DevOps Report 2020: как платформенный подход развивает культуру DevOps