Меню

Что такое DevOps?

серое увеличительное стекло, лежащее сбоку
Темы

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

Практика DevOps обеспечивает более плавный и непрерывный обмен данными, совместную работу, интеграцию, прозрачность между группами разработки приложений (Dev) и их коллегами из ИТ-подразделений (Ops).

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

В некоторых источниках цели DevOps делят на четыре категории: культура, автоматизация, измерение и совместное использование (CAM), поскольку именно в этих областях могут помочь инструменты DevOps. Эти инструменты могут сделать рабочие процессы разработки и эксплуатации более упорядоченными и совместными, автоматизируя ручные или статические задачи, связанные с интеграцией, разработкой, тестированием, развертыванием и мониторингом, ранее отнимающие много времени.

В чем преимущества DevOps

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

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

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

Методы DevOps

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

  • Скрам. Скрам определяет, как члены команды должны работать вместе, чтобы ускорить разработку и обеспечить контроль качества проектов. Методы Скрам включают ключевые рабочие процессы и специфическую терминологию (рывок, временные рамки, ежедневные скрам [собрание]) и назначенные роли (мастер, владелец продукта).
  • Канбан. Канбан был создан в компании Toyota для повышения эффективности производства. Он предписывает отслеживать состояние незавершенной работы над проектом (WIP) на специальной доске Канбан.
  • Гибкий подход. На методы и инструменты DevOps оказывают значительное влияние более ранние методы гибкой разработки ПО. Многие методы DevOps, включая Скрам и Кнбан, включают элементы гибкого программирования. Некоторые гибкие методы работы связаны с более высоким откликом на изменяющиеся потребности и требования, документированием требований в качестве историй для пользователей, ежедневные собрания и постоянный контроль отзывов клиентов. Кроме того, гибкий подход предусматривает более короткийжизненный цикл разработки ПОвместо длинных традиционных методов по принципу «водопада».

Цепочка инструментов DevOps

Сторонники практики DevOps часто используют некоторые ее инструменты в рамках своей «цепочки инструментов» DevOps. Целью их использования является дальнейшая оптимизация, сокращение и автоматизация различных этапов процесса доставки программного обеспечения (или «конвейера»). Многие из этих инструментов также поддерживают использование основных принципов DevOps в области автоматизации, совместной работы и интеграции между группами разработки и эксплуатации. Далее мы рассмотрим примеры инструментов, используемых на различных этапах жизненного цикла DevOps.

  • Планирование. Этот этап помогает определить ценность продукта для бизнеса и требования. Примеры инструментов: Jira или Git для отслеживания известных проблем и управления проектами.
  • Код. На этом этапе выполняется проектирование программного обеспечения и создание программного кода. Примеры инструментов: GitHub, GitLab, Bitbucket или Stash.
  • Создание. На этом этапе вы управляете сборками и версиями программного обеспечения, а также используете автоматизированные инструменты для компиляции и пакетного кода для будущего выпуска. Вы используетерепозитории исходного кодаили репозитории пакетов, которые также «упаковывают» инфраструктуру, необходимую для выпуска продукта. Примеры инструментов: Docker, Ansible, Puppet, Chef, Gradle, Maven и JFrog Artifactory.
  • Тестирование. Этот этап включает непрерывное тестирование (ручное или автоматическое), нацеленное на оптимальное качество кода. Примеры инструментов: JUnit, Codebeption, Selenium, Vagrant, TestNG и BlazeMeter.
  • Внедрение. На этом этапе могут использоваться инструменты, которые помогают управлять, координировать, планировать и автоматизировать выпуск продукции. Примеры инструментов: Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker и Jira.
  • Эксплуатация. На этом этапе осуществляется управление программным обеспечением во время эксплуатации. Примеры инструментов: Ansible, Puppet, PowerShell, Chef, Salt и Otter.
  • Мониторинг. На этом этапе выполняется определение и сбор информации о проблемах, возникающих в конкретной версии программного обеспечения в процессе эксплуатации. Примеры инструментов: New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios и Slack.

Методы DevOps

Практика DevOps отражает идею непрерывного совершенствования и автоматизации. Многие практики предназначены для одного или нескольких этапов цикла разработки. К таким практикам относятся:

  • Постоянное развитие. Эта практика охватывает фазы планирования и кодирования жизненного цикла DevOps. Могут быть использованы механизмы контроля версий.
  • Непрерывное тестирование. Эта практика включает автоматические, запланированные и непрерывные тесты кода по мере его записи или обновления. Такое тестирование может ускорить внедрение кода.
  • Непрерывная интеграция(CI). В этой практике инструменты управления конфигурацией (CM) совместно с другими инструментами тестирования и разработки позволяют отслеживать готовность разрабатываемого кода к работе. Включая быструю обратную связь между тестированием и разработкой для выявления и решения проблем с кодом.
  • Непрерывная доставкаЭта практика позволяет автоматизировать реализацию изменений кода после его тестирования в среду предварительной эксплуатации или переноса. Затем сотрудник может принять решение о том, вносить ли такой код в эксплуатацию.
  • Непрерывное развертывание (CD). Подобно непрерывной доставке, эта практика автоматизирует внедрение нового или измененного кода в эксплуатацию. Компания, выполняющая непрерывное развертывание, может несколько раз в день выпускать изменения кода или функций. Использованиеконтейнерныхтехнологий, таких как Docker и Kubernetes, позволяет обеспечить непрерывное развертывание, помогая поддерживать согласованность кода на различных платформах и в средах развертывания.
  • Непрерывный мониторинг. Эта практика включает непрерывный мониторинг работающего кода и кода в базовой инфраструктуре, которая его поддерживает. Цикл обратной связи, который помогает собрать данные о проблемах и ошибках и исправить их в процессе разработки.
  • Инфраструктура как код. Эта практика может использоваться на различных этапах DevOps для автоматизации выделения ресурсов инфраструктуры, необходимых для выпуска программного обеспечения. Разработчики используют «код» инфраструктуры из существующих средств разработки. Например, они могут создавать тома хранения данных по требованию с помощью Docker, Kubernetes или OpenShift. Эта практика также позволяет рабочим группам отслеживать конфигурации среды, чтобы контролировать изменения и упростить откат конфигураций.

Преимущества DevOps

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

  • Более быстрое и качественное предоставление продуктов
  • Более быстрое решение проблем и снижение сложности
  • Более высокая масштабируемость и доступность
  • Более стабильная рабочая среда
  • Более эффективное использование ресурсов
  • Более высокая автоматизация
  • Более наглядное представление результатов работы системы
  • Инновации

История DevOps

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

В начале 2000-х годов потребность в поддержании доступности популярных веб-сайтов, таких как Google и Flickr, значительно выросла. Эта потребность привела к появлению инженеров по надежности программного обеспечения (SRES), которые работают в тесном сотрудничестве с разработчиками, чтобы гарантировать, что после внедрения кода сайты будут стабильно работать.

В 2009 году инженеры Джон Алльсо и Пол Хаммонд из Flickr представили на конференции собственную методологию DevOps. Их презентация была озаглавлена «более 10 развертываний в день: сотрудничество разработок и внедрения в Flickr». В том же году Патрик Дебоа организовал первый «день DevOps» в Бельгии. Появился хэштег #DevOps набрал обороты по мере того, проводилось все больше дней DevOps.

В ближайшие годы были разработаны и предложены отраслевые и открытые инструменты и платформы для реализации целей DevOps.

NetApp и DevOps

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

NetApp позволяет разработчикам, тестировщикам и специалистам по контролю качества легко использовать ресурсы инфраструктуры (например, постоянные тома хранения данных) в качестве кода, используя привычные инструменты конвейера DevOps. Например, API СХД NetApp и интеграцию IAC с такими инструментами, как Puppet, Ansible, Docker, Kubernetes и OpenShift.

Но NetApp не просто упрощает разработчикам использование СХД в качестве кода. Технологии NetApp также позволяют ИТ-отделам уверенно выделять и предоставлять ресурсы специалистам по разработке и тестированию. Разработчики и тестировщики могут ускорить циклы программирования и тестирования за счет быстрого выделения ресурсов, что позволяет экономить время при использовании таких функций хранения данных, как снимки файловой системы или клоны. Эти функции позволяют предоставлять копии производственных данных или наборы кодов в режиме реального времени в виде кода всего за несколько минут, чтобы ускорить процесс разработки и контроля качества.

Поддержка NetApp сообществу распространяется также на thePub. Это сообщество разработчиков поощряет совместную работу, его участники делится советами и рекомендациями, а также обсуждает идеи о новейших методах и протоколах DevOps.

Продолжить чтение статей о DevOps