DevOps
DevOps — это методология в разработке программного обеспечения и ИТ-индустрии. Используемый как набор практик и инструментов, DevOps интегрирует и автоматизирует работу по разработке программного обеспечения ( Dev ) и ИТ-операций ( Ops ) как средство улучшения и сокращения жизненного цикла разработки систем . [1] DevOps дополняет гибкую разработку программного обеспечения ; некоторые аспекты DevOps возникли благодаря гибкому методу работы.
Автоматизация — важная часть DevOps. Программисты и архитекторы программного обеспечения должны использовать « фитнес-функции », чтобы держать свое программное обеспечение под контролем. [2]
Определение [ править ]
Помимо кросс-функциональной комбинации (и портфеля ) терминов и концепций «разработка» и «операция», ученые и практики не разработали универсального определения термина «DevOps». [а] [б] [с] [д] Чаще всего DevOps характеризуется ключевыми принципами: совместное владение, автоматизация рабочих процессов и быстрая обратная связь.С академической точки зрения Лен Басс , Инго Вебер и Лимин Чжу — трое исследователей компьютерных наук из CSIRO и Института программной инженерии — предложили определить DevOps как «набор практик, предназначенных для сокращения времени между внесением изменения в систему и изменение внедряется в обычное производство, обеспечивая при этом высокое качество». [6] Однако этот термин используется в нескольких контекстах. В наиболее успешном варианте DevOps представляет собой сочетание конкретных практик, изменений в культуре и инструментов. [7]
История [ править ]
Предложения объединить методологии разработки программного обеспечения с концепциями развертывания и эксплуатации начали появляться в конце 80-х — начале 90-х годов. [8]
Примерно в 2007 и 2008 годах представители сообществ разработчиков программного обеспечения и ИТ выразили обеспокоенность тем, что разделение между двумя отраслями, в которых пишут и создают программное обеспечение полностью отдельно от тех, кто его развертывает и поддерживает, создает фатальный уровень дисфункции внутри компании. промышленность. [9]
, прошла первая конференция под названием DevOps Days В 2009 году в Генте , Бельгия . Конференцию основал бельгийский консультант, менеджер проекта и практикующий Agile Патрик Дебуа. [10] [11] Конференция теперь распространилась на другие страны. [12]
В 2012 году отчет под названием «Состояние DevOps» был впервые опубликован Аланной Браун из Puppet Labs . [13] [14]
По состоянию на 2014 год ежегодный отчет State of DevOps опубликовали Николь Форсгрен , Джин Ким, Джез Хамбл и другие. Они заявили, что внедрение DevOps ускоряется. [15] [16] Также в 2014 году Лиза Криспин и Джанет Грегори написали книгу «Более гибкое тестирование», содержащую главу о тестировании и DevOps. [17] [18]
В 2016 году метрики DORA по пропускной способности (частота развертывания, время выполнения изменений) и стабильности (среднее время восстановления, частота неудач изменений) были опубликованы в отчете о состоянии DevOps. [13] Однако методология и метрики исследования подверглись критике со стороны экспертов. [19] [20] [21] [22] В ответ на эту критику был опубликован отчет о состоянии DevOps за 2023 год. [23] опубликованные изменения, которые обновили показатель стабильности «среднее время восстановления» до «время восстановления после неудачного развертывания», признавая путаницу, которую вызвал предыдущий показатель. [24]
с подходами Связь другими
Многие из идей, фундаментальных для практик DevOps, вдохновлены или отражают другие хорошо известные практики, такие как бережливое производство и цикл Деминга « Планируй-Делай-Проверяй- Действуй» , а также подход Toyota и гибкий подход к разбивке компонентов и размерам партий. [25] В отличие от предписывающего подхода «сверху вниз» и жесткой структуры ITIL 1990-х годов, DevOps является «восходящим» и гибким подходом, поскольку он был создан разработчиками программного обеспечения для своих собственных нужд. [26]
Гибкий [ править ]
Мотивы создания современного DevOps и некоторых стандартных практик DevOps, таких как автоматизированная сборка и тестирование, непрерывная интеграция и непрерывная поставка , зародились в мире Agile, который восходит (неформально) к 1990-м годам, а формально к 2001 году. такие методы, как экстремальное программирование, не могли «удовлетворить клиента за счет ранней и непрерывной поставки ценного программного обеспечения». [27] если только они не возьмут на себя ответственность за операции и инфраструктуру своих приложений, автоматизируя большую часть этой работы. Поскольку Scrum стал доминирующей структурой Agile в начале 2000-х годов и в нем не учитывались инженерные практики, которые были частью многих команд Agile, движение за автоматизацию операций и функций инфраструктуры отделилось от Agile и расширилось до того, что стало современным DevOps. Сегодня DevOps фокусируется на развертывании разработанного программного обеспечения, независимо от того, разработано ли оно с использованием методологий, ориентированных на Agile, или других методологий.
АрхОпс [ править ]
ArchOps представляет собой расширение практики DevOps, начиная с артефактов архитектуры программного обеспечения вместо исходного кода для оперативного развертывания. [28] ArchOps утверждает, что архитектурные модели являются первоклассными объектами в разработке, развертывании и эксплуатации программного обеспечения.
Непрерывная интеграция и доставка (CI/CD) [ править ]
Автоматизация — это основной принцип достижения успеха DevOps, а CI/CD — важнейший компонент. [29] Кроме того, улучшение сотрудничества и взаимодействия между командами и внутри них помогает ускорить вывод продукции на рынок и снизить риски. [30]
Мобильный DevOps [ править ]
Mobile DevOps — это набор практик, который применяет принципы DevOps специально к разработке мобильных приложений. Традиционный DevOps фокусируется на оптимизации процесса разработки программного обеспечения в целом, но у мобильной разработки есть свои уникальные проблемы, требующие индивидуального подхода. [31] Mobile DevOps — это не просто ветвь DevOps, специфичная для разработки мобильных приложений, а расширение и переосмысление философии DevOps в связи с весьма специфическими требованиями мобильного мира.
Проектирование надежности сайта [ править ]
В 2003 году компания Google разработала проектирование надежности сайтов (SRE) – подход, позволяющий постоянно внедрять новые функции в крупномасштабные системы высокой доступности, сохраняя при этом высокое качество обслуживания конечных пользователей. [32] Хотя SRE предшествовал развитию DevOps, их обычно рассматривают как связанные друг с другом.
Производственная система Toyota, бережливое мышление кайдзен ,
Производственная система Toyota, также известная под аббревиатурой TPS, послужила источником вдохновения для бережливого мышления с акцентом на постоянное совершенствование , кайдзен , поток и небольшие партии. Принцип андон-корда, позволяющий создавать быструю обратную связь, роиться и решать проблемы, основан на TPS. [33] [34]
, смещение влево безопасности DevSecOps
DevSecOps — это расширение DevOps, позволяющее интегрировать методы обеспечения безопасности в подход DevOps. В отличие от традиционной модели централизованной группы безопасности, каждая группа поставки имеет право учитывать правильные меры безопасности при доставке программного обеспечения. Практики обеспечения безопасности и тестирование выполняются на более ранних этапах жизненного цикла разработки, отсюда и термин « сдвиг влево ». Безопасность тестируется в трех основных областях: статическая, состав программного обеспечения и динамическая.
Статическая проверка программного обеспечения с помощью статического тестирования безопасности приложений (SAST) — это тестирование «белого ящика», в котором особое внимание уделяется безопасности. В зависимости от языка программирования для такого статического анализа кода необходимы разные инструменты. Анализируется состав программного обеспечения, особенно библиотек, а версия каждого компонента сверяется со списками уязвимостей, публикуемыми CERT и другими экспертными группами. При предоставлении программного обеспечения клиентам основное внимание уделяется библиотечным лицензиям и их совпадению с лицензией распространяемого программного обеспечения, особенно лицензиям с авторским левом .
При динамическом тестировании, также называемом тестированием «черного ящика» , программное обеспечение тестируется без знания его внутренних функций. В DevSecOps эту практику можно назвать динамическим тестированием безопасности приложений (DAST) или тестированием на проникновение. Целью является раннее обнаружение дефектов, включая уязвимости межсайтового скриптинга и SQL-инъекций . Типы угроз публикуются открытым проектом безопасности веб-приложений , например, TOP10, [35] и другими органами.
DevSecOps также описывается как культурный сдвиг, включающий целостный подход к созданию безопасного программного обеспечения путем интеграции образования в области безопасности, безопасности по дизайну и автоматизации безопасности. [36]
Культурные изменения
Инициативы DevOps могут привести к культурным изменениям в компаниях [37] изменяя способы взаимодействия операторов , разработчиков и тестировщиков в процессах разработки и доставки. [38] Заставить эти группы работать слаженно — важнейшая задача при внедрении DevOps на предприятии. [39] [40] DevOps — это не только инструментальная цепочка, но и культура. [41]
Микросервисы [ править ]
Хотя в принципе DevOps можно применять с любым архитектурным стилем, архитектурный стиль микросервисов становится стандартом для создания непрерывно развернутых систем. Сервис небольшого размера позволяет создавать архитектуру отдельного сервиса посредством непрерывного рефакторинга. [42]
Автоматизация DevOps [ править ]
Он также поддерживает согласованность, надежность и эффективность внутри организации и обычно обеспечивается общим репозиторием кода или контролем версий. Как предполагает исследователь DevOps Рави Теджа Ярлагадда: «Через DevOps предполагается, что все функции могут выполняться, контролироваться и управляться централизованно с помощью простого кода». [43]
Автоматизация с контролем версий [ править ]
Многие организации используют контроль версий для реализации технологий автоматизации DevOps, таких как виртуальные машины , контейнеризация (или виртуализация на уровне ОС ) и CI/CD . В статье «DevOps: разработка цепочки инструментов в банковской сфере» отмечается, что, когда команды разработчиков работают над одним и тем же проектом, «всем разработчикам необходимо вносить изменения в одну и ту же кодовую базу, а иногда и редактировать даже одни и те же файлы. Для эффективной работы существуют должна быть системой, которая помогает инженерам избегать конфликтов и сохранять историю кодовой базы». [44] с системой контроля версий Git и платформой GitHub , упомянутыми в качестве примеров.
GitOps [ править ]
GitOps произошел от DevOps. Конкретное состояние конфигурации развертывания контролируется версией . Поскольку наиболее популярным средством контроля версий является Git , подход GitOps был назван в честь Git . Изменениями в конфигурации можно управлять с помощью методов проверки кода и откатить их с помощью контроля версий. По сути, все изменения в коде отслеживаются, добавляются в закладки, и внесение любых обновлений в историю может быть упрощено. Как пояснили в Red Hat , «видимость изменений означает возможность быстро отслеживать и воспроизводить проблемы, повышая общую безопасность». [45]
См. также [ править ]
- Операции с данными
- Набор инструментов DevOps
- Двенадцатифакторное приложение
- Инфраструктура как код
- Бережливая разработка программного обеспечения
- Проектирование надежности сайта
- Поток создания ценности
Примечания [ править ]
- ^ Дайк и др. (2015) «Насколько нам известно, не существует единого определения терминов «проектирование выпуска» и «DevOps». Как следствие, многие люди используют свои собственные определения или полагаются на другие, что приводит к путанице в отношении этих терминов. [3]
- ^ Джаббари и др. (2016) «Результаты этого исследования показали необходимость определения, поскольку отдельные исследования не дают последовательного определения DevOps». [4]
- ^ Эрих и др. (2017) «Мы заметили, что существуют различные пробелы в изучении DevOps: нет единого мнения ни о том, какие концепции охватывает DevOps, ни о том, как определяется DevOps». [5]
- ^ Эрих и др. (2017) «Мы обнаружили, что в академической литературе существует мало единого мнения о характеристиках DevOps». [5]
Ссылки [ править ]
- ^ Куртеманш, Мередит; Мелл, Эмили; Гиллс, Александр С. «Что такое DevOps? Полное руководство» . ТехТаржет . Проверено 22 января 2023 г.
- ^ Основы архитектуры программного обеспечения: инженерный подход . О'Рейли Медиа. 2020. ISBN 978-1492043454 .
- ^ Дайк, Андрей; Пеннерс, Ральф; Лихтер, Хорст (19 мая 2015 г.). «К определениям для разработки релизов и DevOps». 2015 Третий международный семинар IEEE/ACM по разработке релизов . ИИЭЭ . п. 3. дои : 10.1109/RELENG.2015.10 . ISBN 978-1-4673-7070-7 . S2CID 4659735 .
- ^ Джаббари, Рамтин; бин Али, Науман; Петерсен, Кай; Танвир, Биниш (май 2016 г.). «Что такое DevOps?: Систематическое картографическое исследование определений и практик». Материалы научного семинара 2016 года . Ассоциация вычислительной техники .
- ↑ Перейти обратно: Перейти обратно: а б Эрих, FMA; Амрит, К.; Данева, М. (июнь 2017 г.). «Качественное исследование использования DevOps на практике» (PDF) . Журнал программного обеспечения: эволюция и процесс . 29 (6): e1885. дои : 10.1002/смр.1885 . S2CID 35914007 .
- ^ Басс, Лен; Вебер, Инго; Чжу, Известняк (2015). DevOps: взгляд архитектора программного обеспечения . Аддисон-Уэсли. ISBN 978-0134049847 .
- ^ Муньос, Мирна; Негрете Родригес, Марио (апрель 2021 г.). «Руководство по внедрению или усилению подхода DevOps в организациях: практический пример».
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Чепмен, М., Гатти, Н.: Модель жизненного цикла услуги, Труды TINA '93, стр. I-205–I-215, сентябрь 1993 г.
- ^ Атласиан. «История DevOps» . Атласиан . Проверено 23 февраля 2023 г.
- ^ Мезак, Стив (25 января 2018 г.). «Истоки DevOps: что в названии?» . Devops.com . Проверено 6 мая 2019 г.
- ^ Дебуа, Патрик (9 октября 2008 г.). «Agile 2008 Торонто» . Достаточно документированной информации . Проверено 12 марта 2015 г.
- ^ Дебуа, Патрик. «Дни DevOps» . Дни DevOps . Проверено 31 марта 2011 г.
- ↑ Перейти обратно: Перейти обратно: а б Алана Браун; Николь Форсгрен; Джез Хамбл; Найджел Керстен; Джин Ким (2016). «Отчет о состоянии DevOps за 2016 год» (PDF) . Puppet Labs, DORA (DevOps Research . Проверено 24 апреля 2024 г.) .
- ^ «Марионетка — Аланна Браун» . Кукольные лаборатории . Проверено 27 апреля 2019 г.
- ^ Николь Форсгрен; Джин Ким; Найджел Керстен; Джез Хамбл (2014). «Отчет о состоянии DevOps за 2014 год» (PDF) . Puppet Labs, IT Revolution Press и ThoughtWorks . Проверено 24 апреля 2024 г.
- ^ «Отчет о состоянии DevOps за 2015 год» (PDF) . Puppet Labs, Pwc, IT Revolution Press. 2015 . Проверено 24 апреля 2024 г.
- ^ «Более гибкое тестирование» (PDF) . Октябрь 2014 года . Проверено 6 мая 2019 г.
- ^ Криспин, Лиза; Грегори, Джанет (октябрь 2014 г.). Больше гибкого тестирования . Аддисон-Уэсли. ISBN 9780133749571 . Проверено 6 мая 2019 г.
- ^ Тернер, Грэм (20 ноября 2023 г.). «Отчет: инженеры-программисты сталкиваются с негативной реакцией за сообщение о правонарушениях» . ЦИФРА . Проверено 5 января 2024 г.
- ^ Саран, Клифф. «Инженеры-программисты боятся высказываться открыто — Computer Weekly» . ComputerWeekly.com . Проверено 5 января 2024 г.
- ^ «75% инженеров-программистов столкнулись с преследованием в последний раз, когда они сообщили о правонарушении — ETHRWorldSEA» . ETHRWorld.com .
- ^ Камминс, Холли. «Холли Камминс на X» . X.com . Проверено 5 января 2024 г.
- ^ ДеБеллис, Дерек; Льюис, Аманда; Вильяльба, Даниэлла; Фарли, Дэйв. «Отчет о состоянии DevOps за 2023 год» . Исследование и оценка Google Cloud DevOps . Проверено 24 апреля 2024 г.
- ^ ДеБеллис, Дерек; Харви, Натан. «Отчет о состоянии DevOps за 2023 год: Культура – это все» . Блог Google Cloud . Проверено 24 апреля 2024 г.
- ^ Кляйн, Брэндон Торин (01 мая 2021 г.). «DevOps: краткое понимание философии и науки DevOps» . Osti.gov . дои : 10.2172/1785164 . ОСТИ 1785164 . S2CID 236606284 .
- ^ «История и эволюция DevOps | Том Джерати» . 5 июля 2020 г. Проверено 29 ноября 2020 г.
- ^ «Принципы Agile-манифеста» . www.agilemanifesto.org . Проверено 6 декабря 2020 г.
- ^ Кастелланос, Камило; Корреал, Дарио (15 сентября 2018 г.). «Выполнение архитектурных моделей для анализа больших данных». Архитектура программного обеспечения . Конспекты лекций по информатике. Том. 11048. стр. 364–371. дои : 10.1007/978-3-030-00761-4_24 . ISBN 978-3-030-00760-7 .
- ^ Скромный, Джез; Фарли, Дэвид (2011). Непрерывная доставка: надежные выпуски программного обеспечения посредством автоматизации сборки, тестирования и развертывания . Pearson Education Inc. ISBN 978-0-321-60191-9 .
- ^ Чен, Ляньпин (2015). «Непрерывная доставка: огромные преимущества, но и проблемы». Программное обеспечение IEEE . 32 (2): 50–54. дои : 10.1109/MS.2015.27 . S2CID 1241241 .
- ^ Так, Рохин; Моди, Джалак (2018). Mobile DevOps: обеспечьте непрерывную интеграцию и развертывание ваших мобильных приложений . Пакт Паблишинг. стр. 12–18. ISBN 9781788296243 .
- ^ Бейер, Бетси; Джонс, Крис; Петофф, Дженнифер; Мерфи, Найл Ричард (апрель 2016 г.). Проектирование надежности сайта . О'Рейли Медиа. ISBN 978-1-4919-2909-4 .
- ^ Анализ ДНК DevOps , Брент Аарон Рид, Вилли Шауб, 14 ноября 2018 г.
- ^ Джин Ким; Патрик Дебуа; Джон Уиллис; Джезз Хамбл (2016). Справочник DevOps: Как создать гибкость, надежность и безопасность мирового уровня в технологических организациях .
- ^ «OWASP ТОП10» . Архивировано из оригинала 8 июня 2023 года . Проверено 8 июня 2023 г.
- ^ Уилсон, Гленн (декабрь 2020 г.). «DevSecOps: Руководство для лидеров по созданию безопасного программного обеспечения с компромиссным подходом, обратной связью и постоянным улучшением» . Переосмысление прессы. ISBN 978-1781335024 .
- ^ Анализ новых технологий: DevOps — это культурный сдвиг, а не технология (отчет). Гартнер.
- ^ Лукидес, Майк (7 июня 2012 г.). «Что такое DevOps?» . О'Рейли Медиа .
- ^ «Глоссарий Gartner в области ИТ – devops» . Гартнер . Проверено 30 октября 2015 г.
- ^ Джонс, Стивен; Ноппен, Йост; Леттис, Фиона (21 июля 2016 г.). Материалы 2-го международного семинара по DevOps, ориентированному на качество — QUDOS 2016 (PDF) . стр. 7–11. дои : 10.1145/2945408.2945410 . ISBN 9781450344111 . S2CID 515140 .
- ^ Мэнди Уоллс (25 сентября 2015 г.). «Создание культуры DevOps» . О'Рейли.
- ^ Чен, Ляньпин; Али Бабар, Мухаммед (2014). «Конференция IEEE/IFIP 2014 по архитектуре программного обеспечения». 11-я рабочая конференция IEEE/IFIP по архитектуре программного обеспечения (WICSA 2014) . IEEE. стр. 195–204. дои : 10.1109/WICSA.2014.45 . ISBN 978-1-4799-3412-6 .
- ^ Теджа Ярлагадда, Рави (9 марта 2021 г.). «DevOps и его практики». ССНН 3798877 .
- ^ Морисио, Маурицио (16 апреля 2021 г.). DevOps: разработка набора инструментов в банковской сфере . Туринский политехнический университет (лауреатская диссертация) . Проверено 16 августа 2021 г.
- ^ «Что такое GitOps?» . www.redhat.com . Проверено 30 марта 2023 г.
Дальнейшее чтение [ править ]
- Дэвис, Дженнифер; Дэниелс, Рин (30 мая 2016 г.). Эффективный DevOps: создание культуры сотрудничества, взаимодействия и инструментов в большом масштабе . Севастополь, Калифорния: О'Рейли. ISBN 9781491926437 . OCLC 951434424 .
- Ким, Джин; Дебуа, Патрик; Уиллис, Джон; Скромный, Джез; Олспоу, Джон (07 октября 2015 г.). Справочник DevOps: как обеспечить гибкость, надежность и безопасность мирового уровня в технологических организациях (первое издание). Портленд, Орегон. ISBN 9781942788003 . OCLC 907166314 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка )
- Форсгрен, Николь; Скромный, Джез; Ким, Джин (27 марта 2018 г.). Accelerate: The Science of Lean Software и DevOps: создание и масштабирование высокопроизводительных технологических организаций (первое издание). ИТ Революция Пресс. ISBN 9781942788331 .