stringtranslate.com

DevOps

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 утверждает, что архитектурные модели являются первоклассными сущностями в разработке, развертывании и эксплуатации программного обеспечения.

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

Автоматизация является основным принципом для достижения успеха DevOps, а CI/CD является критически важным компонентом. [29] Кроме того, улучшение сотрудничества и коммуникации между командами и внутри них помогает сократить время выхода на рынок с меньшими рисками. [30]

Мобильные DevOps-решения

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

Проектирование надежности на объекте

В 2003 году Google разработала проектирование надежности сайта (SRE), подход к непрерывному выпуску новых функций в крупномасштабных системах высокой доступности, сохраняя при этом высокое качество пользовательского опыта. [32] Хотя SRE предшествовало развитию DevOps, их обычно рассматривают как связанные друг с другом. Некоторые из первоначальных авторов дисциплины рассматривают SRE как реализацию DevOps. [33]

Производственная система Toyota, бережливое мышление, кайдзен

Система производства Toyota, также известная под аббревиатурой TPS, вдохновила на бережливое мышление с его фокусом на непрерывном совершенствовании , кайдзен , потоке и малых партиях. Принцип шнура андон для создания быстрой обратной связи, роя и решения проблем исходит из TPS. [34] [35]

DevSecOps, сдвиг безопасности влево

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 Рави Теджа Ярлагадда, «Благодаря DevOps предполагается, что все функции могут выполняться, контролироваться и управляться в центральном месте с помощью простого кода». [44]

Автоматизация с контролем версий

Многие организации используют контроль версий для поддержки технологий автоматизации DevOps, таких как виртуальные машины , контейнеризация (или виртуализация на уровне ОС ) и CI/CD . В статье «DevOps: разработка цепочки инструментов в банковской сфере» отмечается, что при работе групп разработчиков над одним и тем же проектом «всем разработчикам необходимо вносить изменения в одну и ту же кодовую базу, а иногда даже редактировать одни и те же файлы. Для эффективной работы должна быть система, которая помогает инженерам избегать конфликтов и сохранять историю кодовой базы» [45], в качестве примеров приводятся система контроля версий Git и платформа GitHub .

GitOps

GitOps произошел от DevOps. Конкретное состояние конфигурации развертывания — это управление версиями . Поскольку самым популярным управлением версиями является Git , подход GitOps был назван в честь Git . Изменениями в конфигурации можно управлять с помощью методов обзора кода и откатывать с помощью управления версиями. По сути, все изменения в коде отслеживаются, добавляются в закладки, и внесение любых обновлений в историю может быть упрощено. Как поясняет Red Hat , «видимость изменений означает возможность быстро отслеживать и воспроизводить проблемы, что повышает общую безопасность». [46]

Смотрите также

Примечания

  1. ^ Дайк и др. (2015) «Насколько нам известно, не существует единого определения терминов «инжиниринг релиза» и DevOps. В результате многие люди используют свои собственные определения или полагаются на чужие, что приводит к путанице в отношении этих терминов». [3]
  2. ^ Джаббари и др. (2016) «Результаты этого исследования показали необходимость определения, поскольку отдельные исследования не дают последовательного определения DevOps». [4]
  3. ^ Эрих и др. (2017) «Мы заметили, что в изучении DevOps есть различные пробелы: нет единого мнения о том, какие концепции охватывает DevOps и как определяется DevOps». [5]
  4. ^ Эрих и др. (2017) «Мы обнаружили, что в академической литературе нет единого мнения относительно характеристик DevOps». [5]

Ссылки

  1. ^ Куртеманш, Мередит; Мелл, Эмили; Джиллс, Александр С. «Что такое DevOps? Полное руководство». TechTarget . Получено 22.01.2023 .
  2. ^ Основы архитектуры программного обеспечения: инженерный подход . O'Reilly Media. 2020. ISBN 978-1492043454.
  3. ^ Дайк, Андрей; Пеннерс, Ральф; Лихтер, Хорст (2015-05-19). "К определениям для релиз-инжиниринга и DevOps". 2015 IEEE/ACM 3-й международный семинар по релиз-инжинирингу . IEEE . стр. 3. doi :10.1109/RELENG.2015.10. ISBN 978-1-4673-7070-7. S2CID  4659735.
  4. ^ Джаббари, Рамтин; бин Али, Науман ; Петерсен, Кай; Танвир, Биниш (май 2016 г.). «Что такое DevOps?: Систематическое картографическое исследование определений и практик». Труды научного семинара 2016 г. Ассоциация вычислительной техники .
  5. ^ ab Erich, FMA; Amrit, C.; Daneva, M. (июнь 2017 г.). "Качественное исследование использования DevOps на практике" (PDF) . Journal of Software: Evolution and Process . 29 (6): e1885. doi :10.1002/smr.1885. S2CID  35914007.
  6. ^ Басс, Лен; Вебер, Инго; Чжу, Лиминг (2015). DevOps: точка зрения архитектора программного обеспечения . Addison-Wesley. ISBN 978-0134049847.
  7. ^ Муньос, Мирна; Негрете Родригес, Марио (апрель 2021 г.). «Руководство по внедрению или усилению подхода DevOps в организациях: пример из практики». {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  8. ^ Чепмен, М., Гатти, Н.: Модель жизненного цикла услуги, Труды TINA '93, стр. I-205–I-215, сентябрь 1993 г.
  9. ^ Atlassian. "История DevOps". Atlassian . Получено 23.02.2023 .
  10. ^ Мезак, Стив (25 января 2018 г.). «Истоки DevOps: что в названии?». devops.com . Получено 6 мая 2019 г. .
  11. ^ Дебуа, Патрик (9 октября 2008 г.). «Agile 2008 Toronto». Just Enough Documented Information . Получено 12 марта 2015 г.
  12. ^ Дебуа, Патрик. "DevOps Days". DevOps Days . Получено 31 марта 2011 г.
  13. ^ ab Алана Браун; Николь Форсгрен; Джез Хамбл; Найджел Керстен; Джин Ким (2016). "Отчет о состоянии DevOps за 2016 год" (PDF) . Puppet Labs, DORA (Исследование DevOps . Получено 24.04.2024 .
  14. ^ "Puppet - Alanna Brown". Puppet Labs . Получено 27.04.2019 .
  15. ^ Николь Форсгрен; Джин Ким; Найджел Керстен; Джез Хамбл (2014). «Отчет о состоянии DevOps за 2014 год» (PDF) . Puppet Labs, IT Revolution Press и ThoughtWorks . Получено 24 апреля 2024 г.
  16. ^ "Отчет о состоянии DevOps за 2015 год" (PDF) . Puppet Labs, Pwc, IT Revolution Press. 2015. Получено 24.04.2024 .
  17. ^ "More Agile Testing" (PDF) . Октябрь 2014 г. Получено 06.05.2019 .
  18. ^ Криспин, Лиза; Грегори, Джанет (октябрь 2014 г.). Еще больше Agile Testing. Addison-Wesley. ISBN 9780133749571. Получено 2019-05-06 .
  19. ^ Тернер, Грэм (20 ноября 2023 г.). «Отчет: Инженеры-программисты столкнулись с негативной реакцией за сообщение о правонарушении». DIGIT . Получено 5 января 2024 г.
  20. ^ Саран, Клифф. «Инженеры-программисты беспокоятся о том, чтобы высказываться — Computer Weekly». ComputerWeekly.com . Получено 5 января 2024 г.
  21. ^ "75% инженеров-программистов столкнулись с ответными мерами в последний раз, когда они сообщили о правонарушении - ETHRWorldSEA". ETHRWorld.com .
  22. ^ Камминс, Холли. "Холли Камминс о X". X.com . Получено 5 января 2024 г.
  23. ^ ДеБеллис, Дерек; Льюис, Аманда; Виллальба, Даниэлла; Фарли, Дэйв. «Отчет о состоянии DevOps за 2023 год». Исследование и оценка Google Cloud DevOps . Получено 24 апреля 2024 г.
  24. ^ ДеБеллис, Дерек; Харви, Натан. «Отчет о состоянии DevOps за 2023 год: Культура — это все». Блог Google Cloud . Получено 24.04.2024 .
  25. ^ Кляйн, Брэндон Торин (01.05.2021). «DevOps: краткое понимание философии и науки DevOps». Osti.gov . doi : 10.2172/1785164. OSTI  1785164. S2CID  236606284.
  26. ^ "История и эволюция DevOps | Том Джерати". 5 июля 2020 г. Получено 29 ноября 2020 г.
  27. ^ «Принципы, лежащие в основе Agile Manifesto». agilemanifesto.org . Получено 2020-12-06 .
  28. ^ Кастелланос, Камило; Корреаль, Дарио (15 сентября 2018 г.). «Выполнение архитектурных моделей для аналитики больших данных». Архитектура программного обеспечения . Конспект лекций по информатике. Том 11048. С. 364–371. doi :10.1007/978-3-030-00761-4_24. ISBN 978-3-030-00760-7.
  29. ^ Хамбл, Джез; Фарли, Дэвид (2011). Непрерывная поставка: надежные выпуски программного обеспечения посредством автоматизации сборки, тестирования и развертывания . Pearson Education Inc. ISBN 978-0-321-60191-9.
  30. ^ Чэнь, Ляньпин (2015). «Непрерывная поставка: огромные преимущества, но и проблемы тоже». IEEE Software . 32 (2): 50–54. doi :10.1109/MS.2015.27. S2CID  1241241.
  31. ^ Tak, Rohin; Modi, Jhalak (2018). Mobile DevOps: Обеспечьте непрерывную интеграцию и развертывание в ваших мобильных приложениях . Packt Publishing. С. 12–18. ISBN 9781788296243.
  32. ^ Бейер, Бетси; Джонс, Крис; Петофф, Дженнифер; Мерфи, Ниалл Ричард (апрель 2016 г.). Инженерное обеспечение надежности объектов . O'Reilly Media. ISBN 978-1-4919-2909-4.
  33. Дэйв Харрисон (9 октября 2018 г.). «Интервью с Бетси Бейер, Стивеном Торном из Google» . Получено 24 июля 2024 г. .
  34. ^ Анализ ДНК DevOps, Брент Аарон Рид, Вилли Шауб, 14 ноября 2018 г.
  35. ^ Джин Ким; Патрик Дебуа; Джон Уиллис; Джезз Хамбл (2016). Справочник DevOps: как создать гибкость, надежность и безопасность мирового класса в технологических организациях .
  36. ^ "OWASP TOP10". Архивировано из оригинала 8 июня 2023 г. Получено 8 июня 2023 г.
  37. Уилсон, Гленн (декабрь 2020 г.).«DevSecOps: руководство для лидеров по производству безопасного программного обеспечения с компромиссным потоком, обратной связью и постоянным совершенствованием». Переосмыслить прессу. ISBN 978-1781335024.
  38. ^ Анализ новых технологий: DevOps — это сдвиг культуры, а не технология (отчет). Gartner.
  39. ^ Лукидес, Майк (7 июня 2012 г.). «Что такое DevOps?». O'Reilly Media .
  40. ^ "Gartner IT Glossary – devops". Gartner . Получено 30 октября 2015 г.
  41. ^ Джонс, Стивен; Ноппен, Йост; Леттис, Фиона (21 июля 2016 г.). Труды 2-го международного семинара по DevOps с учетом качества - QUDOS 2016 (PDF) . стр. 7–11. doi :10.1145/2945408.2945410. ISBN 9781450344111. S2CID  515140.
  42. Мэнди Уоллс (25 сентября 2015 г.). «Создание культуры DevOps». O'Reilly.
  43. ^ Чен, Ляньпин; Али Бабар, Мухаммад (2014). "Конференция IEEE/IFIP по архитектуре программного обеспечения 2014 года". 11-я рабочая конференция IEEE/IFIP по архитектуре программного обеспечения (WICSA 2014) . IEEE. стр. 195–204. doi :10.1109/WICSA.2014.45. ISBN 978-1-4799-3412-6.
  44. ^ Теджа Ярлагадда, Рави (9 марта 2021 г.). «DevOps и его практики». SSRN  3798877.
  45. Морисио, Маурицио (16 апреля 2021 г.). DevOps: разработка набора инструментов в банковской сфере. Туринский политехнический университет (лауреатская диссертация) . Проверено 16 августа 2021 г.
  46. ^ «Что такое GitOps?». www.redhat.com . Получено 2023-03-30 .

Дальнейшее чтение