7 шагов к выбору правильных инструментов DevOps

732
7 шагов к выбору правильных инструментов DevOps
7 шагов к выбору правильных инструментов DevOps

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

Системный администратор

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

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

Лучшие практики DevOps

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

7 шагов к выбору правильных инструментов DevOps
7 шагов к выбору правильных инструментов DevOps

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

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

Шаг 1: Понять стратегию сотрудничества и совместного использования инструментов для команд автоматизации Dev, QA и инфраструктуры.

Командам DevOps необходимо выработать общую стратегию использования инструментов, которая позволит им сотрудничать на всех этапах разработки, тестирования и развертывания (см. Рисунок 1). Это не означает, что вы должны тратить дни на споры об инструментах; это означает, что вы работаете над общей стратегией, которая включает DevOps…

  • Процессы
  • Коммуникации и планирование совместной работы
  • Инструменты непрерывной разработки
  • Инструменты непрерывной интеграции
  • Инструменты непрерывного тестирования
  • Инструменты непрерывного развертывания
  • Инструменты для непрерывных операций и CloudOps

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

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

Шаг 2: Используйте инструменты для фиксации каждого запроса

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

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

Шаг 3: Используйте гибкое управление проектами Kanban для автоматизации и DevOps-запросов, которые могут быть обработаны в инструментарии

Kanban — это фреймворк, используемый для реализации agile-разработки, который позволяет соотнести объем выполняемой работы с возможностями команды. Она дает командам более гибкие возможности планирования, более быстрый результат, четкую направленность и прозрачность на протяжении всего цикла разработки.

Инструменты Kanban дают возможность видеть то, что делается сегодня, или все элементы в контексте друг с другом. Кроме того, они ограничивают объем незавершенной работы, что помогает сбалансировать поточные подходы, чтобы не пытаться сделать слишком много за один раз. Наконец, инструменты Kanban могут улучшить поток. В Kanban, когда один рабочий элемент завершен, следующий по значимости элемент из бэклога переносится в разработку.

Шаг 4: Используйте инструменты для регистрации показателей как ручных, так и автоматизированных процессов

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

Шаг 5: Внедрение средств автоматизации тестирования и предоставления тестовых данных

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

Шаг 6: Проведите приемочные тесты для каждого инструмента развертывания

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

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

Шаг 7: Обеспечьте постоянную обратную связь между командами для выявления пробелов, проблем и неэффективности

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

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

Выбор инструментов
Вот инструменты, которые являются частью комплекса DevOps и относятся к передовым практикам/шагам, перечисленным выше:

Рисунок 2: Инструменты для DevOps, по категориям

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

Основные категории инструментов DevOps

К основным категориям инструментов относятся:

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

Развертывание сложности

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

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