Включите исполнение JavaScript в браузере, чтобы запустить приложение.

Что такое DevOps-культура: основные концепции, история и преимущества

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

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

Что такое DevOps

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

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

Согласно ежегодному отчету Redgate о состоянии DevOps, внедрение и использование технологии выросло с 47% в 2016 году до 74% в 2021 году. По прогнозам Fortune Business Insights, объем глобального рынка DevOps в 2018 году составил 3,7 млн долларов, а к 2026 году он достигнет 15 млн долларов. Так, среднегодовой темп роста будет равен 20%.

История развития DevOps

Возникновение DevOps тесно связано с развитием Agile — гибкой методологии по управлению проектами в разработке. Изначально процесс создания продуктов был линейным.

Раньше организации применяли модель Waterfall — «водопад». Ее первый этап — логическое планирование и проектирование, затем следует этап разработки, дальше — тесты, выход на рынок и обслуживание. Со временем стали заметны недостатки этого метода. В середине работы над проектом было трудно вносить изменения в функциональность. Решением проблемы стал набор готовых инструментов.

Agile был разработан с учетом изменчивости в ИT-сфере. Создатели также сделали упор на возможность сотрудничества нескольких отделов и скорость работы. Но организационные границы между командами разработки (dev) и операций (ops) все равно оставались прежними. Недовольство сообщества темой разрозненности положило начало среде, в которой стала расти и развиваться культура DevOps.

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

В 2009 году Пол Хаммонд и Джон Оллспау провели лекцию под названием «10+ развертываний в день: сотрудничество разработчиков и операторов на Flickr». Патрик Дебуа посмотрел видео этой презентации. Взгляды рассказчиков нашли у него большой отклик — это было именно то решение, которое он искал. Вдохновленный лекцией, он организовал встречу системных администраторов и разработчиков. На ней представители разных областей обсуждали интегративный подход в работе. Это мероприятие получило название DevOpsDays.

Оно привлекло внимание со стороны экспертов в обеих областях. В Твиттере шли дискуссии, а пользователи на записях ставили хэштег #DevOps. За пару лет концепция DevOps стала популярной.

Культура DevOps

Культура DevOps нужна для улучшения совместной работы разработчиков и тестировщиков. Но есть и другие важные процессы.

Общая ответственность. Если команда разработчиков разделяет ответственность за обслуживание системы в течение ее жизненного цикла, она может обсудить проблемы с тестировщиками и специалистами по операционным задачам. Когда отдел тестирования разделяет ответственность за бизнес-цели проекта, они могут более тесно сотрудничать с разработчиками. Это позволит лучше понять операционные особенности продукта. На практике сотрудничество часто начинается с повышения осведомленности разработчиков об эксплуатационных проблемах, внедрения новых инструментов и методов автоматизации.

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

Автоматизация. Автоматизация тестирования и развертывания позволяет специалистам сосредоточиться на более важных целях. Она уменьшает риск ошибки и ускоряет процесс разработки.

Зачем нужен DevOps

Основные задачи, которые решает DevOps:

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

Области применения DevOps

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

Телекоммуникации. Благодаря развертыванию и проектированию проще формировать новые версии сетевого цикла.

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

Программное обеспечение. What's Running — ПО для геймификации закрытых интерактивных парков отдыха. Система оцифровывает скалодромы, слэклайны, батуты и создает профиль клиента, где отмечаются его навыки и опыт. DevOps обеспечил ПО непрерывное тестирование и повышение производительности.

Финансы. Хорошим примером выступают страховые и брокерские компании. Они решили сделать продукт, улучшающий взаимодействие между страховщиками и брокерами. Это нужно для перехода от классического документооборота к цифровому. С помощью платформы страховщики могут создавать D&O, Cyber и PTL, а брокеры — использовать данные для создания страховых полисов для клиентов.

Основные концепции и практики DevOps

DevOps — это не только командная работа. Методология включает в себя практики, повышающие производительность.

Автоматизация и инструменты

Настройка инфраструктуры, развертывание серверов или запуск приложений — автоматизация этих задач может повысить эффективность работы.

Примеры инструментов автоматизации:

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

Непрерывная интеграция и доставка — CI/CD

Непрерывная интеграция — это постоянное обновление и тестирование кода. Когда разработчики добавляют новый код, его можно автоматически протестировать на предмет ошибок.

Непрерывная доставка — следующий шаг после интеграции, на котором обновленный код развертывается в производственной среде.

Инструменты: Jenkins, GitLab CI, Travis.

Непрерывное тестирование

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

Платформы: Selenium, TestNG, JIRA.

Непрерывный мониторинг 

Непрерывный мониторинг позволяет в режиме реального времени отслеживать производительность и состояние системы c помощью анализа данных. Также можно следить за политикой безопасности.

Платформы: Datadog, Wireshark, Sensu.

Микросервисы

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

Топологии DevOps 

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

  • Сотрудничество команды разработки и тестирования — участники команды разработки знают о задачах тестировщиков и наоборот.
  • Распределение операционных обязанностей — между Dev и Ops мало отличий, все сотрудники сосредоточены на общей цели. В команде разработчиков есть специалисты, занимающиеся еще и эксплуатацией.
  • Работа с операциями в качестве «инфраструктуры как платформы» — команда внутри Dev выступает в качестве источника знаний об эксплуатационных функциях, метриках, мониторинге и предоставлении серверов. Она считается IaaS, но по-прежнему остается командой разработчиков, придерживающейся стандартных практик.
  • DevOps в качестве внешней площадки — не все компании могут руководить операционной стороной ПО. Сторона Ops переходит к поставщикам подобных услуг, где они создают тестовые среды и автоматизируют инфраструктуру.
  • Временная команда — Dev и Ops объединяются на время, чтобы сделать проект или добиться поставленной цели.
  • Изучение DevOps — отдельные специалисты работают над улучшением сотрудничества между разработчиками и тестировщиками.
  • Команда SRE — ответственна за безопасность и архитектуру сайта. При ее наличии программистам нужно предоставить команде SRE доказательства тестирования: журналы и метрики, показывающие, что их программное обеспечение работает без сбоев.
  • Использование контейнеров — за счет их работы развертывание и время выполнения остаются вне специализации обоих направлений.
  • Разработчики и администраторы баз данных — в этой модели работа с базами данных осуществляется внутри команды разработчиков.

Плюсы и минусы DevOps

К преимуществам DevOps относятся:

  • увеличенная скорость разработки;
  • надежность программного обеспечения;
  • быстрое масштабирование;
  • установка взаимосвязей между ИT-отделами;
  • усиленная безопасность;
  • участие в развитии сообщества.

Недостатки DevOps:

  • сложность ИT-инфраструктуры организации;
  • дополнительные аппаратные и программные ресурсы;
  • отсутствие стандартизации;
  • нехватка опытных специалистов;
  • большие расходы.

Внедрение DevOps

Внедрение DevOps в уже работающий бизнес должно быть поэтапным. Нет необходимости создавать весь конвейер CI/CD с нуля. Важно добавлять практики и анализировать результаты.

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

Небольшая организация может реализовать конвейер DevOps с нуля, а процесс разработки ПО не придется останавливать. Так внедрение CI/CD происходит быстрее.

Чем занимается DevOps-специалист

DevOps-специалист или DevOps engineer управляет процессами CI/CD, пишет спецификации и документацию для серверных функций, контролирует проекты, управляет инфраструктурой и следит за развертыванием в облаке.

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

0