DevOps — это методология в разработке программного обеспечения и ИТ-индустрии. Используемый как набор практик и инструментов, DevOps интегрирует и автоматизирует работу по разработке программного обеспечения ( Dev ) и ИТ-операций ( Ops ) как средство для улучшения и сокращения жизненного цикла разработки систем . [1] DevOps дополняет гибкую разработку программного обеспечения ; несколько аспектов DevOps произошли из гибкого способа работы.
Автоматизация является важной частью DevOps. Программисты и архитекторы программного обеспечения должны использовать « функции пригодности », чтобы держать свое программное обеспечение под контролем. [2]
Помимо того, что это кросс-функциональное сочетание (и портманто ) терминов и концепций «разработки» и «эксплуатации», ученые и практики не разработали универсального определения термина «DevOps». [a] [b] [c] [d] Чаще всего DevOps характеризуется ключевыми принципами: совместное владение, автоматизация рабочего процесса и быстрая обратная связь. С академической точки зрения Лен Басс , Инго Вебер и Лиминг Чжу — три исследователя в области компьютерных наук из CSIRO и Института программной инженерии — предложили определить DevOps как «набор практик, направленных на сокращение времени между внесением изменений в систему и внедрением изменений в нормальное производство, обеспечивая при этом высокое качество». [6] Однако этот термин используется в различных контекстах. В наиболее успешном варианте DevOps представляет собой комбинацию определенных практик, изменений культуры и инструментов. [7]
Предложения объединить методологии разработки программного обеспечения с концепциями развертывания и эксплуатации начали появляться в конце 80-х и начале 90-х годов. [8]
Примерно в 2007 и 2008 годах в сообществах разработчиков программного обеспечения и ИТ высказывались опасения, что разделение двух отраслей, где одни пишут и создают программное обеспечение совершенно отдельно от тех, кто его внедряет и поддерживает, создает фатальный уровень дисфункции в отрасли. [9]
В 2009 году в Генте , Бельгия , прошла первая конференция под названием DevOps Days . Конференция была основана бельгийским консультантом, менеджером проектов и практиком Agile Патриком Дебуа. [10] [11] Теперь конференция распространилась и на другие страны. [12]
В 2012 году Аланна Браун из Puppet Labs впервые опубликовала отчет под названием «Состояние DevOps» . [13] [14]
В 2014 году ежегодный отчет о состоянии DevOps был опубликован Николь Форсгрен , Джином Кимом, Джезом Хамблом и другими. Они заявили, что принятие DevOps ускоряется. [15] [16] Также в 2014 году Лиза Криспин и Джанет Грегори написали книгу More Agile Testing, содержащую главу о тестировании и DevOps. [17] [18]
В 2016 году метрики DORA для пропускной способности (частота развертывания, время выполнения изменений) и стабильности (среднее время восстановления, частота отказов изменений) были опубликованы в отчете State of DevOps. [13] Однако методология исследования и метрики подверглись критике со стороны экспертов. [19] [20] [21] [22] В ответ на эту критику в отчете State of DevOps за 2023 год [23] были опубликованы изменения, которые обновили метрику стабильности «среднее время восстановления» до «время восстановления после неудачного развертывания», признав путаницу, вызванную предыдущей метрикой. [24]
Многие из идей, лежащих в основе практик DevOps, вдохновлены или отражают другие известные практики, такие как Lean и цикл Деминга «Планирование-Выполнение-Проверка-Действие » , вплоть до Toyota Way и подхода Agile , предполагающего разбиение компонентов и размеров партий. [25] В отличие от «нисходящего» предписывающего подхода и жесткой структуры ITIL в 1990-х годах, DevOps является «восходящим» и гибким, поскольку был создан инженерами-программистами для собственных нужд. [26]
Мотивы того, что стало современным DevOps и несколькими стандартными практиками DevOps, такими как автоматизированная сборка и тестирование, непрерывная интеграция и непрерывная поставка , зародились в мире Agile, который датируется (неофициально) 1990-ми годами, а формально — 2001 годом. Команды разработчиков Agile, использующие такие методы, как экстремальное программирование, не могли «удовлетворить клиента посредством ранней и непрерывной поставки ценного программного обеспечения» [27], если они не брали на себя ответственность за операции и инфраструктуру для своих приложений, автоматизируя большую часть этой работы. Поскольку Scrum стал доминирующей структурой Agile в начале 2000-х годов и исключил инженерные практики, которые были частью многих команд Agile, движение по автоматизации операций и функций инфраструктуры отделилось от Agile и расширилось до того, что стало современным DevOps. Сегодня DevOps фокусируется на развертывании разработанного программного обеспечения, независимо от того, разрабатывается ли оно с использованием ориентированных на Agile методологий или других методологий.
ArchOps представляет собой расширение практики DevOps, начиная с артефактов архитектуры программного обеспечения вместо исходного кода для развертывания операций. [28] ArchOps утверждает, что архитектурные модели являются первоклассными сущностями в разработке, развертывании и эксплуатации программного обеспечения.
Автоматизация является основным принципом для достижения успеха DevOps, а CI/CD является критически важным компонентом. [29] Кроме того, улучшение сотрудничества и коммуникации между командами и внутри них помогает сократить время выхода на рынок с меньшими рисками. [30]
Mobile DevOps — это набор практик, которые применяют принципы DevOps специально к разработке мобильных приложений. Традиционный DevOps фокусируется на оптимизации процесса разработки программного обеспечения в целом, но мобильная разработка имеет свои собственные уникальные проблемы, требующие индивидуального подхода. [31] Mobile DevOps — это не просто ветвь DevOps, специфичная для разработки мобильных приложений, а расширение и переосмысление философии DevOps из-за очень специфических требований мобильного мира.
В 2003 году Google разработала проектирование надежности сайта (SRE), подход к непрерывному выпуску новых функций в крупномасштабных системах высокой доступности, сохраняя при этом высокое качество пользовательского опыта. [32] Хотя SRE предшествовало развитию DevOps, их обычно рассматривают как связанные друг с другом. Некоторые из первоначальных авторов дисциплины рассматривают SRE как реализацию DevOps. [33]
Система производства Toyota, также известная под аббревиатурой TPS, вдохновила на бережливое мышление с его фокусом на непрерывном совершенствовании , кайдзен , потоке и малых партиях. Принцип шнура андон для создания быстрой обратной связи, роя и решения проблем исходит из TPS. [34] [35]
DevSecOps — это расширение DevOps, позволяющее интегрировать методы обеспечения безопасности в подход DevOps. В отличие от традиционной модели централизованной группы безопасности, каждая группа доставки имеет право учитывать правильные элементы управления безопасностью при доставке своего программного обеспечения. Методы обеспечения безопасности и тестирование выполняются на более ранних этапах жизненного цикла разработки, отсюда и термин « сдвиг влево ». Безопасность тестируется в трех основных областях: статическая, композиция программного обеспечения и динамическая.
Статическая проверка программного обеспечения с помощью статического тестирования безопасности приложений (SAST) — это тестирование «белого ящика» с особым акцентом на безопасность. В зависимости от языка программирования для проведения такого статического анализа кода требуются различные инструменты. Анализируется состав программного обеспечения, особенно библиотеки, а версия каждого компонента проверяется по спискам уязвимостей, опубликованным CERT и другими экспертными группами. При предоставлении программного обеспечения клиентам особое внимание уделяется лицензиям библиотек и их соответствию лицензии распространяемого программного обеспечения, особенно лицензиям с копилефтом .
При динамическом тестировании, также называемом тестированием черного ящика , программное обеспечение тестируется без знания его внутренних функций. В DevSecOps эта практика может называться динамическим тестированием безопасности приложений (DAST) или тестированием на проникновение. Целью является раннее обнаружение дефектов, включая уязвимости межсайтового скриптинга и SQL-инъекций . Типы угроз публикуются проектом Open Web Application Security , например, его TOP10, [36] и другими организациями.
DevSecOps также описывается как культурный сдвиг, включающий целостный подход к производству безопасного программного обеспечения путем интеграции обучения безопасности, безопасности по проекту и автоматизации безопасности. [37]
Инициативы DevOps могут создавать культурные изменения в компаниях [38], преобразуя способ взаимодействия операторов , разработчиков и тестировщиков в ходе процессов разработки и поставки. [39] Обеспечение сплоченной работы этих групп является важнейшей задачей при внедрении DevOps на предприятии. [40] [41] DevOps в равной степени касается как культуры, так и набора инструментов. [42]
Хотя в принципе возможно практиковать DevOps с любым архитектурным стилем, архитектурный стиль микросервисов становится стандартом для построения непрерывно развертываемых систем. Небольшой размер сервиса позволяет архитектуре отдельного сервиса появляться посредством непрерывного рефакторинга. [43]
Он также поддерживает согласованность, надежность и эффективность в организации и обычно обеспечивается общим репозиторием кода или контролем версий. Как предполагает исследователь DevOps Рави Теджа Ярлагадда, «Благодаря DevOps предполагается, что все функции могут выполняться, контролироваться и управляться в центральном месте с помощью простого кода». [44]
Многие организации используют контроль версий для поддержки технологий автоматизации DevOps, таких как виртуальные машины , контейнеризация (или виртуализация на уровне ОС ) и CI/CD . В статье «DevOps: разработка цепочки инструментов в банковской сфере» отмечается, что при работе групп разработчиков над одним и тем же проектом «всем разработчикам необходимо вносить изменения в одну и ту же кодовую базу, а иногда даже редактировать одни и те же файлы. Для эффективной работы должна быть система, которая помогает инженерам избегать конфликтов и сохранять историю кодовой базы» [45], в качестве примеров приводятся система контроля версий Git и платформа GitHub .
GitOps произошел от DevOps. Конкретное состояние конфигурации развертывания — это управление версиями . Поскольку самым популярным управлением версиями является Git , подход GitOps был назван в честь Git . Изменениями в конфигурации можно управлять с помощью методов обзора кода и откатывать с помощью управления версиями. По сути, все изменения в коде отслеживаются, добавляются в закладки, и внесение любых обновлений в историю может быть упрощено. Как поясняет Red Hat , «видимость изменений означает возможность быстро отслеживать и воспроизводить проблемы, что повышает общую безопасность». [46]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка )